Skip to content

Commit 0c8159d

Browse files
committed
Refactor MerkleTree initialization to improve readability and update comments for clarity
1 parent 01f05c0 commit 0c8159d

File tree

1 file changed

+21
-34
lines changed

1 file changed

+21
-34
lines changed

src/main/java/io/pwrlabs/database/rocksdb/MerkleTree.java

Lines changed: 21 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ public void addOrUpdateData(byte[] key, byte[] data) throws RocksDBException {
262262

263263
getWriteLock();
264264
try {
265-
// Check if key already exists
265+
// Check if key already exists
266266
byte[] existingData = getData(key);
267267
byte[] oldLeafHash = existingData == null ? null : calculateLeafHash(key, existingData);
268268

@@ -724,56 +724,43 @@ private void initializeDb() throws RocksDBException {
724724
DBOptions dbOptions = new DBOptions()
725725
.setCreateIfMissing(true)
726726
.setCreateMissingColumnFamilies(true)
727-
.setUseDirectReads(true)
728-
.setAllowMmapReads(false)
729-
.setUseDirectIoForFlushAndCompaction(true)
730727
.setMaxOpenFiles(100)
731728
.setMaxBackgroundJobs(1)
732-
.setInfoLogLevel(InfoLogLevel.FATAL_LEVEL)
733-
.setMaxManifestFileSize(64L * 1024 * 1024) // e.g. 64 MB
734-
.setMaxTotalWalSize(250L * 1024 * 1024) // total WAL across all CFs ≤ 250 MB
735-
.setWalSizeLimitMB(250) // (optional) per-WAL-file soft limit
736-
.setKeepLogFileNum(3); // keep at most 3 WAL files, regardless of age/size
729+
.setInfoLogLevel(InfoLogLevel.FATAL_LEVEL);
730+
// (omit setNoBlockCache or any “disable cache” flags)
737731

738-
// 2) Table format: no cache, small blocks
732+
// 2) Table format: enable a 64 MB off-heap LRU cache
739733
BlockBasedTableConfig tableConfig = new BlockBasedTableConfig()
740-
.setNoBlockCache(true)
741-
.setBlockSize(4 * 1024) // 4 KB blocks
734+
.setBlockCache(new LRUCache(64 * 1024L * 1024L)) // 64 MiB
735+
.setBlockSize(4 * 1024) // 4 KiB blocks
742736
.setFormatVersion(5)
743737
.setChecksumType(ChecksumType.kxxHash);
744738

745-
// 3) ColumnFamilyOptions: no compression, single write buffer
739+
// 3) ColumnFamilyOptions: reference our tableConfig
746740
ColumnFamilyOptions cfOptions = new ColumnFamilyOptions()
747741
.setTableFormatConfig(tableConfig)
748742
.setCompressionType(CompressionType.NO_COMPRESSION)
749-
.setWriteBufferSize(16 * 1024 * 1024) // 16 MB memtable
743+
.setWriteBufferSize(16 * 1024 * 1024)
750744
.setMaxWriteBufferNumber(1)
751745
.setMinWriteBufferNumberToMerge(1)
752746
.optimizeUniversalStyleCompaction();
753747

754-
// 4. Prepare column families
755-
List<ColumnFamilyDescriptor> cfDescriptors = new ArrayList<>();
748+
// 4) Prepare column-family descriptors & handles as before…
749+
List<ColumnFamilyDescriptor> cfDescriptors = List.of(
750+
new ColumnFamilyDescriptor(RocksDB.DEFAULT_COLUMN_FAMILY, cfOptions),
751+
new ColumnFamilyDescriptor(METADATA_DB_NAME.getBytes(), cfOptions),
752+
new ColumnFamilyDescriptor(NODES_DB_NAME.getBytes(), cfOptions),
753+
new ColumnFamilyDescriptor(KEY_DATA_DB_NAME.getBytes(), cfOptions)
754+
);
756755
List<ColumnFamilyHandle> cfHandles = new ArrayList<>();
757756

758-
// Always need default CF
759-
cfDescriptors.add(new ColumnFamilyDescriptor(
760-
RocksDB.DEFAULT_COLUMN_FAMILY, cfOptions));
761-
762-
// Our custom CFs
763-
cfDescriptors.add(new ColumnFamilyDescriptor(
764-
METADATA_DB_NAME.getBytes(), cfOptions));
765-
cfDescriptors.add(new ColumnFamilyDescriptor(
766-
NODES_DB_NAME.getBytes(), cfOptions));
767-
cfDescriptors.add(new ColumnFamilyDescriptor(
768-
KEY_DATA_DB_NAME.getBytes(), cfOptions));
769-
770-
// 5. Open DB with all column families
757+
// 5) Open the DB
771758
this.db = RocksDB.open(dbOptions, path, cfDescriptors, cfHandles);
772759

773-
// 6. Assign handles
760+
// 6) Assign handles
774761
this.metaDataHandle = cfHandles.get(1);
775-
this.nodesHandle = cfHandles.get(2);
776-
this.keyDataHandle = cfHandles.get(3);
762+
this.nodesHandle = cfHandles.get(2);
763+
this.keyDataHandle = cfHandles.get(3);
777764
}
778765

779766
/**
@@ -1356,10 +1343,10 @@ public boolean equals(Object obj) {
13561343
//endregion
13571344

13581345
public static void main(String[] args) throws Exception {
1359-
MerkleTree tree = new MerkleTree("w1e2111we3/tree1");
1346+
MerkleTree tree = new MerkleTree("w1e21115we3/tree1");
13601347
tree.addOrUpdateData("key1".getBytes(), "value1".getBytes());
13611348

1362-
MerkleTree tree2 = tree.clone("we211131we/tree2");
1349+
MerkleTree tree2 = tree.clone("we2151131we/tree2");
13631350

13641351
tree.addOrUpdateData("key2".getBytes(), "value2".getBytes());
13651352
tree.flushToDisk();

0 commit comments

Comments
 (0)