Implement syncer context

This commit is contained in:
lash 2023-08-06 19:32:10 +01:00
parent 270a35bada
commit 39ee38b0dc
Signed by: lash
GPG Key ID: 21D2E7BB88C2A746
10 changed files with 75 additions and 4 deletions

View File

@ -1,3 +1,6 @@
- 0.8.1
* Implement syncer context
* Add key-value parameter for cli, environment, config to pass to syncer context
- 0.8.0
* Implement RPC batch limits for syncer
- 0.7.6

17
WAIVER Normal file
View File

@ -0,0 +1,17 @@
# Copyright waiver for the python package "eth-monitor"
I dedicate any and all copyright interest in this software to the
public domain. I make this dedication for the benefit of the public at
large and to the detriment of my heirs and successors. I intend this
dedication to be an overt act of relinquishment in perpetuity of all
present and future rights to this software under copyright law.
To the best of my knowledge and belief, my contributions are either
originally authored by me or are derived from prior works which I have
verified are also in the public domain and are not subject to claims
of copyright by other parties.
To the best of my knowledge and belief, no individual, business,
organization, government, or other entity has any copyright interest
in my contributions, and I affirm that I will not make contributions
that are otherwise encumbered.

29
WAIVER.asc Normal file
View File

@ -0,0 +1,29 @@
-----BEGIN PGP MESSAGE-----
owGVU39QFFUc58fFwHYYYvwq0cfPoO6umsoEJgMJ4wQVGn7IiMje3ru7B7e7d/vj
rmMwS7iwMPImp8LUIGdATWgsHamjyYCQPGZkYEIkQ7QcEobRVIYGTXu7B2r1V3/c
zO2+7/fz8+2uYH+fQN+YwQn3jq7WNb5t/rwuoDhDW5T1GmW96YwDmazFwSGjSQB2
EtkgBwwsBwQTBBaHYGIZYCGpStIIQSwUTGqaZZDAcrEEoQV6qEcUKUBAMg780wPS
bAbUPTTECJCDvPQHwyEe8KxBsJMcBAIr4RMWUWdGFNCzNIkYDdACmqyE3tF5aITp
F9ToIAMNSACswSvOu0wKhJnkjFDm9+LiZYFDNGTkWdoBTBBxvDzAixQFeZ7leIlO
EihtYULiAUKMopPwAIvDEABJyTgcNCPGKiLeJCNjTxbIWaAgIsEhnWPvhAXblQ4l
KoMoiNiqHAXvVfZgBCKjx0nfD8tM2jUEUcDOW+UXtFcyrN0M9fMGdVgENKikA4pl
sEudKEnG5jAkRHiXI1gMiBgsB3ci4gI5iPccgIYABynNYWJcM1bIsTSwcAi/trNc
JQ/sJkSZcC4m0gYJ7B0ZEB6TVkgzz3prvBe8tzVv7XiCYQWcrq4C4rSwWcpMIpon
sIf7FrEIVlKILxQnIMj/D7+MxK5HNqQXSbMK6EQeMbhHFTZrJBlUJRenAkapMUbq
RyWZ9bLhJ6kiE8nL9/S/95PANv4dqEqm1wLSYEAcjUWSAn6yI3zBJafyRf3HAiGP
SEnIrHbE40IYSqR1mEOvId7xe07h4xvoEx0eowhMnG62qJfV9V6qy1/4LB/ykz5G
HyIoZOFNd90jtxQHErIvnUw+crf7TkR7+uXvTo3EF1TtnJoq72mEuYl96unSuZCI
8zDj9Ppjm3unPFlP3bg9Xp7KbOskM5OuG/6ccl17V/vsiLt4Q8qXnujZjceO1Mwe
3fHm1pOhqc6WU+uvDpS8Yu+mF/kPLEkqVuZuGdwY3DFdv51uSPg0Mj8kq93xbQfV
8Jerv+tVpXbvocLG1LSKQ+1Lgt8W7dd+y94VUNZ6Tlml73um+pfhbfqBmR/O1nKj
YQH7xjTllr7C1V2LfdTDdfFXnwbWE4teyEmfW5wUalwXPe23O/r7nJXvryrpWD4G
n3j8p6HkweaalIuPOXO+2fTh5pSgioo97tKZccVeNTFX+YHxRubnEVHK30d2Hld0
Dm1tWXewv35Prtv3eJNr7mNdUUZV650y99qm/ZdbHK9PehJXwpnJ0WXh8KP86pzc
ULfTj7bF6iOjFNn7mtq+GA8vS9mdN7G6wDX86IraTav+CANKD3K+cdD/4X5Tz+TR
puaCHyeH2p8nn7yotqTF5sc3xrV+0tOpGdgf1G1962bRr4eXj4vp9FiYx2rz+FWt
Ma14ObL5q3Mp57dUO/NqPjszd/tKEGcLnTibfCu9ovGMUFLa67owU852LVXWD96d
bLii2B7cdjhG8+KGn8vFAy+9N+tKczgzHa64wrxGd28XuzQ1avpEWu7Xa1NrL4Se
TrDqRq//DQ==
=yHWM
-----END PGP MESSAGE-----

