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
This commit is contained in:
Ivan Frade 2023-09-08 08:25:06 -07:00
parent e0bd4882fb
commit f1a9d92a30
1 changed files with 17 additions and 5 deletions

View File

@ -40,6 +40,7 @@
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 Stats write(@NonNull ProgressMonitor monitor,
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 Stats write(@NonNull ProgressMonitor monitor,
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 @@ private List<ChunkHeader> createChunks(Stats stats)
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,