From 4784c1548d8050608c3e5cdb3d9947227a64cd6f Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 8 Nov 2023 14:16:02 +0100 Subject: [PATCH] Squashed commit of the following: commit 22be7e70e05f87c09110a5108c0b6b0fbf29b57a Author: Alexander Date: Wed Nov 8 11:36:41 2023 +0100 feat(backend): removed InputEvent handler from DB service --- backend/cmd/db/main.go | 2 +- backend/cmd/heuristics/main.go | 1 - backend/internal/db/datasaver/saver.go | 9 --- backend/pkg/db/postgres/bulks.go | 12 --- backend/pkg/db/postgres/events.go | 11 --- .../pkg/handlers/custom/inputEventBuilder.go | 77 ------------------- 6 files changed, 1 insertion(+), 111 deletions(-) delete mode 100644 backend/pkg/handlers/custom/inputEventBuilder.go diff --git a/backend/cmd/db/main.go b/backend/cmd/db/main.go index ac7b34730..20290889e 100644 --- a/backend/cmd/db/main.go +++ b/backend/cmd/db/main.go @@ -58,7 +58,7 @@ func main() { messages.MsgFetch, messages.MsgNetworkRequest, messages.MsgGraphQL, messages.MsgStateAction, messages.MsgSetInputTarget, messages.MsgSetInputValue, messages.MsgCreateDocument, messages.MsgMouseClick, messages.MsgSetPageLocation, messages.MsgPageLoadTiming, messages.MsgPageRenderTiming, - messages.MsgInputEvent, messages.MsgPageEvent, messages.MsgMouseThrashing, messages.MsgInputChange, + messages.MsgPageEvent, messages.MsgMouseThrashing, messages.MsgInputChange, messages.MsgUnbindNodes} // Init consumer diff --git a/backend/cmd/heuristics/main.go b/backend/cmd/heuristics/main.go index 9feec3823..bfaa68b65 100644 --- a/backend/cmd/heuristics/main.go +++ b/backend/cmd/heuristics/main.go @@ -26,7 +26,6 @@ func main() { // HandlersFabric returns the list of message handlers we want to be applied to each incoming message. handlersFabric := func() []handlers.MessageProcessor { return []handlers.MessageProcessor{ - custom.NewInputEventBuilder(), custom.NewPageEventBuilder(), web.NewDeadClickDetector(), &web.ClickRageDetector{}, diff --git a/backend/internal/db/datasaver/saver.go b/backend/internal/db/datasaver/saver.go index a1247c424..7e3161510 100644 --- a/backend/internal/db/datasaver/saver.go +++ b/backend/internal/db/datasaver/saver.go @@ -1,7 +1,6 @@ package datasaver import ( - "errors" "log" "openreplay/backend/internal/config/db" @@ -102,14 +101,6 @@ func (s *saverImpl) handleMessage(msg Message) error { return err } return s.sessions.UpdateEventsStats(session.SessionID, 1, 0) - case *InputEvent: - if err = s.pg.InsertWebInputEvent(session, m); err != nil { - if errors.Is(err, postgres.EmptyLabel) { - return nil - } - return err - } - return s.sessions.UpdateEventsStats(session.SessionID, 1, 0) case *PageEvent: if err = s.pg.InsertWebPageEvent(session, m); err != nil { return err diff --git a/backend/pkg/db/postgres/bulks.go b/backend/pkg/db/postgres/bulks.go index cd896cf58..3e40e0c9e 100644 --- a/backend/pkg/db/postgres/bulks.go +++ b/backend/pkg/db/postgres/bulks.go @@ -19,7 +19,6 @@ type BulkSet struct { requests Bulk customEvents Bulk webPageEvents Bulk - webInputEvents Bulk webInputDurations Bulk webGraphQL Bulk webErrors Bulk @@ -57,8 +56,6 @@ func (conn *BulkSet) Get(name string) Bulk { return conn.customEvents case "webPageEvents": return conn.webPageEvents - case "webInputEvents": - return conn.webInputEvents case "webInputDurations": return conn.webInputDurations case "webGraphQL": @@ -122,14 +119,6 @@ func (conn *BulkSet) initBulks() { if err != nil { log.Fatalf("can't create webPageEvents bulk: %s", err) } - conn.webInputEvents, err = NewBulk(conn.c, - "events.inputs", - "(session_id, message_id, timestamp, label)", - "($%d, $%d, $%d, NULLIF(LEFT($%d, 2000),''))", - 4, 200) - if err != nil { - log.Fatalf("can't create webPageEvents bulk: %s", err) - } conn.webInputDurations, err = NewBulk(conn.c, "events.inputs", "(session_id, message_id, timestamp, label, hesitation, duration)", @@ -220,7 +209,6 @@ func (conn *BulkSet) Send() { newTask.bulks = append(newTask.bulks, conn.requests) newTask.bulks = append(newTask.bulks, conn.customEvents) newTask.bulks = append(newTask.bulks, conn.webPageEvents) - newTask.bulks = append(newTask.bulks, conn.webInputEvents) newTask.bulks = append(newTask.bulks, conn.webInputDurations) newTask.bulks = append(newTask.bulks, conn.webGraphQL) newTask.bulks = append(newTask.bulks, conn.webErrors) diff --git a/backend/pkg/db/postgres/events.go b/backend/pkg/db/postgres/events.go index 30364d1f9..1d00593d0 100644 --- a/backend/pkg/db/postgres/events.go +++ b/backend/pkg/db/postgres/events.go @@ -136,17 +136,6 @@ func (conn *Conn) InsertWebClickEvent(sess *sessions.Session, e *messages.MouseC return nil } -func (conn *Conn) InsertWebInputEvent(sess *sessions.Session, e *messages.InputEvent) error { - if e.Label == "" { - return EmptyLabel - } - if err := conn.bulks.Get("webInputEvents").Append(sess.SessionID, truncSqIdx(e.MessageID), e.Timestamp, e.Label); err != nil { - log.Printf("insert web input event err: %s", err) - } - conn.InsertAutocompleteValue(sess.SessionID, sess.ProjectID, "INPUT", e.Label) - return nil -} - func (conn *Conn) InsertInputChangeEvent(sess *sessions.Session, e *messages.InputChange) error { if e.Label == "" { return nil diff --git a/backend/pkg/handlers/custom/inputEventBuilder.go b/backend/pkg/handlers/custom/inputEventBuilder.go deleted file mode 100644 index d057db3e3..000000000 --- a/backend/pkg/handlers/custom/inputEventBuilder.go +++ /dev/null @@ -1,77 +0,0 @@ -package custom - -import ( - . "openreplay/backend/pkg/messages" -) - -const InputEventTimeout = 1 * 60 * 1000 - -type inputLabels map[uint64]string - -type inputEventBuilder struct { - inputEvent *InputEvent - inputLabels inputLabels - inputID uint64 -} - -func NewInputEventBuilder() *inputEventBuilder { - ieBuilder := &inputEventBuilder{} - ieBuilder.clearLabels() - return ieBuilder -} - -func (b *inputEventBuilder) clearLabels() { - b.inputLabels = make(inputLabels) -} - -func (b *inputEventBuilder) Handle(message Message, timestamp uint64) Message { - var inputEvent Message = nil - switch msg := message.(type) { - case *SetInputTarget: - if b.inputID != msg.ID { - inputEvent = b.Build() - b.inputID = msg.ID - } - b.inputLabels[msg.ID] = msg.Label - return inputEvent - case *SetInputValue: - if b.inputID != msg.ID { - inputEvent = b.Build() - b.inputID = msg.ID - } - if b.inputEvent == nil { - b.inputEvent = &InputEvent{ - MessageID: message.MsgID(), - Timestamp: timestamp, - Value: msg.Value, - ValueMasked: msg.Mask > 0, - } - } else { - b.inputEvent.Value = msg.Value - b.inputEvent.ValueMasked = msg.Mask > 0 - } - return inputEvent - case *CreateDocument: - inputEvent = b.Build() - b.clearLabels() - return inputEvent - case *MouseClick: - return b.Build() - } - - if b.inputEvent != nil && b.inputEvent.Timestamp+InputEventTimeout < timestamp { - return b.Build() - } - return nil -} - -func (b *inputEventBuilder) Build() Message { - if b.inputEvent == nil { - return nil - } - inputEvent := b.inputEvent - inputEvent.Label = b.inputLabels[b.inputID] // might be empty string - - b.inputEvent = nil - return inputEvent -}