From d5021a1b4f4f93e80349c3f48007d962cd364836 Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Fri, 26 Sep 2025 10:49:57 +0000 Subject: [PATCH] appview/models: fix logic issue when converting label record -> label ops the ordering of ops should be deletes first followed by additions, in order for ingestions to be idempotent. after every optimistic update the the DB, we ingest the same record via the firehose. an ordering difference resulted in certain additions being marked as no-ops when in reality, it should be an addition followed by a deletion. Signed-off-by: oppiliappan --- appview/models/label.go | 15 ++++++++------- 1 file(s) changed, 8 insertion(s)(+), 7 deletion(s)(-) diff --git a/appview/models/label.go b/appview/models/label.go --- a/appview/models/label.go +++ b/appview/models/label.go @@ -232,17 +232,18 @@ } var ops []LabelOp - for _, o := range record.Add { - if o != nil { - op := mkOp(o) - op.Operation = LabelOperationAdd - ops = append(ops, op) - } - } + // deletes first, then additions for _, o := range record.Delete { if o != nil { op := mkOp(o) op.Operation = LabelOperationDel + ops = append(ops, op) + } + } + for _, o := range record.Add { + if o != nil { + op := mkOp(o) + op.Operation = LabelOperationAdd ops = append(ops, op) } } -- tangled.sh