diff --git a/piker/clearing/_ems.py b/piker/clearing/_ems.py index 6c49b8e9..d452daac 100644 --- a/piker/clearing/_ems.py +++ b/piker/clearing/_ems.py @@ -388,6 +388,7 @@ async def open_brokerd_dialog( for ep_name in [ 'open_trade_dialog', # probably final name? 'trades_dialogue', # legacy + # ^!TODO, rm this since all backends ported no ?!? ]: trades_endpoint = getattr( brokermod, @@ -1019,8 +1020,18 @@ async def translate_and_relay_brokerd_events( ) if status == 'closed': - log.info(f'Execution for {oid} is complete!') - status_msg = book._active.pop(oid) + log.info( + f'Execution is complete!\n' + f'oid: {oid!r}\n' + ) + status_msg = book._active.pop(oid, None) + if status_msg is None: + log.warning( + f'Order was already cleared from book ??\n' + f'oid: {oid!r}\n' + f'\n' + f'Maybe the order cancelled before submitted ??\n' + ) elif status == 'canceled': log.cancel(f'Cancellation for {oid} is complete!') @@ -1544,19 +1555,18 @@ async def maybe_open_trade_relays( @tractor.context async def _emsd_main( - ctx: tractor.Context, + ctx: tractor.Context, # becomes `ems_ctx` below fqme: str, exec_mode: str, # ('paper', 'live') loglevel: str|None = None, -) -> tuple[ - dict[ - # brokername, acctid - tuple[str, str], +) -> tuple[ # `ctx.started()` value! + dict[ # positions + tuple[str, str], # brokername, acctid list[BrokerdPosition], ], - list[str], - dict[str, Status], + list[str], # accounts + dict[str, Status], # dialogs ]: ''' EMS (sub)actor entrypoint providing the execution management