Merge pull request #5062 from mempool/mononaut/configurable-tip-monitoring
Configurable threshold for esplora tip check
This commit is contained in:
commit
684ad9f0e6
@ -59,7 +59,8 @@
|
|||||||
"RETRY_UNIX_SOCKET_AFTER": 30000,
|
"RETRY_UNIX_SOCKET_AFTER": 30000,
|
||||||
"REQUEST_TIMEOUT": 10000,
|
"REQUEST_TIMEOUT": 10000,
|
||||||
"FALLBACK_TIMEOUT": 5000,
|
"FALLBACK_TIMEOUT": 5000,
|
||||||
"FALLBACK": []
|
"FALLBACK": [],
|
||||||
|
"MAX_BEHIND_TIP": 2
|
||||||
},
|
},
|
||||||
"SECOND_CORE_RPC": {
|
"SECOND_CORE_RPC": {
|
||||||
"HOST": "127.0.0.1",
|
"HOST": "127.0.0.1",
|
||||||
|
@ -60,7 +60,8 @@
|
|||||||
"RETRY_UNIX_SOCKET_AFTER": 888,
|
"RETRY_UNIX_SOCKET_AFTER": 888,
|
||||||
"REQUEST_TIMEOUT": 10000,
|
"REQUEST_TIMEOUT": 10000,
|
||||||
"FALLBACK_TIMEOUT": 5000,
|
"FALLBACK_TIMEOUT": 5000,
|
||||||
"FALLBACK": []
|
"FALLBACK": [],
|
||||||
|
"MAX_BEHIND_TIP": 2
|
||||||
},
|
},
|
||||||
"SECOND_CORE_RPC": {
|
"SECOND_CORE_RPC": {
|
||||||
"HOST": "__SECOND_CORE_RPC_HOST__",
|
"HOST": "__SECOND_CORE_RPC_HOST__",
|
||||||
|
@ -63,6 +63,7 @@ describe('Mempool Backend Config', () => {
|
|||||||
REQUEST_TIMEOUT: 10000,
|
REQUEST_TIMEOUT: 10000,
|
||||||
FALLBACK_TIMEOUT: 5000,
|
FALLBACK_TIMEOUT: 5000,
|
||||||
FALLBACK: [],
|
FALLBACK: [],
|
||||||
|
MAX_BEHIND_TIP: 2,
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(config.CORE_RPC).toStrictEqual({
|
expect(config.CORE_RPC).toStrictEqual({
|
||||||
|
@ -25,6 +25,7 @@ interface FailoverHost {
|
|||||||
class FailoverRouter {
|
class FailoverRouter {
|
||||||
activeHost: FailoverHost;
|
activeHost: FailoverHost;
|
||||||
fallbackHost: FailoverHost;
|
fallbackHost: FailoverHost;
|
||||||
|
maxSlippage: number = config.ESPLORA.MAX_BEHIND_TIP ?? 2;
|
||||||
maxHeight: number = 0;
|
maxHeight: number = 0;
|
||||||
hosts: FailoverHost[];
|
hosts: FailoverHost[];
|
||||||
multihost: boolean;
|
multihost: boolean;
|
||||||
@ -93,13 +94,13 @@ class FailoverRouter {
|
|||||||
);
|
);
|
||||||
if (result) {
|
if (result) {
|
||||||
const height = result.data;
|
const height = result.data;
|
||||||
this.maxHeight = Math.max(height, this.maxHeight);
|
this.maxHeight = Math.max(height || 0, ...this.hosts.map(host => (!(host.unreachable || host.timedOut || host.outOfSync) ? host.latestHeight || 0 : 0)));
|
||||||
const rtt = result.config['meta'].rtt;
|
const rtt = result.config['meta'].rtt;
|
||||||
host.rtts.unshift(rtt);
|
host.rtts.unshift(rtt);
|
||||||
host.rtts.slice(0, 5);
|
host.rtts.slice(0, 5);
|
||||||
host.rtt = host.rtts.reduce((acc, l) => acc + l, 0) / host.rtts.length;
|
host.rtt = host.rtts.reduce((acc, l) => acc + l, 0) / host.rtts.length;
|
||||||
host.latestHeight = height;
|
host.latestHeight = height;
|
||||||
if (height == null || isNaN(height) || (this.maxHeight - height > 2)) {
|
if (height == null || isNaN(height) || (this.maxHeight - height > this.maxSlippage)) {
|
||||||
host.outOfSync = true;
|
host.outOfSync = true;
|
||||||
} else {
|
} else {
|
||||||
host.outOfSync = false;
|
host.outOfSync = false;
|
||||||
|
@ -51,6 +51,7 @@ interface IConfig {
|
|||||||
REQUEST_TIMEOUT: number;
|
REQUEST_TIMEOUT: number;
|
||||||
FALLBACK_TIMEOUT: number;
|
FALLBACK_TIMEOUT: number;
|
||||||
FALLBACK: string[];
|
FALLBACK: string[];
|
||||||
|
MAX_BEHIND_TIP: number;
|
||||||
};
|
};
|
||||||
LIGHTNING: {
|
LIGHTNING: {
|
||||||
ENABLED: boolean;
|
ENABLED: boolean;
|
||||||
@ -210,6 +211,7 @@ const defaults: IConfig = {
|
|||||||
'REQUEST_TIMEOUT': 10000,
|
'REQUEST_TIMEOUT': 10000,
|
||||||
'FALLBACK_TIMEOUT': 5000,
|
'FALLBACK_TIMEOUT': 5000,
|
||||||
'FALLBACK': [],
|
'FALLBACK': [],
|
||||||
|
'MAX_BEHIND_TIP': 2,
|
||||||
},
|
},
|
||||||
'ELECTRUM': {
|
'ELECTRUM': {
|
||||||
'HOST': '127.0.0.1',
|
'HOST': '127.0.0.1',
|
||||||
|
@ -60,7 +60,8 @@
|
|||||||
"RETRY_UNIX_SOCKET_AFTER": __ESPLORA_RETRY_UNIX_SOCKET_AFTER__,
|
"RETRY_UNIX_SOCKET_AFTER": __ESPLORA_RETRY_UNIX_SOCKET_AFTER__,
|
||||||
"REQUEST_TIMEOUT": __ESPLORA_REQUEST_TIMEOUT__,
|
"REQUEST_TIMEOUT": __ESPLORA_REQUEST_TIMEOUT__,
|
||||||
"FALLBACK_TIMEOUT": __ESPLORA_FALLBACK_TIMEOUT__,
|
"FALLBACK_TIMEOUT": __ESPLORA_FALLBACK_TIMEOUT__,
|
||||||
"FALLBACK": __ESPLORA_FALLBACK__
|
"FALLBACK": __ESPLORA_FALLBACK__,
|
||||||
|
"MAX_BEHIND_TIP": __ESPLORA_MAX_BEHIND_TIP__
|
||||||
},
|
},
|
||||||
"SECOND_CORE_RPC": {
|
"SECOND_CORE_RPC": {
|
||||||
"HOST": "__SECOND_CORE_RPC_HOST__",
|
"HOST": "__SECOND_CORE_RPC_HOST__",
|
||||||
|
@ -62,6 +62,7 @@ __ESPLORA_RETRY_UNIX_SOCKET_AFTER__=${ESPLORA_RETRY_UNIX_SOCKET_AFTER:=30000}
|
|||||||
__ESPLORA_REQUEST_TIMEOUT__=${ESPLORA_REQUEST_TIMEOUT:=5000}
|
__ESPLORA_REQUEST_TIMEOUT__=${ESPLORA_REQUEST_TIMEOUT:=5000}
|
||||||
__ESPLORA_FALLBACK_TIMEOUT__=${ESPLORA_FALLBACK_TIMEOUT:=5000}
|
__ESPLORA_FALLBACK_TIMEOUT__=${ESPLORA_FALLBACK_TIMEOUT:=5000}
|
||||||
__ESPLORA_FALLBACK__=${ESPLORA_FALLBACK:=[]}
|
__ESPLORA_FALLBACK__=${ESPLORA_FALLBACK:=[]}
|
||||||
|
__ESPLORA_MAX_BEHIND_TIP__=${ESPLORA_MAX_BEHIND_TIP:=2}
|
||||||
|
|
||||||
# SECOND_CORE_RPC
|
# SECOND_CORE_RPC
|
||||||
__SECOND_CORE_RPC_HOST__=${SECOND_CORE_RPC_HOST:=127.0.0.1}
|
__SECOND_CORE_RPC_HOST__=${SECOND_CORE_RPC_HOST:=127.0.0.1}
|
||||||
@ -216,6 +217,7 @@ sed -i "s!__ESPLORA_RETRY_UNIX_SOCKET_AFTER__!${__ESPLORA_RETRY_UNIX_SOCKET_AFTE
|
|||||||
sed -i "s!__ESPLORA_REQUEST_TIMEOUT__!${__ESPLORA_REQUEST_TIMEOUT__}!g" mempool-config.json
|
sed -i "s!__ESPLORA_REQUEST_TIMEOUT__!${__ESPLORA_REQUEST_TIMEOUT__}!g" mempool-config.json
|
||||||
sed -i "s!__ESPLORA_FALLBACK_TIMEOUT__!${__ESPLORA_FALLBACK_TIMEOUT__}!g" mempool-config.json
|
sed -i "s!__ESPLORA_FALLBACK_TIMEOUT__!${__ESPLORA_FALLBACK_TIMEOUT__}!g" mempool-config.json
|
||||||
sed -i "s!__ESPLORA_FALLBACK__!${__ESPLORA_FALLBACK__}!g" mempool-config.json
|
sed -i "s!__ESPLORA_FALLBACK__!${__ESPLORA_FALLBACK__}!g" mempool-config.json
|
||||||
|
sed -i "s!__ESPLORA_MAX_BEHIND_TIP__!${__ESPLORA_MAX_BEHIND_TIP__}!g" mempool-config.json
|
||||||
|
|
||||||
sed -i "s!__SECOND_CORE_RPC_HOST__!${__SECOND_CORE_RPC_HOST__}!g" mempool-config.json
|
sed -i "s!__SECOND_CORE_RPC_HOST__!${__SECOND_CORE_RPC_HOST__}!g" mempool-config.json
|
||||||
sed -i "s!__SECOND_CORE_RPC_PORT__!${__SECOND_CORE_RPC_PORT__}!g" mempool-config.json
|
sed -i "s!__SECOND_CORE_RPC_PORT__!${__SECOND_CORE_RPC_PORT__}!g" mempool-config.json
|
||||||
|
Loading…
x
Reference in New Issue
Block a user