mirror of
git://holbrook.no/eth-monitor.git
synced 2024-11-26 21:36:45 +01:00
Add state rundir with block height output
This commit is contained in:
parent
a29ae35597
commit
2a54256821
@ -2,6 +2,7 @@
|
|||||||
* Skip rules filter processing for cache when deactivated
|
* Skip rules filter processing for cache when deactivated
|
||||||
* Add match-all flag to rule processing
|
* Add match-all flag to rule processing
|
||||||
* Add match-all flag to CLI to toggle setting match_all flag to rule processing for include criteria
|
* Add match-all flag to CLI to toggle setting match_all flag to rule processing for include criteria
|
||||||
|
* Implement state dir (rundir), and last synced block output
|
||||||
- 0.8.7
|
- 0.8.7
|
||||||
* Upgrade chainsyncer (and shep) to avoid state deletion on partial filter list interrupts
|
* Upgrade chainsyncer (and shep) to avoid state deletion on partial filter list interrupts
|
||||||
- 0.8.6
|
- 0.8.6
|
||||||
|
@ -34,3 +34,4 @@ def process_args(argparser, args, flags):
|
|||||||
|
|
||||||
# misc flags
|
# misc flags
|
||||||
argparser.add_argument('-k', '--context-key', dest='context_key', action='append', type=str, help='Add a key-value pair to be added to the context')
|
argparser.add_argument('-k', '--context-key', dest='context_key', action='append', type=str, help='Add a key-value pair to be added to the context')
|
||||||
|
argparser.add_argument('--run-dir', type=str, dest='run_dir', help='Output key sync and processing state properties to given diretory')
|
||||||
|
@ -56,6 +56,7 @@ def process_config(config, arg, args, flags):
|
|||||||
|
|
||||||
config.add(getattr(args, 'session_id'), '_SESSION_ID', False)
|
config.add(getattr(args, 'session_id'), '_SESSION_ID', False)
|
||||||
config.add(getattr(args, 'cache_dir'), '_CACHE_DIR', False)
|
config.add(getattr(args, 'cache_dir'), '_CACHE_DIR', False)
|
||||||
|
config.add(getattr(args, 'run_dir'), '_RUN_DIR', False)
|
||||||
config.add(getattr(args, 'fresh'), '_FRESH', False)
|
config.add(getattr(args, 'fresh'), '_FRESH', False)
|
||||||
|
|
||||||
return config
|
return config
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
# standard imports
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
class Filter:
|
class Filter:
|
||||||
|
|
||||||
def __init__(self, store, include_block_data=False):
|
def __init__(self, store, include_block_data=False):
|
||||||
@ -5,5 +9,5 @@ class Filter:
|
|||||||
self.include_block_data = include_block_data
|
self.include_block_data = include_block_data
|
||||||
|
|
||||||
|
|
||||||
def filter(self, conn, block):
|
def filter(self, conn, block, **kwargs):
|
||||||
self.store.put_block(block, include_data=self.include_block_data)
|
self.store.put_block(block, include_data=self.include_block_data)
|
||||||
|
16
eth_monitor/filters/run.py
Normal file
16
eth_monitor/filters/run.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# standard imports
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
|
class Filter:
|
||||||
|
|
||||||
|
def __init__(self, run_dir):
|
||||||
|
self.run_dir = run_dir
|
||||||
|
self.fp = os.path.join(run_dir, 'block')
|
||||||
|
|
||||||
|
|
||||||
|
def filter(self, conn, block):
|
||||||
|
f = open(self.fp, 'w')
|
||||||
|
f.write(str(block.number))
|
||||||
|
f.close()
|
||||||
|
return False
|
17
eth_monitor/run.py
Normal file
17
eth_monitor/run.py
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# standard imports
|
||||||
|
import os
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logg = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def cleanup_run(settings):
|
||||||
|
if not settings.get('RUN_OUT'):
|
||||||
|
return
|
||||||
|
lockfile = os.path.join(settings.get('RUN_DIR'), '.lock')
|
||||||
|
os.unlink(lockfile)
|
||||||
|
logg.debug('freed rundir {}'.format(settings.get('RUN_DIR')))
|
||||||
|
|
||||||
|
|
||||||
|
def cleanup(settings):
|
||||||
|
cleanup_run(settings)
|
@ -47,6 +47,7 @@ from eth_monitor.callback import (
|
|||||||
import eth_monitor.cli
|
import eth_monitor.cli
|
||||||
from eth_monitor.cli.log import process_log
|
from eth_monitor.cli.log import process_log
|
||||||
from eth_monitor.settings import process_settings as process_settings_local
|
from eth_monitor.settings import process_settings as process_settings_local
|
||||||
|
from eth_monitor.run import cleanup
|
||||||
|
|
||||||
logg = logging.getLogger()
|
logg = logging.getLogger()
|
||||||
|
|
||||||
@ -111,6 +112,8 @@ def main():
|
|||||||
except SyncDone as e:
|
except SyncDone as e:
|
||||||
sys.stderr.write("sync {} done at block {}\n".format(drv, e))
|
sys.stderr.write("sync {} done at block {}\n".format(drv, e))
|
||||||
|
|
||||||
|
cleanup(settings)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -34,6 +34,7 @@ from eth_monitor.filters.cache import Filter as CacheFilter
|
|||||||
from eth_monitor.config import override, list_from_prefix
|
from eth_monitor.config import override, list_from_prefix
|
||||||
from eth_monitor.filters.out import OutFilter
|
from eth_monitor.filters.out import OutFilter
|
||||||
from eth_monitor.filters.block import Filter as BlockFilter
|
from eth_monitor.filters.block import Filter as BlockFilter
|
||||||
|
from eth_monitor.filters.run import Filter as RunFilter
|
||||||
|
|
||||||
logg = logging.getLogger(__name__)
|
logg = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -47,6 +48,32 @@ def process_monitor_session(settings, config):
|
|||||||
session_id = 'default'
|
session_id = 'default'
|
||||||
|
|
||||||
settings.set('SESSION_ID', session_id)
|
settings.set('SESSION_ID', session_id)
|
||||||
|
settings.set('SESSION_OK', True)
|
||||||
|
return settings
|
||||||
|
|
||||||
|
|
||||||
|
def process_monitor_rundir(settings, config):
|
||||||
|
settings.set('RUN_OUT', False)
|
||||||
|
if config.get('_RUN_DIR') == None:
|
||||||
|
return settings
|
||||||
|
|
||||||
|
run_dir = config.get('_RUN_DIR')
|
||||||
|
try:
|
||||||
|
os.makedirs(run_dir, exist_ok=True)
|
||||||
|
except Exception as e:
|
||||||
|
logg.error('could not create run dir, deactivating run output: ' + str(e))
|
||||||
|
return settings
|
||||||
|
|
||||||
|
lockfile = os.path.join(run_dir, '.lock')
|
||||||
|
try:
|
||||||
|
f = open(lockfile, 'x')
|
||||||
|
f.close()
|
||||||
|
except FileExistsError:
|
||||||
|
logg.error('run dir {} is already in use, deactivating run output'.format(run_dir))
|
||||||
|
return settings
|
||||||
|
|
||||||
|
settings.set('RUN_OUT', True)
|
||||||
|
settings.set('RUN_DIR', run_dir)
|
||||||
return settings
|
return settings
|
||||||
|
|
||||||
|
|
||||||
@ -288,6 +315,14 @@ def process_cache_filter(settings, config):
|
|||||||
return settings
|
return settings
|
||||||
|
|
||||||
|
|
||||||
|
def process_run_filter(settings, config):
|
||||||
|
if not settings.get('RUN_OUT'):
|
||||||
|
return settings
|
||||||
|
fltr = RunFilter(settings.get('RUN_DIR'))
|
||||||
|
hndlr = settings.get('BLOCK_HANDLER')
|
||||||
|
hndlr.register(fltr)
|
||||||
|
return settings
|
||||||
|
|
||||||
def process_tx_filter(settings, config):
|
def process_tx_filter(settings, config):
|
||||||
for fltr in list_from_prefix(config, 'filter'):
|
for fltr in list_from_prefix(config, 'filter'):
|
||||||
m = importlib.import_module(fltr)
|
m = importlib.import_module(fltr)
|
||||||
@ -335,6 +370,7 @@ def process_filter(settings, config):
|
|||||||
settings = process_renderer(settings, config)
|
settings = process_renderer(settings, config)
|
||||||
settings = process_block_filter(settings, config)
|
settings = process_block_filter(settings, config)
|
||||||
settings = process_cache_filter(settings, config)
|
settings = process_cache_filter(settings, config)
|
||||||
|
settings = process_run_filter(settings, config)
|
||||||
settings = process_tx_filter(settings, config)
|
settings = process_tx_filter(settings, config)
|
||||||
settings = process_out_filter(settings, config)
|
settings = process_out_filter(settings, config)
|
||||||
settings = process_arg_filter(settings, config)
|
settings = process_arg_filter(settings, config)
|
||||||
@ -383,6 +419,7 @@ def process_user_context(settings, config):
|
|||||||
ctx_usr[k] = v
|
ctx_usr[k] = v
|
||||||
ctx = {
|
ctx = {
|
||||||
'driver': 'eth-monitor',
|
'driver': 'eth-monitor',
|
||||||
|
'rundir': settings.get('RUN_DIR'),
|
||||||
'usr': ctx_usr,
|
'usr': ctx_usr,
|
||||||
}
|
}
|
||||||
settings.set('SYNCER_CONTEXT', ctx)
|
settings.set('SYNCER_CONTEXT', ctx)
|
||||||
@ -392,6 +429,7 @@ def process_user_context(settings, config):
|
|||||||
def process_settings(settings, config):
|
def process_settings(settings, config):
|
||||||
settings = process_monitor_session(settings, config)
|
settings = process_monitor_session(settings, config)
|
||||||
settings = process_monitor_session_dir(settings, config)
|
settings = process_monitor_session_dir(settings, config)
|
||||||
|
settings = process_monitor_rundir(settings, config)
|
||||||
settings = process_arg_rules(settings, config)
|
settings = process_arg_rules(settings, config)
|
||||||
settings = process_sync(settings, config)
|
settings = process_sync(settings, config)
|
||||||
settings = process_cache(settings, config)
|
settings = process_cache(settings, config)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[metadata]
|
[metadata]
|
||||||
name = eth-monitor
|
name = eth-monitor
|
||||||
version = 0.8.7
|
version = 0.8.8
|
||||||
description = Monitor and cache transactions using match filters
|
description = Monitor and cache transactions using match filters
|
||||||
author = Louis Holbrook
|
author = Louis Holbrook
|
||||||
author_email = dev@holbrook.no
|
author_email = dev@holbrook.no
|
||||||
|
Loading…
Reference in New Issue
Block a user