Skip to content

Commit

Permalink
Hotfix/symbol log (#233)
Browse files Browse the repository at this point in the history
* remive curl

* ignore curl.sh

* add log params to all logs

* fix log param order

* add symbol to log events quote beginSwap and swapStarted

* add model and side to swap events, return swap object for logs

* fix test, decap swapStarted event

* fix beginSwap to have symbol
  • Loading branch information
uv-orbs authored Jul 15, 2024
1 parent 51fda4d commit ef18323
Show file tree
Hide file tree
Showing 13 changed files with 45 additions and 53 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,5 @@ override.tf.json
.terraformrc
terraform.rc
tfplan
api_key.txt
api_key.txt
curl.sh
12 changes: 6 additions & 6 deletions data/redisrepo/store_new_pending_swap.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,22 @@ import (
)

// StoreNewPendingSwap stores a new pending swap in order for its status (pending/complete) to be checked later
func (r *redisRepository) StoreNewPendingSwap(ctx context.Context, p models.SwapTx) error {
func (r *redisRepository) StoreNewPendingSwap(ctx context.Context, p models.SwapTx) (*models.Swap, error) {
// confirm swapID is valid
swap, err := r.GetSwap(ctx, p.SwapId, true)
if err != nil {
if err == models.ErrNotFound {
logctx.Warn(ctx, "no swap found by that ID", logger.Error(err), logger.String("swapId", p.SwapId.String()), logger.String("txHash", p.TxHash))
return err
return nil, err
}
logctx.Error(ctx, "failed to get swap", logger.Error(err), logger.String("swapId", p.SwapId.String()), logger.String("txHash", p.TxHash))
return fmt.Errorf("failed to get swap unexpectedly: %s", err)
return nil, fmt.Errorf("failed to get swap unexpectedly: %s", err)
}

// protect re-entry
if swap.IsStarted() {
logctx.Error(ctx, "swap is already started", logger.Error(err), logger.String("startedSwapId", p.SwapId.String()))
return fmt.Errorf("swap is already started: %s", err)
return nil, fmt.Errorf("swap is already started: %s", err)
}

// update swapId:started field
Expand All @@ -36,9 +36,9 @@ func (r *redisRepository) StoreNewPendingSwap(ctx context.Context, p models.Swap
err = r.saveSwap(ctx, p.SwapId, *swap, false)
if err != nil {
logctx.Error(ctx, "failed to update swap started time", logger.Error(err), logger.String("swapId", p.SwapId.String()))
return fmt.Errorf("failed to update swap started time: %s", err)
return nil, fmt.Errorf("failed to update swap started time: %s", err)
}

logctx.Debug(ctx, "store pending swap", logger.String("swapId", p.SwapId.String()), logger.String("txHash", p.TxHash))
return nil
return swap, nil
}
4 changes: 2 additions & 2 deletions data/redisrepo/store_new_pending_swap_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func TestRedisRepo_StoreNewPendingSwap(t *testing.T) {

mock.ExpectGet(CreateOpenSwapKey(mocks.SwapTx.SwapId)).SetVal("")

err := repo.StoreNewPendingSwap(ctx, mocks.SwapTx)
_, err := repo.StoreNewPendingSwap(ctx, mocks.SwapTx)

assert.ErrorIs(t, err, models.ErrNotFound)
})
Expand All @@ -36,7 +36,7 @@ func TestRedisRepo_StoreNewPendingSwap(t *testing.T) {

mock.ExpectGet(CreateOpenSwapKey(mocks.SwapTx.SwapId)).SetErr(assert.AnError)

err := repo.StoreNewPendingSwap(ctx, mocks.SwapTx)
_, err := repo.StoreNewPendingSwap(ctx, mocks.SwapTx)

assert.ErrorContains(t, err, "failed to get swap unexpectedly")
})
Expand Down
2 changes: 1 addition & 1 deletion data/redisrepo/store_swap_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ func TestRedisRepository_StoreSwap(t *testing.T) {

mock.ExpectRPush(CreateOpenSwapKey(swapID), swapJson).SetErr(assert.AnError)

err := repo.StoreSwap(ctx, swapID, swap.Frags)
err := repo.StoreSwap(ctx, swapID, models.Symbol("MATIC_USDC"), models.BUY, swap.Frags)
assert.ErrorContains(t, err, "failed to store swap")
})

