Skip to content
This repository was archived by the owner on Feb 1, 2024. It is now read-only.

Commit a52a157

Browse files
committed
fix from #456, use last cursor logic (fetch or override) when SYNCHRONIZE_STATE_LOAD_ENABLE=true and fill tracking thread disabled
1 parent 1eed617 commit a52a157

2 files changed

Lines changed: 19 additions & 21 deletions

File tree

cmd/trade.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -732,14 +732,24 @@ func makeFillTracker(
732732
}
733733

734734
// start initializing the fill tracker
735-
var lastTradeCursorOverride interface{}
735+
var lastCursor interface{}
736736
if botConfig.FillTrackerLastTradeCursorOverride == "" {
737-
lastTradeCursorOverride = nil
737+
// loads cursor by fetching from exchange
738+
lastCursor, e = exchangeShim.GetLatestTradeCursor()
739+
if e != nil {
740+
l.Info("")
741+
l.Error(fmt.Sprintf("could not get last trade cursor from exchangeShim: %s", e))
742+
// we want to delete all the offers and exit here because we don't want the bot to run if fill tracking isn't working correctly
743+
deleteAllOffersAndExit(l, botConfig, client, sdex, exchangeShim, threadTracker)
744+
}
745+
log.Printf("set latest trade cursor from where to start tracking fills (no override specified): %v\n", lastCursor)
738746
} else {
739-
lastTradeCursorOverride = botConfig.FillTrackerLastTradeCursorOverride
747+
// loads cursor from config file
748+
lastCursor = botConfig.FillTrackerLastTradeCursorOverride
749+
log.Printf("set latest trade cursor from where to start tracking fills (used override value): %v\n", lastCursor)
740750
}
741751

742-
fillTracker := plugins.MakeFillTracker(tradingPair, threadTracker, exchangeShim, botConfig.FillTrackerSleepMillis, botConfig.FillTrackerDeleteCyclesThreshold, lastTradeCursorOverride)
752+
fillTracker := plugins.MakeFillTracker(tradingPair, threadTracker, exchangeShim, botConfig.FillTrackerSleepMillis, botConfig.FillTrackerDeleteCyclesThreshold, lastCursor)
743753
fillLogger := plugins.MakeFillLogger()
744754
fillTracker.RegisterHandler(fillLogger)
745755
if db != nil {

plugins/fillTracker.go

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,15 @@ type FillTracker struct {
2020
fillTrackable api.FillTrackable
2121
fillTrackerSleepMillis uint32
2222
fillTrackerDeleteCyclesThreshold int64
23-
lastTradeCursorOverride interface{}
23+
lastCursor interface{}
2424

2525
// initialized runtime vars
2626
fillTrackerDeleteCycles int64
2727
lockFill *sync.Mutex
2828
isRunningInBackground bool
2929

3030
// uninitialized
31-
lastCursor interface{}
32-
handlers []api.FillHandler
31+
handlers []api.FillHandler
3332
}
3433

3534
// enforce FillTracker implementing api.FillTracker
@@ -42,15 +41,15 @@ func MakeFillTracker(
4241
fillTrackable api.FillTrackable,
4342
fillTrackerSleepMillis uint32,
4443
fillTrackerDeleteCyclesThreshold int64,
45-
lastTradeCursorOverride interface{},
44+
lastCursor interface{},
4645
) api.FillTracker {
4746
return &FillTracker{
4847
pair: pair,
4948
threadTracker: threadTracker,
5049
fillTrackable: fillTrackable,
5150
fillTrackerSleepMillis: fillTrackerSleepMillis,
5251
fillTrackerDeleteCyclesThreshold: fillTrackerDeleteCyclesThreshold,
53-
lastTradeCursorOverride: lastTradeCursorOverride,
52+
lastCursor: lastCursor,
5453
// initialized runtime vars
5554
fillTrackerDeleteCycles: 0,
5655
lockFill: &sync.Mutex{},
@@ -92,19 +91,8 @@ func (f *FillTracker) TrackFills() error {
9291
f.isRunningInBackground = false
9392
}()
9493

95-
f.lastCursor = f.lastTradeCursorOverride
96-
var e error
97-
if f.lastCursor == nil {
98-
// get the last cursor so we only start querying from the current position
99-
f.lastCursor, e = f.fillTrackable.GetLatestTradeCursor()
100-
if e != nil {
101-
return fmt.Errorf("error while getting last trade: %s", e)
102-
}
103-
}
104-
log.Printf("got latest trade cursor from where to start tracking fills: %v\n", f.lastCursor)
105-
10694
for {
107-
_, e = f.FillTrackSingleIteration()
95+
_, e := f.FillTrackSingleIteration()
10896
if e != nil {
10997
eMsg := fmt.Sprintf("error when running an iteration of fill tracker: %s", e)
11098
if f.countError() {

0 commit comments

Comments
 (0)