Skip to content

Commit

Permalink
revert to TransactionDB to resolve 'busy' exception from OptimisticTr…
Browse files Browse the repository at this point in the history
…ansactionDB (hyperledger#3720)

Signed-off-by: garyschulte <garyschulte@gmail.com>
  • Loading branch information
garyschulte authored and eum602 committed Nov 3, 2023
1 parent 0f6c3e9 commit e552eb9
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@
import org.hyperledger.besu.plugin.services.metrics.OperationTimer;
import org.hyperledger.besu.plugin.services.storage.rocksdb.configuration.RocksDBConfiguration;

import org.rocksdb.OptimisticTransactionDB;
import org.rocksdb.RocksDBException;
import org.rocksdb.Statistics;
import org.rocksdb.TransactionDB;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -54,7 +54,7 @@ public RocksDBMetricsFactory(
public RocksDBMetrics create(
final MetricsSystem metricsSystem,
final RocksDBConfiguration rocksDbConfiguration,
final OptimisticTransactionDB db,
final TransactionDB db,
final Statistics stats) {
final OperationTimer readLatency =
metricsSystem
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,11 @@
import org.rocksdb.DBOptions;
import org.rocksdb.Env;
import org.rocksdb.LRUCache;
import org.rocksdb.OptimisticTransactionDB;
import org.rocksdb.RocksDBException;
import org.rocksdb.RocksIterator;
import org.rocksdb.Statistics;
import org.rocksdb.Status;
import org.rocksdb.TransactionDB;
import org.rocksdb.TransactionDBOptions;
import org.rocksdb.WriteOptions;
import org.slf4j.Logger;
Expand All @@ -72,7 +72,7 @@ public class RocksDBColumnarKeyValueStorage

private final DBOptions options;
private final TransactionDBOptions txOptions;
private final OptimisticTransactionDB db;
private final TransactionDB db;
private final AtomicBoolean closed = new AtomicBoolean(false);
private final Map<String, ColumnFamilyHandle> columnHandlesByName;
private final RocksDBMetrics metrics;
Expand Down Expand Up @@ -114,8 +114,12 @@ public RocksDBColumnarKeyValueStorage(
txOptions = new TransactionDBOptions();
final List<ColumnFamilyHandle> columnHandles = new ArrayList<>(columnDescriptors.size());
db =
OptimisticTransactionDB.open(
options, configuration.getDatabaseDir().toString(), columnDescriptors, columnHandles);
TransactionDB.open(
options,
txOptions,
configuration.getDatabaseDir().toString(),
columnDescriptors,
columnHandles);
metrics = rocksDBMetricsFactory.create(metricsSystem, configuration, db, stats);
final Map<Bytes, String> segmentsById =
segments.stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,13 @@

import org.rocksdb.BlockBasedTableConfig;
import org.rocksdb.LRUCache;
import org.rocksdb.OptimisticTransactionDB;
import org.rocksdb.Options;
import org.rocksdb.RocksDBException;
import org.rocksdb.RocksIterator;
import org.rocksdb.Statistics;
import org.rocksdb.Status;
import org.rocksdb.TransactionDB;
import org.rocksdb.TransactionDBOptions;
import org.rocksdb.WriteOptions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -55,7 +56,7 @@ public class RocksDBKeyValueStorage implements KeyValueStorage {
private static final Logger LOG = LoggerFactory.getLogger(RocksDBKeyValueStorage.class);

private final Options options;
private final OptimisticTransactionDB db;
private final TransactionDB db;
private final AtomicBoolean closed = new AtomicBoolean(false);
private final RocksDBMetrics rocksDBMetrics;
private final WriteOptions tryDeleteOptions = new WriteOptions().setNoSlowdown(true);
Expand All @@ -76,7 +77,9 @@ public RocksDBKeyValueStorage(
.setStatistics(stats);
options.getEnv().setBackgroundThreads(configuration.getBackgroundThreadCount());

db = OptimisticTransactionDB.open(options, configuration.getDatabaseDir().toString());
db =
TransactionDB.open(
options, new TransactionDBOptions(), configuration.getDatabaseDir().toString());
rocksDBMetrics = rocksDBMetricsFactory.create(metricsSystem, configuration, db, stats);
} catch (final RocksDBException e) {
throw new StorageException(e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.rocksdb.OptimisticTransactionDB;
import org.rocksdb.Statistics;
import org.rocksdb.TransactionDB;

@RunWith(MockitoJUnitRunner.class)
public class RocksDBMetricsTest {
Expand All @@ -49,7 +49,7 @@ public class RocksDBMetricsTest {
@Mock private LabelledMetric<OperationTimer> labelledMetricOperationTimerMock;
@Mock private LabelledMetric<Counter> labelledMetricCounterMock;
@Mock private OperationTimer operationTimerMock;
@Mock private OptimisticTransactionDB db;
@Mock private TransactionDB db;
@Mock private Statistics stats;

@Rule public final TemporaryFolder folder = new TemporaryFolder();
Expand Down

0 comments on commit e552eb9

Please sign in to comment.