Skip to content

Commit

Permalink
Change debug-tools command to get-column-counts (Consensys#5960)
Browse files Browse the repository at this point in the history
The debug-tool has been updated to output the counts of all columns, along with the actual column name, and no longer filters 0's from output.

Also cleaned up some of the functions that were used in the debug-tool.

Signed-off-by: Paul Harris <paul.harris@consensys.net>
  • Loading branch information
rolfyone committed Jul 21, 2022
1 parent 3d4bdbb commit a03d77d
Show file tree
Hide file tree
Showing 13 changed files with 47 additions and 163 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,6 @@ public interface Database extends AutoCloseable {
@MustBeClosed
Stream<SignedBeaconBlock> streamFinalizedBlocks(UInt64 startSlot, UInt64 endSlot);

@MustBeClosed
Stream<SignedBeaconBlock> streamHotBlocks();

long countUnblindedFinalizedBlocks();

@MustBeClosed
Stream<Map.Entry<Bytes32, BlockCheckpoints>> streamBlockCheckpoints();

Expand All @@ -133,11 +128,7 @@ public interface Database extends AutoCloseable {

void storeVotes(Map<UInt64, VoteTracker> votes);

long countBlindedBlocks();

long countExecutionPayloads();

long countNonCanonicalSlots();
Map<String, Long> getColumnCounts();

void migrate();
}
Original file line number Diff line number Diff line change
Expand Up @@ -123,17 +123,6 @@ public Optional<SignedBeaconBlock> getHotBlock(final Bytes32 blockRoot) {
return getUnblindedBlock(dao.getBlindedBlock(blockRoot));
}

@Override
@MustBeClosed
public Stream<SignedBeaconBlock> streamHotBlocks() {
return dao.streamBlindedHotBlocks().map(this::getUnblindedBlock);
}

@Override
public long countUnblindedFinalizedBlocks() {
return 0;
}

@Override
@MustBeClosed
public Stream<SignedBeaconBlock> streamFinalizedBlocks(
Expand Down Expand Up @@ -241,8 +230,8 @@ public Optional<SignedBeaconBlock> getEarliestAvailableBlock() {
}

@Override
public long countBlindedBlocks() {
return dao.countBlindedBlocks();
public Map<String, Long> getColumnCounts() {
return dao.getColumnCounts();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -462,18 +462,6 @@ public void storeVotes(final Map<UInt64, VoteTracker> votes) {
}
}

@Override
public long countExecutionPayloads() {
try (final Stream<?> stream = dao.streamExecutionPayloads()) {
return stream.count();
}
}

@Override
public long countNonCanonicalSlots() {
return dao.countNonCanonicalSlots();
}

@Override
public void close() throws Exception {
dao.close();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,17 +124,6 @@ public Optional<SignedBeaconBlock> getHotBlock(final Bytes32 blockRoot) {
return dao.getHotBlock(blockRoot);
}

@Override
@MustBeClosed
public Stream<SignedBeaconBlock> streamHotBlocks() {
return dao.streamHotBlocks();
}

@Override
public long countUnblindedFinalizedBlocks() {
return dao.countUnblindedFinalizedBlocks();
}

@Override
@MustBeClosed
public Stream<SignedBeaconBlock> streamFinalizedBlocks(
Expand Down Expand Up @@ -203,8 +192,8 @@ protected Optional<SignedBeaconBlock> getFinalizedBlock(final Bytes32 root) {
}

@Override
public long countBlindedBlocks() {
return 0;
public Map<String, Long> getColumnCounts() {
return dao.getColumnCounts();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import com.google.errorprone.annotations.MustBeClosed;
import java.util.Collection;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
Expand Down Expand Up @@ -330,11 +331,6 @@ public long countNonCanonicalSlots() {
return db.size(schema.getColumnNonCanonicalRootsBySlot());
}

@Override
public long countBlindedBlocks() {
return db.size(schema.getColumnBlindedBlocksByRoot());
}

@Override
@MustBeClosed
public Stream<SignedBeaconBlock> streamFinalizedBlocks(
Expand All @@ -343,14 +339,6 @@ public Stream<SignedBeaconBlock> streamFinalizedBlocks(
.map(ColumnEntry::getValue);
}

@Override
public long countUnblindedFinalizedBlocks() {
try (Stream<ColumnEntry<Bytes, Bytes>> entries =
db.streamRaw(schema.getColumnSlotsByFinalizedRoot())) {
return entries.count();
}
}

@Override
public Optional<UInt64> getEarliestBlindedBlockSlot() {
return db.getFirstEntry(schema.getColumnFinalizedBlockRootBySlot()).map(ColumnEntry::getKey);
Expand All @@ -376,25 +364,11 @@ public Optional<Bytes32> getFinalizedBlockRootAtSlot(final UInt64 slot) {
return db.get(schema.getColumnFinalizedBlockRootBySlot(), slot);
}

@Override
@MustBeClosed
public Stream<Bytes> streamExecutionPayloads() {
return db.stream(schema.getColumnExecutionPayloadByPayloadHash()).map(ColumnEntry::getValue);
}

@Override
public Optional<SignedBeaconBlock> getBlindedBlock(final Bytes32 root) {
return db.get(schema.getColumnBlindedBlocksByRoot(), root);
}

@Override
@MustBeClosed
public Stream<SignedBeaconBlock> streamBlindedHotBlocks() {
return db.stream(schema.getColumnHotBlockCheckpointEpochsByRoot())
.map(ColumnEntry::getKey)
.flatMap(root -> getBlindedBlock(root).stream());
}

@Override
public Optional<Bytes> getExecutionPayload(final Bytes32 root) {
return db.get(schema.getColumnExecutionPayloadByPayloadHash(), root);
Expand Down Expand Up @@ -425,6 +399,13 @@ public Optional<UInt64> getOptimisticTransitionBlockSlot() {
return db.get(schema.getOptimisticTransitionBlockSlot());
}

@Override
public Map<String, Long> getColumnCounts() {
final Map<String, Long> columnCounts = new LinkedHashMap<>();
schema.getColumnMap().forEach((k, v) -> columnCounts.put(k, db.size(v)));
return columnCounts;
}

@Override
public Optional<? extends SignedBeaconBlock> getNonCanonicalBlock(final Bytes32 root) {
return db.get(schema.getColumnNonCanonicalBlocksByRoot(), root);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

import com.google.errorprone.annotations.MustBeClosed;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
Expand Down Expand Up @@ -202,43 +203,18 @@ public long countNonCanonicalSlots() {
return finalizedDao.countNonCanonicalSlots();
}

@Override
public long countBlindedBlocks() {
return finalizedDao.countBlindedBlocks();
}

@Override
@MustBeClosed
public Stream<SignedBeaconBlock> streamFinalizedBlocks(
final UInt64 startSlot, final UInt64 endSlot) {
return finalizedDao.streamFinalizedBlocks(startSlot, endSlot);
}

@Override
public long countUnblindedFinalizedBlocks() {
return finalizedDao.countUnblindedFinalizedBlocks();
}

@Override
@MustBeClosed
public Stream<Bytes> streamExecutionPayloads() {
return finalizedDao.streamExecutionPayloads();
}

@Override
public Optional<SignedBeaconBlock> getBlindedBlock(final Bytes32 root) {
return finalizedDao.getBlindedBlock(root);
}

@Override
@MustBeClosed
public Stream<SignedBeaconBlock> streamBlindedHotBlocks() {
return hotDao
.streamBlockCheckpoints()
.map(Map.Entry::getKey)
.flatMap(blockRoot -> getBlindedBlock(blockRoot).stream());
}

@Override
public Optional<Bytes> getExecutionPayload(final Bytes32 root) {
return finalizedDao.getExecutionPayload(root);
Expand Down Expand Up @@ -285,6 +261,13 @@ public Optional<UInt64> getOptimisticTransitionBlockSlot() {
return finalizedDao.getOptimisticTransitionBlockSlot();
}

@Override
public Map<String, Long> getColumnCounts() {
final HashMap<String, Long> result = new LinkedHashMap<>(hotDao.getColumnCounts());
result.putAll(finalizedDao.getColumnCounts());
return result;
}

@Override
public Optional<? extends SignedBeaconBlock> getNonCanonicalBlock(final Bytes32 root) {
return finalizedDao.getNonCanonicalBlock(root);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,8 @@ public interface KvStoreCombinedDaoBlinded extends KvStoreCombinedDaoCommon {

List<SignedBeaconBlock> getBlindedNonCanonicalBlocksAtSlot(UInt64 slot);

long countBlindedBlocks();

Optional<SignedBeaconBlock> getBlindedBlock(Bytes32 root);

@MustBeClosed
Stream<SignedBeaconBlock> streamBlindedHotBlocks();

Optional<Bytes> getExecutionPayload(Bytes32 root);

Optional<UInt64> getEarliestBlindedBlockSlot();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import java.util.Set;
import java.util.function.Consumer;
import java.util.stream.Stream;
import org.apache.tuweni.bytes.Bytes;
import org.apache.tuweni.bytes.Bytes32;
import tech.pegasys.teku.ethereum.pow.api.DepositsFromBlockEvent;
import tech.pegasys.teku.ethereum.pow.api.MinGenesisTimeBlockEvent;
Expand Down Expand Up @@ -76,11 +75,10 @@ public interface KvStoreCombinedDaoCommon extends AutoCloseable {

long countNonCanonicalSlots();

@MustBeClosed
Stream<Bytes> streamExecutionPayloads();

Optional<UInt64> getOptimisticTransitionBlockSlot();

Map<String, Long> getColumnCounts();

interface CombinedUpdaterCommon extends HotUpdaterCommon, FinalizedUpdaterCommon {}

interface HotUpdaterCommon extends AutoCloseable {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,6 @@ public interface KvStoreCombinedDaoUnblinded extends KvStoreCombinedDaoCommon {
@MustBeClosed
Stream<SignedBeaconBlock> streamFinalizedBlocks(UInt64 startSlot, UInt64 endSlot);

long countUnblindedFinalizedBlocks();

Optional<UInt64> getSlotForFinalizedBlockRoot(Bytes32 blockRoot);

Optional<UInt64> getSlotForFinalizedStateRoot(Bytes32 stateRoot);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

import com.google.errorprone.annotations.MustBeClosed;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -118,11 +119,6 @@ public long countUnblindedFinalizedBlocks() {
}
}

@MustBeClosed
public Stream<Bytes> streamExecutionPayloads() {
return db.stream(schema.getColumnExecutionPayloadByPayloadHash()).map(ColumnEntry::getValue);
}

public Optional<SignedBeaconBlock> getBlindedBlock(final Bytes32 root) {
return db.get(schema.getColumnBlindedBlocksByRoot(), root);
}
Expand Down Expand Up @@ -215,6 +211,12 @@ public Set<Bytes32> getNonCanonicalBlockRootsAtSlot(final UInt64 slot) {
return db.get(schema.getColumnNonCanonicalRootsBySlot(), slot).orElseGet(HashSet::new);
}

public Map<String, Long> getColumnCounts() {
final Map<String, Long> columnCounts = new HashMap<>();
schema.getColumnMap().forEach((k, v) -> columnCounts.put(k, db.size(v)));
return columnCounts;
}

static class V4FinalizedUpdater implements FinalizedUpdaterBlinded, FinalizedUpdaterUnblinded {
private final KvStoreTransaction transaction;
private final KvStoreAccessor db;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
package tech.pegasys.teku.storage.server.kvstore.dataaccess;

import com.google.errorprone.annotations.MustBeClosed;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
Expand Down Expand Up @@ -171,6 +172,12 @@ public Map<String, KvStoreVariable<?>> getVariableMap() {
return schema.getVariableMap();
}

public Map<String, Long> getColumnCounts() {
final Map<String, Long> columnCounts = new LinkedHashMap<>();
schema.getColumnMap().forEach((k, v) -> columnCounts.put(k, db.size(v)));
return columnCounts;
}

static class V4HotUpdater implements HotUpdaterBlinded, HotUpdaterUnblinded {

private final KvStoreTransaction transaction;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
Expand Down Expand Up @@ -125,16 +126,6 @@ public Stream<SignedBeaconBlock> streamFinalizedBlocks(
return Stream.empty();
}

@Override
public Stream<SignedBeaconBlock> streamHotBlocks() {
return Stream.empty();
}

@Override
public long countUnblindedFinalizedBlocks() {
return 0;
}

@Override
public Stream<Map.Entry<Bytes32, BlockCheckpoints>> streamBlockCheckpoints() {
return Stream.empty();
Expand Down Expand Up @@ -187,18 +178,8 @@ public void addDepositsFromBlockEvent(final DepositsFromBlockEvent event) {}
public void storeVotes(final Map<UInt64, VoteTracker> votes) {}

@Override
public long countBlindedBlocks() {
return 0;
}

@Override
public long countExecutionPayloads() {
return 0;
}

@Override
public long countNonCanonicalSlots() {
return 0;
public Map<String, Long> getColumnCounts() {
return new HashMap<>();
}

@Override
Expand Down
Loading

0 comments on commit a03d77d

Please sign in to comment.