Skip to content

Commit d1f0ff3

Browse files
authored
add switch for transaction cache initialization optimization (#5543)
1 parent 87db52a commit d1f0ff3

File tree

5 files changed

+25
-0
lines changed

5 files changed

+25
-0
lines changed

chainbase/src/main/java/org/tron/core/db2/common/TxCacheDB.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ public class TxCacheDB implements DB<byte[], byte[]>, Flusher {
8989
private final Path cacheProperties;
9090
private final Path cacheDir;
9191
private AtomicBoolean isValid = new AtomicBoolean(false);
92+
private boolean txCacheInitOptimization;
9293

9394
@Getter
9495
@Setter
@@ -128,6 +129,8 @@ public TxCacheDB(String name, RecentTransactionStore recentTransactionStore,
128129
this.cacheFile0 = Paths.get(cacheDir.toString(), "bloomFilters_0");
129130
this.cacheFile1 = Paths.get(cacheDir.toString(), "bloomFilters_1");
130131
this.cacheProperties = Paths.get(cacheDir.toString(), "txCache.properties");
132+
this.txCacheInitOptimization = CommonParameter.getInstance()
133+
.getStorage().isTxCacheInitOptimization();
131134

132135
}
133136

@@ -280,6 +283,12 @@ public void reset() {
280283
}
281284

282285
private boolean recovery() {
286+
if (!txCacheInitOptimization) {
287+
logger.info("txCache init optimization is disabled, skip fast recovery mode.");
288+
logger.info("If you want fast recovery mode,"
289+
+ " please set `storage.txCache.initOptimization = true` in config.conf.");
290+
return false;
291+
}
283292
FileUtil.createDirIfNotExists(this.cacheDir.toString());
284293
logger.info("recovery bloomFilters start.");
285294
CompletableFuture<Boolean> loadProperties = CompletableFuture.supplyAsync(this::loadProperties);

common/src/main/java/org/tron/core/config/args/Storage.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ public class Storage {
7777
private static final String CHECKPOINT_SYNC_KEY = "storage.checkpoint.sync";
7878

7979
private static final String CACHE_STRATEGIES = "storage.cache.strategies";
80+
public static final String TX_CACHE_INIT_OPTIMIZATION = "storage.txCache.initOptimization";
8081

8182
/**
8283
* Default values of directory
@@ -145,6 +146,10 @@ public class Storage {
145146
@Setter
146147
private int estimatedBlockTransactions;
147148

149+
@Getter
150+
@Setter
151+
private boolean txCacheInitOptimization = false;
152+
148153
// second cache
149154
private final Map<CacheType, String> cacheStrategies = Maps.newConcurrentMap();
150155

@@ -235,6 +240,11 @@ public static int getEstimatedTransactionsFromConfig(final Config config) {
235240
return estimatedTransactions;
236241
}
237242

243+
public static boolean getTxCacheInitOptimizationFromConfig(final Config config) {
244+
return config.hasPath(TX_CACHE_INIT_OPTIMIZATION)
245+
&& config.getBoolean(TX_CACHE_INIT_OPTIMIZATION);
246+
}
247+
238248

239249
public void setCacheStrategies(Config config) {
240250
if (config.hasPath(CACHE_STRATEGIES)) {

framework/src/main/java/org/tron/core/config/args/Args.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,8 @@ public static void setParam(final String[] args, final String confFileName) {
520520

521521
PARAMETER.storage.setEstimatedBlockTransactions(
522522
Storage.getEstimatedTransactionsFromConfig(config));
523+
PARAMETER.storage.setTxCacheInitOptimization(
524+
Storage.getTxCacheInitOptimizationFromConfig(config));
523525
PARAMETER.storage.setMaxFlushCount(Storage.getSnapshotMaxFlushCountFromConfig(config));
524526

525527
PARAMETER.storage.setDefaultDbOptions(config);

framework/src/main/resources/config.conf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ storage {
9595
# the estimated number of block transactions (default 1000, min 100, max 10000).
9696
# so the total number of cached transactions is 65536 * txCache.estimatedTransactions
9797
# txCache.estimatedTransactions = 1000
98+
# if true, transaction cache initialization will be faster. default false
99+
# txCache.initOptimization = true
98100
}
99101

100102
node.discovery = {

framework/src/test/resources/config-test.conf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ storage {
6666
# the estimated number of block transactions (default 1000, min 100, max 10000).
6767
# so the total number of cached transactions is 65536 * txCache.estimatedTransactions
6868
txCache.estimatedTransactions = 50
69+
# if true, transaction cache initialization will be faster. default false
70+
txCache.initOptimization = true
6971

7072
}
7173

0 commit comments

Comments
 (0)