diff --git a/backend/mempool-config.sample.json b/backend/mempool-config.sample.json index 2369b64b5..d7ac621a3 100644 --- a/backend/mempool-config.sample.json +++ b/backend/mempool-config.sample.json @@ -27,7 +27,8 @@ "AUDIT": false, "ADVANCED_GBT_AUDIT": false, "ADVANCED_GBT_MEMPOOL": false, - "CPFP_INDEXING": false + "CPFP_INDEXING": false, + "DISK_CACHE_BLOCK_INTERVAL": 6 }, "CORE_RPC": { "HOST": "127.0.0.1", diff --git a/backend/src/__fixtures__/mempool-config.template.json b/backend/src/__fixtures__/mempool-config.template.json index 2bf52cbcf..07e930903 100644 --- a/backend/src/__fixtures__/mempool-config.template.json +++ b/backend/src/__fixtures__/mempool-config.template.json @@ -28,7 +28,8 @@ "ADVANCED_GBT_AUDIT": "__MEMPOOL_ADVANCED_GBT_AUDIT__", "ADVANCED_GBT_MEMPOOL": "__MEMPOOL_ADVANCED_GBT_MEMPOOL__", "CPFP_INDEXING": "__MEMPOOL_CPFP_INDEXING__", - "MAX_BLOCKS_BULK_QUERY": "__MEMPOOL_MAX_BLOCKS_BULK_QUERY__" + "MAX_BLOCKS_BULK_QUERY": "__MEMPOOL_MAX_BLOCKS_BULK_QUERY__", + "DISK_CACHE_BLOCK_INTERVAL": "__DISK_CACHE_BLOCK_INTERVAL__" }, "CORE_RPC": { "HOST": "__CORE_RPC_HOST__", diff --git a/backend/src/__tests__/config.test.ts b/backend/src/__tests__/config.test.ts index 8b7ebc9ce..fdffd593f 100644 --- a/backend/src/__tests__/config.test.ts +++ b/backend/src/__tests__/config.test.ts @@ -42,6 +42,7 @@ describe('Mempool Backend Config', () => { ADVANCED_GBT_MEMPOOL: false, CPFP_INDEXING: false, MAX_BLOCKS_BULK_QUERY: 0, + DISK_CACHE_BLOCK_INTERVAL: 6, }); expect(config.ELECTRUM).toStrictEqual({ HOST: '127.0.0.1', PORT: 3306, TLS_ENABLED: true }); diff --git a/backend/src/api/blocks.ts b/backend/src/api/blocks.ts index 8ed81016b..f9b14d637 100644 --- a/backend/src/api/blocks.ts +++ b/backend/src/api/blocks.ts @@ -651,7 +651,7 @@ class Blocks { if (this.newBlockCallbacks.length) { this.newBlockCallbacks.forEach((cb) => cb(blockExtended, txIds, transactions)); } - if (!memPool.hasPriority() && (block.height % 6 === 0)) { + if (!memPool.hasPriority() && (block.height % config.MEMPOOL.DISK_CACHE_BLOCK_INTERVAL === 0)) { diskCache.$saveCacheToDisk(); } diff --git a/backend/src/api/disk-cache.ts b/backend/src/api/disk-cache.ts index 420d8e526..7180c6f51 100644 --- a/backend/src/api/disk-cache.ts +++ b/backend/src/api/disk-cache.ts @@ -19,16 +19,12 @@ class DiskCache { private isWritingCache = false; constructor() { - if (!cluster.isMaster) { + if (!cluster.isPrimary) { return; } process.on('SIGINT', (e) => { this.$saveCacheToDisk(true); - process.exit(2); - }); - process.on('SIGTERM', (e) => { - this.$saveCacheToDisk(true); - process.exit(2); + process.exit(0); }); } diff --git a/backend/src/config.ts b/backend/src/config.ts index 8ccd7e2e4..b364f100b 100644 --- a/backend/src/config.ts +++ b/backend/src/config.ts @@ -33,6 +33,7 @@ interface IConfig { ADVANCED_GBT_MEMPOOL: boolean; CPFP_INDEXING: boolean; MAX_BLOCKS_BULK_QUERY: number; + DISK_CACHE_BLOCK_INTERVAL: number; }; ESPLORA: { REST_API_URL: string; @@ -155,6 +156,7 @@ const defaults: IConfig = { 'ADVANCED_GBT_MEMPOOL': false, 'CPFP_INDEXING': false, 'MAX_BLOCKS_BULK_QUERY': 0, + 'DISK_CACHE_BLOCK_INTERVAL': 6, }, 'ESPLORA': { 'REST_API_URL': 'http://127.0.0.1:3000', diff --git a/docker/README.md b/docker/README.md index 525ecb718..13a4094cc 100644 --- a/docker/README.md +++ b/docker/README.md @@ -112,6 +112,7 @@ Below we list all settings from `mempool-config.json` and the corresponding over "ADVANCED_GBT_MEMPOOL": false, "CPFP_INDEXING": false, "MAX_BLOCKS_BULK_QUERY": 0, + "DISK_CACHE_BLOCK_INTERVAL": 6 }, ``` @@ -143,6 +144,7 @@ Corresponding `docker-compose.yml` overrides: MEMPOOL_ADVANCED_GBT_MEMPOOL: "" MEMPOOL_CPFP_INDEXING: "" MAX_BLOCKS_BULK_QUERY: "" + DISK_CACHE_BLOCK_INTERVAL: "" ... ``` diff --git a/docker/backend/mempool-config.json b/docker/backend/mempool-config.json index 1b3ac1837..962a1509a 100644 --- a/docker/backend/mempool-config.json +++ b/docker/backend/mempool-config.json @@ -26,7 +26,8 @@ "ADVANCED_GBT_AUDIT": __MEMPOOL_ADVANCED_GBT_AUDIT__, "ADVANCED_GBT_MEMPOOL": __MEMPOOL_ADVANCED_GBT_MEMPOOL__, "CPFP_INDEXING": __MEMPOOL_CPFP_INDEXING__, - "MAX_BLOCKS_BULK_QUERY": __MEMPOOL_MAX_BLOCKS_BULK_QUERY__ + "MAX_BLOCKS_BULK_QUERY": __MEMPOOL_MAX_BLOCKS_BULK_QUERY__, + "DISK_CACHE_BLOCK_INTERVAL": __DISK_CACHE_BLOCK_INTERVAL__ }, "CORE_RPC": { "HOST": "__CORE_RPC_HOST__", diff --git a/docker/backend/start.sh b/docker/backend/start.sh index fced20974..cdf9ab67e 100755 --- a/docker/backend/start.sh +++ b/docker/backend/start.sh @@ -30,6 +30,7 @@ __MEMPOOL_ADVANCED_GBT_AUDIT__=${MEMPOOL_ADVANCED_GBT_AUDIT:=false} __MEMPOOL_ADVANCED_GBT_MEMPOOL__=${MEMPOOL_ADVANCED_GBT_MEMPOOL:=false} __MEMPOOL_CPFP_INDEXING__=${MEMPOOL_CPFP_INDEXING:=false} __MEMPOOL_MAX_BLOCKS_BULK_QUERY__=${MEMPOOL_MAX_BLOCKS_BULK_QUERY:=0} +__MEMPOOL_DISK_CACHE_BLOCK_INTERVAL__=${MEMPOOL_DISK_CACHE_BLOCK_INTERVAL:=6} # CORE_RPC __CORE_RPC_HOST__=${CORE_RPC_HOST:=127.0.0.1} @@ -149,6 +150,7 @@ sed -i "s!__MEMPOOL_ADVANCED_GBT_MEMPOOL__!${__MEMPOOL_ADVANCED_GBT_MEMPOOL__}!g sed -i "s!__MEMPOOL_ADVANCED_GBT_AUDIT__!${__MEMPOOL_ADVANCED_GBT_AUDIT__}!g" mempool-config.json sed -i "s!__MEMPOOL_CPFP_INDEXING__!${__MEMPOOL_CPFP_INDEXING__}!g" mempool-config.json sed -i "s!__MEMPOOL_MAX_BLOCKS_BULK_QUERY__!${__MEMPOOL_MAX_BLOCKS_BULK_QUERY__}!g" mempool-config.json +sed -i "s!__MEMPOOL_DISK_CACHE_BLOCK_INTERVAL__!${__MEMPOOL_DISK_CACHE_BLOCK_INTERVAL__}!g" mempool-config.json sed -i "s/__CORE_RPC_HOST__/${__CORE_RPC_HOST__}/g" mempool-config.json sed -i "s/__CORE_RPC_PORT__/${__CORE_RPC_PORT__}/g" mempool-config.json diff --git a/production/mempool-config.liquid.json b/production/mempool-config.liquid.json index 11ad8ffcd..d6513f9e2 100644 --- a/production/mempool-config.liquid.json +++ b/production/mempool-config.liquid.json @@ -6,7 +6,8 @@ "MINED_BLOCKS_CACHE": 144, "SPAWN_CLUSTER_PROCS": 0, "API_URL_PREFIX": "/api/v1/", - "POLL_RATE_MS": 1000 + "POLL_RATE_MS": 1000, + "DISK_CACHE_BLOCK_INTERVAL": 1 }, "SYSLOG" : { "MIN_PRIORITY": "debug" diff --git a/production/mempool-config.liquidtestnet.json b/production/mempool-config.liquidtestnet.json index 7769bfb53..f85f041d2 100644 --- a/production/mempool-config.liquidtestnet.json +++ b/production/mempool-config.liquidtestnet.json @@ -6,7 +6,8 @@ "MINED_BLOCKS_CACHE": 144, "SPAWN_CLUSTER_PROCS": 0, "API_URL_PREFIX": "/api/v1/", - "POLL_RATE_MS": 1000 + "POLL_RATE_MS": 1000, + "DISK_CACHE_BLOCK_INTERVAL": 1 }, "SYSLOG" : { "MIN_PRIORITY": "debug" diff --git a/production/mempool-config.mainnet.json b/production/mempool-config.mainnet.json index cca43d7e3..fc08ae930 100644 --- a/production/mempool-config.mainnet.json +++ b/production/mempool-config.mainnet.json @@ -14,7 +14,8 @@ "CPFP_INDEXING": true, "ADVANCED_GBT_AUDIT": true, "ADVANCED_GBT_MEMPOOL": true, - "USE_SECOND_NODE_FOR_MINFEE": true + "USE_SECOND_NODE_FOR_MINFEE": true, + "DISK_CACHE_BLOCK_INTERVAL": 1 }, "SYSLOG" : { "MIN_PRIORITY": "debug" diff --git a/production/mempool-config.signet.json b/production/mempool-config.signet.json index 87f8e2650..c4d43e040 100644 --- a/production/mempool-config.signet.json +++ b/production/mempool-config.signet.json @@ -10,7 +10,8 @@ "AUDIT": true, "ADVANCED_GBT_AUDIT": true, "ADVANCED_GBT_MEMPOOL": true, - "POLL_RATE_MS": 1000 + "POLL_RATE_MS": 1000, + "DISK_CACHE_BLOCK_INTERVAL": 1 }, "SYSLOG" : { "MIN_PRIORITY": "debug" diff --git a/production/mempool-config.testnet.json b/production/mempool-config.testnet.json index 5c1695e62..f5ff4fba1 100644 --- a/production/mempool-config.testnet.json +++ b/production/mempool-config.testnet.json @@ -10,7 +10,8 @@ "AUDIT": true, "ADVANCED_GBT_AUDIT": true, "ADVANCED_GBT_MEMPOOL": true, - "POLL_RATE_MS": 1000 + "POLL_RATE_MS": 1000, + "DISK_CACHE_BLOCK_INTERVAL": 1 }, "SYSLOG" : { "MIN_PRIORITY": "debug"