Skip to content

Commit

Permalink
Disable RocksDB checksum verification on reads (hyperledger#5042)
Browse files Browse the repository at this point in the history
* Add RocksDB readOptions with checksum verification set to false for RocksDB get methods
* Spotless + apply disabling checksum verification for unsegmented RocksDB reads

Signed-off-by: Ameziane H <ameziane.hamlat@consensys.net>
  • Loading branch information
ahamlat authored and ensi321 committed Feb 19, 2023
1 parent 52dbe13 commit 102630a
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
import org.rocksdb.LRUCache;
import org.rocksdb.OptimisticTransactionDB;
import org.rocksdb.Options;
import org.rocksdb.ReadOptions;
import org.rocksdb.RocksDB;
import org.rocksdb.RocksDBException;
import org.rocksdb.RocksIterator;
Expand Down Expand Up @@ -90,6 +91,7 @@ public class RocksDBColumnarKeyValueStorage
private final RocksDBMetrics metrics;
private final WriteOptions tryDeleteOptions =
new WriteOptions().setNoSlowdown(true).setIgnoreMissingColumnFamilies(true);
private final ReadOptions readOptions = new ReadOptions().setVerifyChecksums(false);

/**
* Instantiates a new RocksDb columnar key value storage.
Expand Down Expand Up @@ -249,7 +251,7 @@ public Optional<byte[]> get(final RocksDbSegmentIdentifier segment, final byte[]
throwIfClosed();

try (final OperationTimer.TimingContext ignored = metrics.getReadLatency().startTimer()) {
return Optional.ofNullable(db.get(segment.get(), key));
return Optional.ofNullable(db.get(segment.get(), readOptions, key));
} catch (final RocksDBException e) {
throw new StorageException(e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ public class RocksDBSnapshotTransaction implements KeyValueStorageTransaction, A
this.snapshot = new RocksDBSnapshot(db);
this.writeOptions = new WriteOptions();
this.snapTx = db.beginTransaction(writeOptions);
this.readOptions = new ReadOptions().setSnapshot(snapshot.markAndUseSnapshot());
this.readOptions =
new ReadOptions().setVerifyChecksums(false).setSnapshot(snapshot.markAndUseSnapshot());
}

private RocksDBSnapshotTransaction(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import org.rocksdb.LRUCache;
import org.rocksdb.OptimisticTransactionDB;
import org.rocksdb.Options;
import org.rocksdb.ReadOptions;
import org.rocksdb.RocksDBException;
import org.rocksdb.RocksIterator;
import org.rocksdb.Statistics;
Expand All @@ -62,6 +63,7 @@ public class RocksDBKeyValueStorage implements KeyValueStorage {
private final RocksDBMetrics rocksDBMetrics;
private final WriteOptions tryDeleteOptions =
new WriteOptions().setNoSlowdown(true).setIgnoreMissingColumnFamilies(true);
private final ReadOptions readOptions = new ReadOptions().setVerifyChecksums(false);

/**
* Instantiates a new Rocks db key value storage.
Expand Down Expand Up @@ -122,7 +124,7 @@ public Optional<byte[]> get(final byte[] key) throws StorageException {

try (final OperationTimer.TimingContext ignored =
rocksDBMetrics.getReadLatency().startTimer()) {
return Optional.ofNullable(db.get(key));
return Optional.ofNullable(db.get(readOptions, key));
} catch (final RocksDBException e) {
throw new StorageException(e);
}
Expand Down

0 comments on commit 102630a

Please sign in to comment.