Add signer liveness check

This commit is contained in:
nolash 2021-04-23 22:39:56 +02:00
parent e914569c8d
commit 2320a6b39b
Signed by untrusted user who does not match committer: lash
GPG Key ID: 21D2E7BB88C2A746
6 changed files with 36 additions and 5 deletions

View File

@ -1,5 +1,6 @@
from cic_eth.db.models.base import SessionBase from cic_eth.db.models.base import SessionBase
def health(*args, **kwargs): def health(*args, **kwargs):
session = SessionBase.create_session() session = SessionBase.create_session()
session.execute('SELECT count(*) from alembic_version') session.execute('SELECT count(*) from alembic_version')

View File

@ -0,0 +1,26 @@
# standard imports
import logging
from urllib.error import URLError
# external imports
from chainlib.connection import RPCConnection
from chainlib.eth.constant import ZERO_ADDRESS
from chainlib.eth.sign import sign_message
from chainlib.error import JSONRPCException
logg = logging.getLogger().getChild(__name__)
def health(*args, **kwargs):
conn = RPCConnection.connect(kwargs['config'].get('CIC_CHAIN_SPEC'), tag='signer')
try:
conn.do(sign_message(ZERO_ADDRESS, '0x2a'))
except FileNotFoundError:
return False
except ConnectionError:
return False
except URLError:
return False
except JSONRPCException as e:
pass
return True

View File

@ -140,14 +140,15 @@ else:
chain_spec = ChainSpec.from_chain_str(config.get('CIC_CHAIN_SPEC')) chain_spec = ChainSpec.from_chain_str(config.get('CIC_CHAIN_SPEC'))
RPCConnection.register_location(config.get('ETH_PROVIDER'), chain_spec, 'default') RPCConnection.register_location(config.get('ETH_PROVIDER'), chain_spec, 'default')
RPCConnection.register_location(config.get('SIGNER_SOCKET_PATH'), chain_spec, 'signer', constructor=EthUnixSignerConnection) #RPCConnection.register_location(config.get('SIGNER_SOCKET_PATH'), chain_spec, 'signer', constructor=EthUnixSignerConnection)
RPCConnection.register_location(config.get('SIGNER_SOCKET_PATH'), chain_spec, 'signer')
Otx.tracing = config.true('TASKS_TRACE_QUEUE_STATUS') Otx.tracing = config.true('TASKS_TRACE_QUEUE_STATUS')
#import cic_eth.checks.gas #import cic_eth.checks.gas
#if not cic_eth.checks.gas.health(config=config): #if not cic_eth.checks.gas.health(config=config):
# raise RuntimeError() # raise RuntimeError()
liveness.linux.load(health_modules, config=config) liveness.linux.load(health_modules, rundir=config.get('CIC_RUN_DIR'), config=config)
def main(): def main():
argv = ['worker'] argv = ['worker']

View File

@ -3,4 +3,5 @@ registry_address =
chain_spec = evm:bloxberg:8996 chain_spec = evm:bloxberg:8996
tx_retry_delay = tx_retry_delay =
trust_address = trust_address =
health_modules = cic_eth.check.db,cic_eth.check.gas health_modules = cic_eth.check.db,cic_eth.check.signer,cic_eth.check.gas
run_dir = /run

View File

@ -3,3 +3,5 @@ registry_address =
chain_spec = evm:bloxberg:8996 chain_spec = evm:bloxberg:8996
trust_address = 0xEb3907eCad74a0013c259D5874AE7f22DcBcC95C trust_address = 0xEb3907eCad74a0013c259D5874AE7f22DcBcC95C
tx_retry_delay = 20 tx_retry_delay = 20
health_modules = cic_eth.check.db,cic_eth.check.signer,cic_eth.check.gas
run_dir = /run

View File

@ -1,6 +1,6 @@
cic-base==0.1.2a79+build.d412618d cic-base==0.1.2b1
celery==4.4.7 celery==4.4.7
crypto-dev-signer~=0.4.14b2 crypto-dev-signer~=0.4.14b3
confini~=0.3.6rc3 confini~=0.3.6rc3
cic-eth-registry~=0.5.4a16 cic-eth-registry~=0.5.4a16
#cic-bancor~=0.0.6 #cic-bancor~=0.0.6