From aeacca273d0400c2e916cb9f97c47fc74b126991 Mon Sep 17 00:00:00 2001 From: Tuna Date: Thu, 25 Jul 2019 11:43:54 +0700 Subject: [PATCH] remove processed order in mongodb, only keep cancelled order --- tomox/tomox.go | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/tomox/tomox.go b/tomox/tomox.go index dd6b2254c502..7f26ec429d06 100644 --- a/tomox/tomox.go +++ b/tomox/tomox.go @@ -755,7 +755,7 @@ func (tomox *TomoX) CancelOrder(order *OrderItem, dryrun bool) error { return err } if o := tomox.getOrderPending(order.Hash); o != nil { - if err := tomox.removeOrderPending(order.Hash); err != nil { + if err := tomox.cancelOrderPending(order.Hash); err != nil { return err } } @@ -912,12 +912,12 @@ func (tomox *TomoX) addOrderPending(order *OrderItem) error { return nil } -func (tomox *TomoX) removeOrderPending(orderHash common.Hash) error { +func (tomox *TomoX) cancelOrderPending(orderHash common.Hash) error { prefix := []byte(pendingPrefix) key := append(prefix, orderHash.Bytes()...) - log.Debug("Remove order pending", "orderHash", orderHash, "key", hex.EncodeToString(key)) + log.Debug("Cancel order pending", "orderHash", orderHash, "key", hex.EncodeToString(key)) if tomox.IsSDKNode() { - log.Debug("Update order status to CANCELLED", "orderHash", orderHash) + log.Debug("Update order status to CANCELLED in sdk node", "orderHash", orderHash) data, err := tomox.db.Get(key, &OrderItem{}, false) if err != nil || data == nil { log.Error("Order doesn't exist in pending", "orderHash", orderHash, "err", err) @@ -926,7 +926,6 @@ func (tomox *TomoX) removeOrderPending(orderHash common.Hash) error { switch data.(type) { case *OrderItem: o := data.(*OrderItem) - //change status to CANCELLED then put it back to DB o.Status = Cancel if err = tomox.db.Put(key, o, false); err != nil { log.Error("Can't update order status in mongo", "err", err) @@ -945,6 +944,28 @@ func (tomox *TomoX) removeOrderPending(orderHash common.Hash) error { return nil } +func (tomox *TomoX) removeOrderPending(orderHash common.Hash) error { + prefix := []byte(pendingPrefix) + key := append(prefix, orderHash.Bytes()...) + log.Debug("Remove order pending", "orderHash", orderHash, "key", hex.EncodeToString(key)) + data, err := tomox.db.Get(key, &OrderItem{}, false) + if err != nil || data == nil { + log.Error("Order doesn't exist in pending", "orderHash", orderHash, "err", err) + return err + } + switch data.(type) { + case *OrderItem: + if err := tomox.db.Delete(key, false); err != nil { + log.Error("Fail to delete order pending", "err", err) + return err + } + default: + return fmt.Errorf("Order is corrupted") + } + + return nil +} + func (tomox *TomoX) addPendingHash(orderHash common.Hash) error { log.Debug("Add pending hash", "orderHash", orderHash) pendingHashes := tomox.getPendingHashes()