From d5021a1b4f4f93e80349c3f48007d962cd364836 Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Fri, 26 Sep 2025 11:49:57 +0100 Subject: [PATCH] appview/models: fix logic issue when converting label record -> label ops Change-Id: wvxtolkkolwqvsuwkuzwntszylqorrqx 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 | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/appview/models/label.go b/appview/models/label.go index 7c985696..076801e8 100644 --- a/appview/models/label.go +++ b/appview/models/label.go @@ -232,17 +232,18 @@ func LabelOpsFromRecord(did, rkey string, record tangled.LabelOp) []LabelOp { } var ops []LabelOp - for _, o := range record.Add { + // deletes first, then additions + for _, o := range record.Delete { if o != nil { op := mkOp(o) - op.Operation = LabelOperationAdd + op.Operation = LabelOperationDel ops = append(ops, op) } } - for _, o := range record.Delete { + for _, o := range record.Add { if o != nil { op := mkOp(o) - op.Operation = LabelOperationDel + op.Operation = LabelOperationAdd ops = append(ops, op) } } -- 2.43.0