Cache monitor RPC calls to increase performance (#322)
This commit is contained in:
parent
bcbe34a839
commit
b4abbc4910
@ -70,3 +70,4 @@ MONITOR_VALIDATOR_FOREIGN_TX_LIMIT | Average gas usage of a transaction sent by
|
|||||||
MONITOR_TX_NUMBER_THRESHOLD | If estimated number of transaction is equal to or below this value, the monitor will report that the validator has less funds than it is required. | integer
|
MONITOR_TX_NUMBER_THRESHOLD | If estimated number of transaction is equal to or below this value, the monitor will report that the validator has less funds than it is required. | integer
|
||||||
MONITOR_PORT | The port for the Monitor. | integer
|
MONITOR_PORT | The port for the Monitor. | integer
|
||||||
MONITOR_BRIDGE_NAME | The name to be used in the url path for the bridge | string
|
MONITOR_BRIDGE_NAME | The name to be used in the url path for the bridge | string
|
||||||
|
MONITOR_CACHE_EVENTS | If set to true, monitor will cache obtained events for other workers runs
|
||||||
|
@ -21,6 +21,7 @@ In `group_vars/xdai.yml`
|
|||||||
---
|
---
|
||||||
MONITOR_BRIDGE_NAME: "xdai"
|
MONITOR_BRIDGE_NAME: "xdai"
|
||||||
MONITOR_PORT: 3003
|
MONITOR_PORT: 3003
|
||||||
|
MONITOR_CACHE_EVENTS: "true"
|
||||||
|
|
||||||
COMMON_HOME_RPC_URL: "https://dai.poa.network"
|
COMMON_HOME_RPC_URL: "https://dai.poa.network"
|
||||||
COMMON_HOME_BRIDGE_ADDRESS: "0x7301CFA0e1756B71869E93d4e4Dca5c7d0eb0AA6"
|
COMMON_HOME_BRIDGE_ADDRESS: "0x7301CFA0e1756B71869E93d4e4Dca5c7d0eb0AA6"
|
||||||
@ -64,6 +65,7 @@ In `group_vars/wetc.yml`
|
|||||||
```
|
```
|
||||||
---
|
---
|
||||||
MONITOR_BRIDGE_NAME: "wetc"
|
MONITOR_BRIDGE_NAME: "wetc"
|
||||||
|
MONITOR_CACHE_EVENTS: "true"
|
||||||
|
|
||||||
COMMON_HOME_RPC_URL: "https://ethereumclassic.network"
|
COMMON_HOME_RPC_URL: "https://ethereumclassic.network"
|
||||||
COMMON_HOME_BRIDGE_ADDRESS: "0x073081832B4Ecdce79d4D6753565c85Ba4b3BeA9"
|
COMMON_HOME_BRIDGE_ADDRESS: "0x073081832B4Ecdce79d4D6753565c85Ba4b3BeA9"
|
||||||
|
@ -44,6 +44,7 @@ UI_FOREIGN_GAS_PRICE_UPDATE_INTERVAL: 600000
|
|||||||
## Monitor
|
## Monitor
|
||||||
MONITOR_BRIDGE_NAME: "xdai"
|
MONITOR_BRIDGE_NAME: "xdai"
|
||||||
MONITOR_PORT: 3003
|
MONITOR_PORT: 3003
|
||||||
|
MONITOR_CACHE_EVENTS: "true"
|
||||||
MONITOR_HOME_START_BLOCK: 759
|
MONITOR_HOME_START_BLOCK: 759
|
||||||
MONITOR_FOREIGN_START_BLOCK: 6478417
|
MONITOR_FOREIGN_START_BLOCK: 6478417
|
||||||
MONITOR_VALIDATOR_HOME_TX_LIMIT: 300000
|
MONITOR_VALIDATOR_HOME_TX_LIMIT: 300000
|
||||||
|
@ -46,6 +46,7 @@ UI_FOREIGN_GAS_PRICE_UPDATE_INTERVAL: 600000
|
|||||||
## Monitor
|
## Monitor
|
||||||
MONITOR_BRIDGE_NAME: "bridge"
|
MONITOR_BRIDGE_NAME: "bridge"
|
||||||
MONITOR_PORT: 3003
|
MONITOR_PORT: 3003
|
||||||
|
MONITOR_CACHE_EVENTS: "false"
|
||||||
MONITOR_HOME_START_BLOCK: 0
|
MONITOR_HOME_START_BLOCK: 0
|
||||||
MONITOR_FOREIGN_START_BLOCK: 0
|
MONITOR_FOREIGN_START_BLOCK: 0
|
||||||
MONITOR_VALIDATOR_HOME_TX_LIMIT: 300000
|
MONITOR_VALIDATOR_HOME_TX_LIMIT: 300000
|
||||||
|
@ -43,6 +43,7 @@ UI_FOREIGN_GAS_PRICE_UPDATE_INTERVAL: 600000
|
|||||||
|
|
||||||
#monitor
|
#monitor
|
||||||
MONITOR_BRIDGE_NAME: "bridge"
|
MONITOR_BRIDGE_NAME: "bridge"
|
||||||
|
MONITOR_CACHE_EVENTS: "true"
|
||||||
MONITOR_HOME_START_BLOCK: 0
|
MONITOR_HOME_START_BLOCK: 0
|
||||||
MONITOR_FOREIGN_START_BLOCK: 0
|
MONITOR_FOREIGN_START_BLOCK: 0
|
||||||
MONITOR_VALIDATOR_HOME_TX_LIMIT: 300000
|
MONITOR_VALIDATOR_HOME_TX_LIMIT: 300000
|
||||||
|
@ -45,6 +45,7 @@ UI_FOREIGN_GAS_PRICE_UPDATE_INTERVAL: 600000
|
|||||||
## Monitor
|
## Monitor
|
||||||
MONITOR_BRIDGE_NAME: "wetc"
|
MONITOR_BRIDGE_NAME: "wetc"
|
||||||
MONITOR_PORT: 3003
|
MONITOR_PORT: 3003
|
||||||
|
MONITOR_CACHE_EVENTS: "true"
|
||||||
MONITOR_HOME_START_BLOCK: 7703292
|
MONITOR_HOME_START_BLOCK: 7703292
|
||||||
MONITOR_FOREIGN_START_BLOCK: 7412459
|
MONITOR_FOREIGN_START_BLOCK: 7412459
|
||||||
MONITOR_VALIDATOR_HOME_TX_LIMIT: 300000
|
MONITOR_VALIDATOR_HOME_TX_LIMIT: 300000
|
||||||
|
@ -32,3 +32,5 @@ MONITOR_FOREIGN_START_BLOCK={{ MONITOR_FOREIGN_START_BLOCK }}
|
|||||||
MONITOR_VALIDATOR_HOME_TX_LIMIT={{ MONITOR_VALIDATOR_HOME_TX_LIMIT }}
|
MONITOR_VALIDATOR_HOME_TX_LIMIT={{ MONITOR_VALIDATOR_HOME_TX_LIMIT }}
|
||||||
MONITOR_VALIDATOR_FOREIGN_TX_LIMIT={{ MONITOR_VALIDATOR_FOREIGN_TX_LIMIT }}
|
MONITOR_VALIDATOR_FOREIGN_TX_LIMIT={{ MONITOR_VALIDATOR_FOREIGN_TX_LIMIT }}
|
||||||
MONITOR_TX_NUMBER_THRESHOLD={{ MONITOR_TX_NUMBER_THRESHOLD }}
|
MONITOR_TX_NUMBER_THRESHOLD={{ MONITOR_TX_NUMBER_THRESHOLD }}
|
||||||
|
|
||||||
|
MONITOR_CACHE_EVENTS={{ MONITOR_CACHE_EVENTS }}
|
||||||
|
@ -17,3 +17,4 @@ COMMON_FOREIGN_GAS_PRICE_FACTOR=1
|
|||||||
MONITOR_TX_NUMBER_THRESHOLD=100
|
MONITOR_TX_NUMBER_THRESHOLD=100
|
||||||
MONITOR_PORT=3013
|
MONITOR_PORT=3013
|
||||||
MONITOR_BRIDGE_NAME=bridge
|
MONITOR_BRIDGE_NAME=bridge
|
||||||
|
MONITOR_CACHE_EVENTS=false
|
||||||
|
@ -17,3 +17,4 @@ COMMON_FOREIGN_GAS_PRICE_FACTOR=1
|
|||||||
MONITOR_TX_NUMBER_THRESHOLD=100
|
MONITOR_TX_NUMBER_THRESHOLD=100
|
||||||
MONITOR_PORT=3012
|
MONITOR_PORT=3012
|
||||||
MONITOR_BRIDGE_NAME=bridge
|
MONITOR_BRIDGE_NAME=bridge
|
||||||
|
MONITOR_CACHE_EVENTS=false
|
||||||
|
@ -17,3 +17,4 @@ COMMON_FOREIGN_GAS_PRICE_FACTOR=1
|
|||||||
MONITOR_TX_NUMBER_THRESHOLD=100
|
MONITOR_TX_NUMBER_THRESHOLD=100
|
||||||
MONITOR_PORT=3011
|
MONITOR_PORT=3011
|
||||||
MONITOR_BRIDGE_NAME=bridge
|
MONITOR_BRIDGE_NAME=bridge
|
||||||
|
MONITOR_CACHE_EVENTS=false
|
||||||
|
@ -17,3 +17,4 @@ COMMON_FOREIGN_GAS_PRICE_FACTOR=1
|
|||||||
MONITOR_TX_NUMBER_THRESHOLD=100
|
MONITOR_TX_NUMBER_THRESHOLD=100
|
||||||
MONITOR_PORT=3010
|
MONITOR_PORT=3010
|
||||||
MONITOR_BRIDGE_NAME=bridge
|
MONITOR_BRIDGE_NAME=bridge
|
||||||
|
MONITOR_CACHE_EVENTS=false
|
||||||
|
@ -21,3 +21,4 @@ COMMON_FOREIGN_GAS_PRICE_FACTOR=1
|
|||||||
|
|
||||||
MONITOR_TX_NUMBER_THRESHOLD=100
|
MONITOR_TX_NUMBER_THRESHOLD=100
|
||||||
MONITOR_PORT=3003
|
MONITOR_PORT=3003
|
||||||
|
MONITOR_CACHE_EVENTS=true
|
||||||
|
@ -16,12 +16,14 @@ const {
|
|||||||
} = require('../../commons')
|
} = require('../../commons')
|
||||||
const { normalizeEventInformation } = require('./message')
|
const { normalizeEventInformation } = require('./message')
|
||||||
const { filterTransferBeforeES } = require('./tokenUtils')
|
const { filterTransferBeforeES } = require('./tokenUtils')
|
||||||
|
const { writeFile, readCacheFile } = require('./file')
|
||||||
|
|
||||||
const {
|
const {
|
||||||
COMMON_HOME_RPC_URL,
|
COMMON_HOME_RPC_URL,
|
||||||
COMMON_FOREIGN_RPC_URL,
|
COMMON_FOREIGN_RPC_URL,
|
||||||
COMMON_HOME_BRIDGE_ADDRESS,
|
COMMON_HOME_BRIDGE_ADDRESS,
|
||||||
COMMON_FOREIGN_BRIDGE_ADDRESS
|
COMMON_FOREIGN_BRIDGE_ADDRESS,
|
||||||
|
MONITOR_CACHE_EVENTS
|
||||||
} = process.env
|
} = process.env
|
||||||
const MONITOR_HOME_START_BLOCK = toBN(Number(process.env.MONITOR_HOME_START_BLOCK) || 0)
|
const MONITOR_HOME_START_BLOCK = toBN(Number(process.env.MONITOR_HOME_START_BLOCK) || 0)
|
||||||
const MONITOR_FOREIGN_START_BLOCK = toBN(Number(process.env.MONITOR_FOREIGN_START_BLOCK) || 0)
|
const MONITOR_FOREIGN_START_BLOCK = toBN(Number(process.env.MONITOR_FOREIGN_START_BLOCK) || 0)
|
||||||
@ -34,7 +36,17 @@ const web3Foreign = new Web3(foreignProvider)
|
|||||||
|
|
||||||
const { getBlockNumber } = require('./contract')
|
const { getBlockNumber } = require('./contract')
|
||||||
|
|
||||||
|
const cacheFilePath = '/tmp/cachedEvents.json'
|
||||||
async function main(mode) {
|
async function main(mode) {
|
||||||
|
if (MONITOR_CACHE_EVENTS === 'true') {
|
||||||
|
logger.debug('checking existing events cache')
|
||||||
|
const cachedEvents = readCacheFile(cacheFilePath)
|
||||||
|
if (cachedEvents !== false) {
|
||||||
|
logger.debug('returning events stored in cache')
|
||||||
|
return cachedEvents
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const homeErcBridge = new web3Home.eth.Contract(HOME_ERC_TO_ERC_ABI, COMMON_HOME_BRIDGE_ADDRESS)
|
const homeErcBridge = new web3Home.eth.Contract(HOME_ERC_TO_ERC_ABI, COMMON_HOME_BRIDGE_ADDRESS)
|
||||||
const bridgeMode = mode || (await getBridgeMode(homeErcBridge))
|
const bridgeMode = mode || (await getBridgeMode(homeErcBridge))
|
||||||
const { HOME_ABI, FOREIGN_ABI } = getBridgeABIs(bridgeMode)
|
const { HOME_ABI, FOREIGN_ABI } = getBridgeABIs(bridgeMode)
|
||||||
@ -170,7 +182,7 @@ async function main(mode) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
logger.debug('Done')
|
logger.debug('Done')
|
||||||
return {
|
const result = {
|
||||||
homeToForeignRequests,
|
homeToForeignRequests,
|
||||||
homeToForeignConfirmations,
|
homeToForeignConfirmations,
|
||||||
foreignToHomeConfirmations,
|
foreignToHomeConfirmations,
|
||||||
@ -178,6 +190,12 @@ async function main(mode) {
|
|||||||
isExternalErc20,
|
isExternalErc20,
|
||||||
bridgeMode
|
bridgeMode
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (MONITOR_CACHE_EVENTS === 'true') {
|
||||||
|
logger.debug('saving obtained events into cache file')
|
||||||
|
writeFile(cacheFilePath, result, false)
|
||||||
|
}
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = main
|
module.exports = main
|
||||||
|
@ -15,8 +15,9 @@ async function readFile(filePath) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function writeFile(filePath, object) {
|
function writeFile(filePath, object, useCwd = true) {
|
||||||
fs.writeFileSync(path.join(process.cwd(), filePath), JSON.stringify(object, null, 4))
|
const fullPath = useCwd ? path.join(process.cwd(), filePath) : filePath
|
||||||
|
fs.writeFileSync(fullPath, JSON.stringify(object, null, 4))
|
||||||
}
|
}
|
||||||
|
|
||||||
function createDir(dirPath) {
|
function createDir(dirPath) {
|
||||||
@ -29,8 +30,17 @@ function createDir(dirPath) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function readCacheFile(filePath) {
|
||||||
|
try {
|
||||||
|
return JSON.parse(fs.readFileSync(filePath))
|
||||||
|
} catch (_) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
readFile,
|
readFile,
|
||||||
writeFile,
|
writeFile,
|
||||||
createDir
|
createDir,
|
||||||
|
readCacheFile
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user