private void init(final BesuConfiguration commonConfiguration) {
    try {
      databaseMetadata = readDatabaseMetadata(commonConfiguration);
    } catch (final IOException e) {
      final String message =
          "Failed to retrieve the RocksDB database meta version: "
              + e.getMessage()
              + " could not be found. You may not have the appropriate permission to access the item.";
      throw new StorageException(message, e);
    }
    final RocksDBFactoryConfiguration factoryConfig = configuration.get();
    var configBuilder =
        RocksDBConfigurationBuilder.from(factoryConfig)
            .databaseDir(storagePath(commonConfiguration));

    if (commonConfiguration.getDataStorageConfiguration().isHistoryExpiryPruneEnabled()) {
      configBuilder.isBlockchainGarbageCollectionEnabled(true);
      final double blobGarbageCollectionAgeCutoff =
          factoryConfig.getBlobGarbageCollectionAgeCutoff().orElse(0.5);
      final double blobGarbageCollectionForceThreshold =
          factoryConfig.getBlobGarbageCollectionForceThreshold().orElse(0.1);
      configBuilder.blobGarbageCollectionAgeCutoff(Optional.of(blobGarbageCollectionAgeCutoff));
      configBuilder.blobGarbageCollectionForceThreshold(
          Optional.of(blobGarbageCollectionForceThreshold));
      LOG.atInfo()
          .setMessage("History expiry prune is enabled so setting {}; {}={}; {}={}")
          .addArgument(BLOB_BLOCKCHAIN_GARBAGE_COLLECTION_ENABLED)
          .addArgument(BLOB_GARBAGE_COLLECTION_AGE_CUTOFF)
          .addArgument(blobGarbageCollectionAgeCutoff)
          .addArgument(BLOB_GARBAGE_COLLECTION_FORCE_THRESHOLD)
          .addArgument(blobGarbageCollectionForceThreshold)
          .log();
    }

    rocksDBConfiguration = configBuilder.build();
  }
Storage path.

@param commonConfiguration the common configuration
@return the path
plugins/rocksdb/src/main/java/org/hyperledger/besu/plugin/services/storage/rocksdb/RocksDBKeyValueStorageFactory.java