From cf1e007311831c3a14177c86b21eec401fedecb1 Mon Sep 17 00:00:00 2001 From: Alexander Zavorotynskiy Date: Thu, 30 Jun 2022 15:03:49 +0200 Subject: [PATCH] fix(backend): keep the highest user's timestamp instead of the latest message timestamp for correct session duration value --- backend/cmd/ender/main.go | 2 +- backend/internal/sessionender/ender.go | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/backend/cmd/ender/main.go b/backend/cmd/ender/main.go index e0069e3d5..51cfa3fd7 100644 --- a/backend/cmd/ender/main.go +++ b/backend/cmd/ender/main.go @@ -83,7 +83,7 @@ func main() { sessions.HandleEndedSessions(func(sessionID uint64, timestamp int64) bool { msg := &messages.SessionEnd{Timestamp: uint64(timestamp)} if err := pg.InsertSessionEnd(sessionID, msg.Timestamp); err != nil { - log.Printf("can't save sessionEnd to database, sessID: %d", sessionID) + log.Printf("can't save sessionEnd to database, sessID: %d, err: %s", sessionID, err) return false } if err := producer.Produce(cfg.TopicRawWeb, sessionID, messages.Encode(msg)); err != nil { diff --git a/backend/internal/sessionender/ender.go b/backend/internal/sessionender/ender.go index f43a9029b..2f8e1e1ba 100644 --- a/backend/internal/sessionender/ender.go +++ b/backend/internal/sessionender/ender.go @@ -68,15 +68,18 @@ func (se *SessionEnder) UpdateSession(sessionID uint64, timestamp, msgTimestamp lastUserTime: msgTimestamp, // last timestamp from user's machine isEnded: false, } - //log.Printf("added new session: %d", sessionID) se.activeSessions.Add(context.Background(), 1) se.totalSessions.Add(context.Background(), 1) return } + // Keep the highest user's timestamp for correct session duration value + if msgTimestamp > sess.lastUserTime { + sess.lastUserTime = msgTimestamp + } + // Keep information about the latest message for generating sessionEnd trigger if currTS > sess.lastTimestamp { sess.lastTimestamp = currTS sess.lastUpdate = localTS - sess.lastUserTime = msgTimestamp sess.isEnded = false } }