Skip to content

Commit

Permalink
apply suggestions
Browse files Browse the repository at this point in the history
  • Loading branch information
tbenr committed Dec 13, 2022
1 parent 6af5124 commit e1f7621
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ public void verifyBlobsLifecycle(final DatabaseContext context) throws IOExcepti
assertBlobsStream(blobsSidecar1, blobsSidecar2, blobsSidecar2bis, blobsSidecar3, blobsSidecar4);

// let's prune unconfirmed with limit to 1
database.pruneOldestUnconfirmedBlobsSidecar(UInt64.MAX_VALUE, 1);
assertThat(database.pruneOldestUnconfirmedBlobsSidecar(UInt64.MAX_VALUE, 1)).isTrue();
assertUnconfirmedBlobsStream(
blobsSidecarToSlotAndBlockRoot(blobsSidecar2),
blobsSidecarToSlotAndBlockRoot(blobsSidecar2bis),
Expand All @@ -258,7 +258,7 @@ public void verifyBlobsLifecycle(final DatabaseContext context) throws IOExcepti
assertBlobsStream(blobsSidecar2, blobsSidecar2bis, blobsSidecar3, blobsSidecar4);

// let's prune unconfirmed up to slot 1 (nothing will be pruned)
database.pruneOldestUnconfirmedBlobsSidecar(ONE, 10);
assertThat(database.pruneOldestUnconfirmedBlobsSidecar(ONE, 10)).isFalse();
assertUnconfirmedBlobsStream(
blobsSidecarToSlotAndBlockRoot(blobsSidecar2),
blobsSidecarToSlotAndBlockRoot(blobsSidecar2bis),
Expand All @@ -267,17 +267,17 @@ public void verifyBlobsLifecycle(final DatabaseContext context) throws IOExcepti
assertBlobsStream(blobsSidecar2, blobsSidecar2bis, blobsSidecar3, blobsSidecar4);

// let's prune all unconfirmed
database.pruneOldestUnconfirmedBlobsSidecar(UInt64.valueOf(3), 10);
assertThat(database.pruneOldestUnconfirmedBlobsSidecar(UInt64.valueOf(3), 10)).isFalse();
assertUnconfirmedBlobsStream();
// we have blobsSidecar4
assertBlobsStream(blobsSidecar4);

// let's prune all up to a too old slot (nothing will be pruned)
database.pruneOldestBlobsSidecar(UInt64.valueOf(3), 10);
assertThat(database.pruneOldestBlobsSidecar(UInt64.valueOf(3), 10)).isFalse();
assertBlobsStream(blobsSidecar4);

// let's prune all up slot 4
database.pruneOldestBlobsSidecar(UInt64.valueOf(4), 1);
assertThat(database.pruneOldestBlobsSidecar(UInt64.valueOf(4), 1)).isTrue();
// all empty now
assertUnconfirmedBlobsStream();
assertBlobsStream();
Expand Down Expand Up @@ -306,13 +306,13 @@ void pruneOldestBlobsSidecar_shouldPruneUnconfirmedBlobsToo(final DatabaseContex
database.storeUnconfirmedBlobsSidecar(blobsSidecar4);
database.storeUnconfirmedBlobsSidecar(blobsSidecar3);

database.pruneOldestBlobsSidecar(UInt64.MAX_VALUE, 2);
assertThat(database.pruneOldestBlobsSidecar(UInt64.MAX_VALUE, 2)).isTrue();
assertUnconfirmedBlobsStream(
blobsSidecarToSlotAndBlockRoot(blobsSidecar3),
blobsSidecarToSlotAndBlockRoot(blobsSidecar4));
assertBlobsStream(blobsSidecar3, blobsSidecar4);

database.pruneOldestBlobsSidecar(UInt64.MAX_VALUE, 100);
assertThat(database.pruneOldestBlobsSidecar(UInt64.MAX_VALUE, 100)).isFalse();
assertUnconfirmedBlobsStream();
assertBlobsStream();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,27 @@ public interface Database extends AutoCloseable {

void removeBlobsSidecar(SlotAndBlockRoot slotAndBlockRoot);

void pruneOldestBlobsSidecar(UInt64 endSlot, int pruneLimit);
/**
* this prune method will delete BlobsSidecars (including the unconfirmed ones) starting from the
* oldest BlobsSidecars (by slot) up to BlobsSidecars at {@code endSlot} (inclusive). The pruning
* process will be limited to maximum {@code pruneLimit} BlobsSidecars
*
* @param endSlot
* @param pruneLimit
* @return true if number of pruned blobs reached the pruneLimit, false otherwise
*/
boolean pruneOldestBlobsSidecar(UInt64 endSlot, int pruneLimit);

void pruneOldestUnconfirmedBlobsSidecar(UInt64 endSlot, int pruneLimit);
/**
* this prune method will delete unconfirmed BlobsSidecars starting from the oldest BlobsSidecars
* (by slot) up to BlobsSidecars at {@code endSlot} (inclusive). The pruning process will be
* limited to maximum {@code pruneLimit} BlobsSidecars
*
* @param endSlot
* @param pruneLimit
* @return true if number of pruned blobs reached the pruneLimit, false otherwise
*/
boolean pruneOldestUnconfirmedBlobsSidecar(UInt64 endSlot, int pruneLimit);

@MustBeClosed
Stream<BlobsSidecar> streamBlobsSidecar(UInt64 startSlot, UInt64 endSlot);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -571,9 +571,10 @@ public void removeBlobsSidecar(final SlotAndBlockRoot slotAndBlockRoot) {
}

@Override
public void pruneOldestBlobsSidecar(final UInt64 endSlot, final int pruneLimit) {
public boolean pruneOldestBlobsSidecar(final UInt64 endSlot, final int pruneLimit) {
try (final Stream<BlobsSidecar> prunableBlobs = streamBlobsSidecar(UInt64.ZERO, endSlot);
final FinalizedUpdaterT updater = finalizedUpdater()) {
final int[] counter = {0};
prunableBlobs
.limit(pruneLimit)
.forEach(
Expand All @@ -583,24 +584,33 @@ public void pruneOldestBlobsSidecar(final UInt64 endSlot, final int pruneLimit)
blobsSidecar.getBeaconBlockSlot(), blobsSidecar.getBeaconBlockRoot());
updater.removeBlobsSidecar(slotAndBlockRoot);
updater.removeUnconfirmedBlobsSidecar(slotAndBlockRoot);

counter[0]++;
});
updater.commit();

return counter[0] == pruneLimit;
}
}

@Override
public void pruneOldestUnconfirmedBlobsSidecar(final UInt64 endSlot, final int pruneLimit) {
public boolean pruneOldestUnconfirmedBlobsSidecar(final UInt64 endSlot, final int pruneLimit) {
try (final Stream<SlotAndBlockRoot> prunableUnconfirmed =
streamUnconfirmedBlobsSidecar(UInt64.ZERO, endSlot);
final FinalizedUpdaterT updater = finalizedUpdater()) {
final int[] counter = {0};
prunableUnconfirmed
.limit(pruneLimit)
.forEach(
slotAndBlockRoot -> {
updater.removeBlobsSidecar(slotAndBlockRoot);
updater.removeUnconfirmedBlobsSidecar(slotAndBlockRoot);

counter[0]++;
});
updater.commit();

return counter[0] == pruneLimit;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,9 @@ public Optional<UInt64> getEarliestBlobsSidecarSlot() {
}

@Override
public void pruneOldestBlobsSidecar(final UInt64 endSlot, final int pruneLimit) {}
public boolean pruneOldestBlobsSidecar(final UInt64 endSlot, final int pruneLimit) {
return false;
}

@Override
public Stream<SlotAndBlockRoot> streamUnconfirmedBlobsSidecar(
Expand All @@ -301,7 +303,9 @@ public Stream<SlotAndBlockRoot> streamUnconfirmedBlobsSidecar(
}

@Override
public void pruneOldestUnconfirmedBlobsSidecar(final UInt64 endSlot, final int pruneLimit) {}
public boolean pruneOldestUnconfirmedBlobsSidecar(final UInt64 endSlot, final int pruneLimit) {
return false;
}

@Override
public void close() {}
Expand Down

0 comments on commit e1f7621

Please sign in to comment.