initial redis state load doesn't use pipeline now, because it overflowed.
This commit is contained in:
@@ -7,6 +7,7 @@ from dexorder.blocks import current_block, get_block
|
||||
from dexorder.blockstate import current_blockstate
|
||||
from dexorder.blockstate.blockdata import BlockData
|
||||
from dexorder.blockstate.db_state import DbState
|
||||
from dexorder.blockstate.fork import current_fork
|
||||
from dexorder.contract.dexorder import VaultContract
|
||||
from dexorder.order.orderstate import Order
|
||||
from dexorder.tokens import adjust_decimals
|
||||
@@ -66,10 +67,11 @@ async def main(args: list):
|
||||
db_state = DbState(BlockData.by_opt('db'))
|
||||
with db.transaction():
|
||||
state = await db_state.load()
|
||||
state.readonly = True
|
||||
# state.readonly = True
|
||||
current_blockstate.set(state)
|
||||
block = await get_block(state.root_hash)
|
||||
current_block.set(block)
|
||||
current_fork.set(state.root_fork)
|
||||
await subcommand(parsed)
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import logging
|
||||
from collections import defaultdict
|
||||
from typing import Iterable, Union, Reversible, Any
|
||||
|
||||
from redis.asyncio.client import Pipeline
|
||||
from redis.asyncio.client import Pipeline, Redis
|
||||
from socket_io_emitter import Emitter
|
||||
|
||||
from dexorder import DELETE
|
||||
@@ -91,20 +91,19 @@ class RedisState (SeriesCollection):
|
||||
hsets[series][key] = value
|
||||
else:
|
||||
raise NotImplementedError
|
||||
async with memcache.batch() as r:
|
||||
r: Pipeline
|
||||
for series, keys in sadds.items():
|
||||
r.sadd(series, *keys)
|
||||
for series, keys in sdels.items():
|
||||
r.srem(series, *keys)
|
||||
for series, kvs in hsets.items():
|
||||
r.hset(series, mapping=kvs)
|
||||
for series, keys in hdels.items():
|
||||
r.hdel(series, *keys)
|
||||
block_series = f'{chain_id}|head'
|
||||
headstr = hexstr(fork.head)
|
||||
r.json(json_encoder).set(block_series,'$',[fork.height, headstr])
|
||||
pubs.append((str(chain_id), 'head', [fork.height, headstr]))
|
||||
r: Redis = current_redis.get()
|
||||
for series, keys in sadds.items():
|
||||
await r.sadd(series, *keys)
|
||||
for series, keys in sdels.items():
|
||||
await r.srem(series, *keys)
|
||||
for series, kvs in hsets.items():
|
||||
await r.hset(series, mapping=kvs)
|
||||
for series, keys in hdels.items():
|
||||
await r.hdel(series, *keys)
|
||||
block_series = f'{chain_id}|head'
|
||||
headstr = hexstr(fork.head)
|
||||
await r.json(json_encoder).set(block_series,'$',[fork.height, headstr])
|
||||
pubs.append((str(chain_id), 'head', [fork.height, headstr]))
|
||||
# separate batch for pubs
|
||||
if pubs:
|
||||
await publish_all(pubs)
|
||||
|
||||
Reference in New Issue
Block a user