diff --git a/src/dexorder/order/orderstate.py b/src/dexorder/order/orderstate.py index 6f73486..44db7c0 100644 --- a/src/dexorder/order/orderstate.py +++ b/src/dexorder/order/orderstate.py @@ -178,15 +178,19 @@ class Order: if self.is_open: Order.open_orders.remove(self.key) Order.vault_open_orders.listremove(self.key.vault, self.key.order_index) - # set final fill values in the status - of = Order.order_filled[self.key] - order_log.debug(f'deleting order_filled[{self.key}]') - del Order.order_filled[self.key] - status.filledIn = of.filled.filled_in - status.filledOut = of.filled.filled_out - for i, tf in enumerate(of.tranche_filled): - status.trancheFilledIn[i] += of.tranche_filled[i].filled_in - status.trancheFilledOut[i] += of.tranche_filled[i].filled_out + try: + # set final fill values in the status + of = Order.order_filled[self.key] + except KeyError: + log.warning(f'While completing with status {final_state}, no order fills found for {self.key}') + else: + order_log.debug(f'deleting order_filled[{self.key}]') + del Order.order_filled[self.key] + status.filledIn = of.filled.filled_in + status.filledOut = of.filled.filled_out + for i, tf in enumerate(of.tranche_filled): + status.trancheFilledIn[i] += of.tranche_filled[i].filled_in + status.trancheFilledOut[i] += of.tranche_filled[i].filled_out Order.order_statuses[self.key] = status # set the status in order to save it Order.order_statuses.unload(self.key) # but then unload from memory after root promotion order_log.debug(f'order completed {status}')