aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Frade <ifrade@google.com>2023-09-08 08:25:06 -0700
committerIvan Frade <ifrade@google.com>2023-09-20 13:55:11 -0700
commitf1a9d92a30abaf8c3d8cfc8030f864d4c642bf1e (patch)
treeecf5ea87407804dd8eb17e3bd86b1d54d39d39b4
parente0bd4882fb609be998d5d7b6b95e50869cf01e92 (diff)
downloadjgit-f1a9d92a30abaf8c3d8cfc8030f864d4c642bf1e.tar.gz
jgit-f1a9d92a30abaf8c3d8cfc8030f864d4c642bf1e.zip
CommitGraphWriter: Move bloom filter calculation out of createChunks
It looks confusing that the createChunks method calculates bloom filters. Make the calculations before and pass the result to the method. Change-Id: If6e3c0e644f7f940f268ca7266f577f012278ff3
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java22
1 files changed, 17 insertions, 5 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java
index aef01fbb3c..85f726a55b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/commitgraph/CommitGraphWriter.java
@@ -40,6 +40,7 @@ import java.util.Optional;
import java.util.Stack;
import org.eclipse.jgit.annotations.NonNull;
+import org.eclipse.jgit.annotations.Nullable;
import org.eclipse.jgit.errors.CorruptObjectException;
import org.eclipse.jgit.errors.IncorrectObjectTypeException;
import org.eclipse.jgit.errors.MissingObjectException;
@@ -122,7 +123,14 @@ public class CommitGraphWriter {
return stats;
}
- List<ChunkHeader> chunks = createChunks(stats);
+ BloomFilterChunks bloomFilterChunks = generateChangedPathFilters
+ ? computeBloomFilterChunks(stats)
+ : null;
+ List<ChunkHeader> chunks = new ArrayList<>();
+ chunks.addAll(createCoreChunks(hashsz, graphCommits));
+ chunks.addAll(createBloomFilterChunkHeaders(bloomFilterChunks));
+ chunks = Collections.unmodifiableList(chunks);
+
long expectedSize = calculateExpectedSize(chunks);
long writeCount = 256 + 2 * graphCommits.size()
+ graphCommits.getExtraEdgeCnt();
@@ -151,7 +159,7 @@ public class CommitGraphWriter {
return stats;
}
- private List<ChunkHeader> createChunks(Stats stats)
+ private static List<ChunkHeader> createCoreChunks(int hashsz, GraphCommits graphCommits)
throws MissingObjectException,
IncorrectObjectTypeException, CorruptObjectException, IOException {
List<ChunkHeader> chunks = new ArrayList<>();
@@ -164,9 +172,13 @@ public class CommitGraphWriter {
chunks.add(new ChunkHeader(CHUNK_ID_EXTRA_EDGE_LIST,
graphCommits.getExtraEdgeCnt() * 4));
}
- if (generateChangedPathFilters) {
- BloomFilterChunks bloomFilterChunks = computeBloomFilterChunks(
- stats);
+ return Collections.unmodifiableList(chunks);
+ }
+
+ private static List<ChunkHeader> createBloomFilterChunkHeaders(
+ @Nullable BloomFilterChunks bloomFilterChunks) {
+ List<ChunkHeader> chunks = new ArrayList<>();
+ if (bloomFilterChunks != null) {
chunks.add(new ChunkHeader(CHUNK_ID_BLOOM_FILTER_INDEX,
bloomFilterChunks.index));
chunks.add(new ChunkHeader(CHUNK_ID_BLOOM_FILTER_DATA,