@@ -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