View File

@ -30,3 +30,6 @@ def process_args(argparser, args, flags):
argparser.add_argument('--store-tx-data', action='store_true', dest='store_tx_data', help='Store tx data in cache store')
argparser.add_argument('--store-block-data', action='store_true', dest='store_block_data', help='Store block data in cache store')
argparser.add_argument('--fresh', action='store_true', help='Do not read block and tx data from cache, even if available')
# 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')

View File

@ -38,6 +38,8 @@ def process_config(config, arg, args, flags):
arg_override['ETHMONITOR_STATE_DIR'] = getattr(args, 'state_dir')
arg_override['ETHMONITOR_CONTEXT_KEY'] = getattr(args, 'context_key')
arg_override['ETHCACHE_STORE_BLOCK'] = getattr(args, 'store_block_data')
arg_override['ETHCACHE_STORE_TX'] = getattr(args, 'store_tx_data')

View File

@ -18,3 +18,4 @@ filter =
block_filter =
include_default = 0
state_dir = ./.eth-monitor
context_key =

View File

@ -85,6 +85,7 @@ config.add_schema_dir(chainsyncer_config_dir)
config = process_config(config, arg, args, flags)
config = process_config_sync(config, arg, args, flags)
config = eth_monitor.cli.process_config(config, arg, args, flags)
logg.debug('loaded config:\n{}'.format(config))
settings = ChainSettings()
settings = process_settings(settings, config)
@ -95,6 +96,7 @@ logg.debug('loaded settings:\n{}'.format(settings))
def main():
logg.info('session is {}'.format(settings.get('SESSION_ID')))
drv = ChainInterfaceDriver(
settings.get('SYNC_STORE'),
settings.get('SYNCER_INTERFACE'),
@ -104,9 +106,9 @@ def main():
post_callback=post_callback,
block_callback=settings.get('BLOCK_HANDLER').filter,
)
try:
r = drv.run(settings.get('CONN'))
r = drv.run(settings.get('CONN'), ctx=settings.get('SYNCER_CONTEXT'))
except SyncDone as e:
sys.stderr.write("sync {} done at block {}\n".format(drv, e))

View File

@ -380,11 +380,25 @@ def process_cache(settings, config):
return settings
def process_user_context(settings, config):
ctx_usr = {}
for kv in config.get('ETHMONITOR_CONTEXT_KEY'):
(k, v) = kv.split('=', 1)
ctx_usr[k] = v
ctx = {
'driver': 'eth-monitor',
'usr': ctx_usr,
}
settings.set('SYNCER_CONTEXT', ctx)
return settings
def process_settings(settings, config):
settings = process_monitor_session(settings, config)
settings = process_monitor_session_dir(settings, config)
settings = process_arg_rules(settings, config)
settings = process_sync(settings, config)
settings = process_cache(settings, config)
settings = process_user_context(settings, config)
settings = process_filter(settings, config)
return settings

View File

@ -1,6 +1,6 @@
chainlib-eth~=0.5.0
chainlib~=0.5.0
chainsyncer~=0.8.0
chainsyncer~=0.8.1
leveldir~=0.3.0
eth-cache~=0.3.0
confini~=0.6.3

View File

@ -1,6 +1,6 @@
[metadata]
name = eth-monitor
version = 0.8.0
version = 0.8.1
description = Monitor and cache transactions using match filters
author = Louis Holbrook
author_email = dev@holbrook.no