Merge pull request #1821 from c9s/kbearXD/max/depth-buffer
Some checks are pending
Go / build (1.21, 6.2) (push) Waiting to run
golang-lint / lint (push) Waiting to run

FEAUTRE: [max] update buffer second
This commit is contained in:
kbearXD 2024-11-15 18:20:53 +08:00 committed by GitHub
commit 452e761ce6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 7 additions and 1 deletions

View File

@ -112,6 +112,12 @@ func (b *Buffer) AddUpdate(o types.SliceOrderBook, firstUpdateID int64, finalArg
return nil return nil
} }
if u.FinalUpdateID <= b.finalUpdateID {
log.Infof("the final update id %d of event is less than equal to the final update id %d of the snapshot, skip", u.FinalUpdateID, b.finalUpdateID)
b.mu.Unlock()
return nil
}
// if there is a missing update, we should reset the snapshot and re-fetch the snapshot // if there is a missing update, we should reset the snapshot and re-fetch the snapshot
if u.FirstUpdateID > b.finalUpdateID+1 { if u.FirstUpdateID > b.finalUpdateID+1 {
// emitReset will reset the once outside the mutex lock section // emitReset will reset the once outside the mutex lock section

View File

@ -236,7 +236,7 @@ func (s *Stream) handleBookEvent(ex *Exchange) func(e max.BookEvent) {
// the depth of websocket orderbook event is 50 by default, so we use 50 as limit here // the depth of websocket orderbook event is 50 by default, so we use 50 as limit here
return ex.QueryDepth(context.Background(), e.Market, bookDepth) return ex.QueryDepth(context.Background(), e.Market, bookDepth)
}) })
f.SetBufferingPeriod(time.Second) f.SetBufferingPeriod(3 * time.Second)
f.OnReady(func(snapshot types.SliceOrderBook, updates []depth.Update) { f.OnReady(func(snapshot types.SliceOrderBook, updates []depth.Update) {
s.EmitBookSnapshot(snapshot) s.EmitBookSnapshot(snapshot)
for _, u := range updates { for _, u := range updates {