Expand Down
4 changes: 2 additions & 2 deletions data/redisrepo/taker.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ func (r *redisRepository) saveSwap(ctx context.Context, swapId uuid.UUID, swap m
return err
}

func (r *redisRepository) StoreSwap(ctx context.Context, swapId uuid.UUID, frags []models.OrderFrag) error {
swap := models.NewSwap(frags)
func (r *redisRepository) StoreSwap(ctx context.Context, swapId uuid.UUID, symbol models.Symbol, side models.Side, frags []models.OrderFrag) error {
swap := models.NewSwap(symbol, side, frags)

err := r.saveSwap(ctx, swapId, *swap, false)
if err != nil {
Expand Down
4 changes: 2 additions & 2 deletions data/store/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@ type OrderBookStore interface {
GetMaxBid(ctx context.Context, symbol models.Symbol) models.OrderIter
// taker side
GetSwap(ctx context.Context, swapId uuid.UUID, open bool) (*models.Swap, error)
StoreSwap(ctx context.Context, swapId uuid.UUID, frags []models.OrderFrag) error
StoreSwap(ctx context.Context, swapId uuid.UUID, symbol models.Symbol, side models.Side, frags []models.OrderFrag) error
RemoveSwap(ctx context.Context, swapId uuid.UUID) error
GetOpenSwaps(ctx context.Context) ([]models.Swap, error)
// Pending Swap+Transaction (TODO: rename)
StoreNewPendingSwap(ctx context.Context, pendingSwap models.SwapTx) error
StoreNewPendingSwap(ctx context.Context, pendingSwap models.SwapTx) (*models.Swap, error)
// removes from "swapid" key
// adds to "swapResolve" key
ResolveSwap(ctx context.Context, swap models.Swap) error
Expand Down
9 changes: 5 additions & 4 deletions mocks/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ func (m *MockOrderBookStore) GetMarketDepth(ctx context.Context, symbol models.S
return m.MarketDepth, nil
}

func (m *MockOrderBookStore) StoreSwap(ctx context.Context, swapId uuid.UUID, frags []models.OrderFrag) error {
func (m *MockOrderBookStore) StoreSwap(ctx context.Context, swapId uuid.UUID, symbol models.Symbol, side models.Side, frags []models.OrderFrag) error {
if m.Error != nil {
return m.Error
}
Expand Down Expand Up @@ -144,7 +144,7 @@ func (m *MockOrderBookStore) GetSwap(ctx context.Context, swapId uuid.UUID, open
if m.Error != nil {
return nil, m.Error
}
return models.NewSwap(m.Frags), nil
return models.NewSwap(models.Symbol("MATIC_USDC"), models.BUY, m.Frags), nil
}

func (m *MockOrderBookStore) RemoveSwap(ctx context.Context, swapId uuid.UUID) error {
Expand All @@ -164,8 +164,9 @@ func (m *MockOrderBookStore) GetMaxBid(ctx context.Context, symbol models.Symbol
return m.BidOrderIter
}

func (m *MockOrderBookStore) StoreNewPendingSwap(ctx context.Context, pendingSwap models.SwapTx) error {
return m.Error
func (m *MockOrderBookStore) StoreNewPendingSwap(ctx context.Context, pendingSwap models.SwapTx) (*models.Swap, error) {
swap := models.NewSwap(m.Order.Symbol, m.Order.Side, m.Frags)
return swap, m.Error
}

func (m *MockOrderBookStore) ResolveSwap(ctx context.Context, swap models.Swap) error {
Expand Down
6 changes: 5 additions & 1 deletion models/swap.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ func MarshalOrderFrags(orderFrags []OrderFrag) ([]byte, error) {

type Swap struct {
Id uuid.UUID `json:"id"`
Symbol string `json:"symbol"`
Side string `json:"side"`
Created time.Time `json:"created"`
Started time.Time `json:"started"`
Mined time.Time `json:"mined"`
Expand All @@ -60,10 +62,12 @@ type Swap struct {
Frags []OrderFrag `json:"frags"`
}

func NewSwap(frags []OrderFrag) *Swap {
func NewSwap(symbol Symbol, side Side, frags []OrderFrag) *Swap {
return &Swap{
Created: time.Now(),
Frags: frags,
Symbol: symbol.String(),
Side: side.String(),
}
}

Expand Down
20 changes: 0 additions & 20 deletions scripts/curl.sh

This file was deleted.

4 changes: 2 additions & 2 deletions scripts/redis-repo/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ func createSwaps() {

ctx := context.Background()

err = repository.StoreSwap(ctx, swapId, fillOrders)
err = repository.StoreSwap(ctx, swapId, models.Symbol("MATIC_USDC"), models.BUY, fillOrders)
if err != nil {
log.Fatalf("error storing swap: %v", err)
}
Expand Down Expand Up @@ -419,7 +419,7 @@ func storePendingSwap() {
}

for i := 0; i < 1000; i++ {
err := repository.StoreNewPendingSwap(ctx, p)
_, err := repository.StoreNewPendingSwap(ctx, p)
if err != nil {
log.Fatalf("error storing pending swap: %v", err)
}
Expand Down
4 changes: 2 additions & 2 deletions service/amount_out.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ func (s *Service) GetQuote(ctx context.Context, symbol models.Symbol, makerSide

// apply min amount out threshold
if minOutAmount != nil {
logctx.Info(ctx, "minOutAmount check", logger.String("minOutAmount", minOutAmount.String()), logger.String("amountOut", res.Size.String()))
logctx.Info(ctx, "minOutAmount check", logger.String("symbol", symbol.String()), logger.String("minOutAmount", minOutAmount.String()), logger.String("amountOut", res.Size.String()))
if minOutAmount.GreaterThan(res.Size) {
logctx.Info(ctx, "minOutAmount was applied")
logctx.Info(ctx, "minOutAmount was applied", logger.String("symbol", symbol.String()))
return models.QuoteRes{}, models.ErrMinOutAmount
}
}
Expand Down
11 changes: 7 additions & 4 deletions service/taker.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,27 +94,30 @@ func (s *Service) BeginSwap(ctx context.Context, data models.QuoteRes) (models.B
logctx.Error(ctx, "BeginSwap Failed store:PerformTX", logger.Error(err))
}

err = s.orderBookStore.StoreSwap(ctx, swapId, res.Fragments)
// resolve symbol and side from orders[0]
err = s.orderBookStore.StoreSwap(ctx, swapId, res.Orders[0].Symbol, res.Orders[0].Side, res.Fragments)
if err != nil {
logctx.Error(ctx, "StoreSwap Failed", logger.Error(err))
return models.BeginSwapRes{}, err
}

logctx.Info(ctx, "BeginSwap end ok", logger.String("swapId", string(res.SwapId.String())))
logctx.Info(ctx, "BeginSwap end ok", logger.String("symbol", res.Orders[0].Symbol.String()), logger.String("side", string(res.Orders[0].Side)))

// add oredebook signature on the buffer HERE if needed
return res, nil
}

func (s *Service) SwapStarted(ctx context.Context, swapId uuid.UUID, txHash string) error {
logctx.Info(ctx, "SwapStarted", logger.String("swapId", swapId.String()))
err := s.orderBookStore.StoreNewPendingSwap(ctx, models.SwapTx{

swap, err := s.orderBookStore.StoreNewPendingSwap(ctx, models.SwapTx{
SwapId: swapId,
TxHash: txHash,
})
if err != nil {
logctx.Error(ctx, "StoreNewPendingSwap failed", logger.Error(err))
}

logctx.Info(ctx, "swapStarted", logger.String("symbol", swap.Symbol), logger.String("side", swap.Side), logger.String("swapId", swapId.String()))
return err
}

Expand Down
15 changes: 9 additions & 6 deletions transport/rest/taker.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,28 +131,29 @@ func Signature2Bytes(sig string) []byte {

func (h *Handler) handleQuote(w http.ResponseWriter, r *http.Request, isSwap bool) *QuoteRes {
var req QuoteReq

ctx := r.Context()
err := json.NewDecoder(r.Body).Decode(&req)
if err != nil {
logctx.Warn(ctx, "handleQuote Failed to decode json", logger.Error(err))
restutils.WriteJSONError(ctx, w, http.StatusBadRequest, err.Error())
return nil
}

logctx.Debug(ctx, "QuoteReq", logger.String("InToken", req.InToken), logger.String("InTokenAddress", req.InTokenAddress), logger.String("InAmount", req.InAmount), logger.String("OutToken", req.OutToken), logger.String("OutTokenAddress", req.OutTokenAddress), logger.String("MinOutAmount", req.MinOutAmount))
logFields := []logger.Field{logger.Bool("isSwap", isSwap), logger.String("InToken", req.InToken), logger.String("InTokenAddress", req.InTokenAddress), logger.String("InAmount", req.InAmount), logger.String("OutToken", req.OutToken), logger.String("OutTokenAddress", req.OutTokenAddress), logger.String("MinOutAmount", req.MinOutAmount)}
logctx.Info(ctx, "handleQuote start", logFields...)

// ensure token names if only addresses were sent
err = h.resolveQuoteTokenNames(&req)
if err != nil {
logctx.Warn(ctx, "handleQuote Failed to resolveQuoteTokenNames", logger.Error(err))
logctx.Warn(ctx, "handleQuote Failed to resolveQuoteTokenNames", append(logFields, logger.Error(err))...)
restutils.WriteJSONError(ctx, w, http.StatusBadRequest, err.Error(), logger.String("InTokenAddress", req.InTokenAddress), logger.String("OutTokenAddress", req.OutTokenAddress))
return nil
}

inAmount, err := h.convertFromTokenDec(ctx, req.InToken, req.InAmount)

if err != nil {
logctx.Warn(ctx, "handleQuote Failed to convertFromTokenDec", logger.Error(err))
logctx.Warn(ctx, "handleQuote Failed to convertFromTokenDec", append(logFields, logger.Error(err))...)
restutils.WriteJSONError(ctx, w, http.StatusBadRequest, err.Error(), logger.String("InToken", req.InToken), logger.String("outToken", req.OutToken), logger.Error(models.ErrTokenNotsupported))
return nil
}
Expand All @@ -169,6 +170,7 @@ func (h *Handler) handleQuote(w http.ResponseWriter, r *http.Request, isSwap boo
}

pair := h.pairMngr.Resolve(req.InToken, req.OutToken)

if pair == nil {
restutils.WriteJSONError(ctx, w, http.StatusBadRequest, "no suppoerted pair was found for tokens", logger.String("InToken", req.InToken), logger.String("OutToken", req.OutToken))
return nil
Expand Down Expand Up @@ -213,14 +215,15 @@ func (h *Handler) handleQuote(w http.ResponseWriter, r *http.Request, isSwap boo
logctx.Debug(ctx, "QuoteRes OK", logger.String("OutAmount", res.OutAmount), logger.String("InToken", req.InToken), logger.String("outToken", req.OutToken))

if isSwap {
logctx.Info(ctx, "BeginSwap", logFields...)
// lock liquidity
swapData, err := h.svc.BeginSwap(r.Context(), svcQuoteRes)
res.SwapId = swapData.SwapId.String()
logctx.Debug(ctx, "BeginSwap", logger.String("swapId", res.SwapId))
if err != nil {
restutils.WriteJSONError(ctx, w, http.StatusInternalServerError, err.Error())
return nil
}
logctx.Info(ctx, "BeginSwap OK", append(logFields, logger.String("swapId", res.SwapId))...)

signedOrders := []abi.SignedOrder{}

Expand Down Expand Up @@ -271,6 +274,7 @@ func (h *Handler) handleQuote(w http.ResponseWriter, r *http.Request, isSwap boo
}

restutils.WriteJSONResponse(r.Context(), w, http.StatusOK, res)
logctx.Info(ctx, "handleQuote end", logFields...)
return &res
}

Expand Down Expand Up @@ -329,7 +333,6 @@ func (h *Handler) swapStarted(w http.ResponseWriter, r *http.Request) {
Status: http.StatusOK,
}
restutils.WriteJSONResponse(r.Context(), w, http.StatusOK, res, logger.String("swapId started", swapId.String()))

}

// POST
Expand Down

0 comments on commit ef18323

Please sign in to comment.