Skip to content

Commit

Permalink
Fix RHT.Remove returns empty string when key is already removed
Browse files Browse the repository at this point in the history
  • Loading branch information
justiceHui committed Jan 8, 2024
1 parent d453721 commit 43ed8d2
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion pkg/document/crdt/rht.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,13 +121,18 @@ func (rht *RHT) Set(k, v string, executedAt *time.Ticket) {
// Remove removes the Element of the given key.
func (rht *RHT) Remove(k string, executedAt *time.Ticket) string {
if node, ok := rht.nodeMapByKey[k]; ok && executedAt.After(node.updatedAt) {
if !node.isRemoved() {
alreadyRemoved := node.isRemoved()
if !alreadyRemoved {
rht.numberOfRemovedElement++
}
// node is removed if and only if updatedAt = removedAt
newNode := newRHTNode(k, node.val, executedAt)
rht.nodeMapByKey[k] = newNode
newNode.Remove(executedAt)

if alreadyRemoved {
return ""
}
return node.val
}

Expand Down

1 comment on commit 43ed8d2

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Go Benchmark

Benchmark suite Current: 43ed8d2 Previous: 50b3c50 Ratio
BenchmarkDocument/constructor_test - ns/op 1342 ns/op 1542 ns/op 0.87
BenchmarkDocument/constructor_test - B/op 1208 B/op 1208 B/op 1
BenchmarkDocument/constructor_test - allocs/op 20 allocs/op 20 allocs/op 1
BenchmarkDocument/status_test - ns/op 885.8 ns/op 780 ns/op 1.14
BenchmarkDocument/status_test - B/op 1176 B/op 1176 B/op 1
BenchmarkDocument/status_test - allocs/op 18 allocs/op 18 allocs/op 1
BenchmarkDocument/equals_test - ns/op 7092 ns/op 7138 ns/op 0.99
BenchmarkDocument/equals_test - B/op 6913 B/op 6913 B/op 1
BenchmarkDocument/equals_test - allocs/op 120 allocs/op 120 allocs/op 1
BenchmarkDocument/nested_update_test - ns/op 16001 ns/op 16248 ns/op 0.98
BenchmarkDocument/nested_update_test - B/op 11963 B/op 11963 B/op 1
BenchmarkDocument/nested_update_test - allocs/op 254 allocs/op 254 allocs/op 1
BenchmarkDocument/delete_test - ns/op 21732 ns/op 22078 ns/op 0.98
BenchmarkDocument/delete_test - B/op 15187 B/op 15188 B/op 1.00
BenchmarkDocument/delete_test - allocs/op 333 allocs/op 333 allocs/op 1
BenchmarkDocument/object_test - ns/op 8294 ns/op 8387 ns/op 0.99
BenchmarkDocument/object_test - B/op 6721 B/op 6721 B/op 1
BenchmarkDocument/object_test - allocs/op 116 allocs/op 116 allocs/op 1
BenchmarkDocument/array_test - ns/op 28536 ns/op 28691 ns/op 0.99
BenchmarkDocument/array_test - B/op 11819 B/op 11819 B/op 1
BenchmarkDocument/array_test - allocs/op 270 allocs/op 270 allocs/op 1
BenchmarkDocument/text_test - ns/op 30586 ns/op 31234 ns/op 0.98
BenchmarkDocument/text_test - B/op 15411 B/op 15412 B/op 1.00
BenchmarkDocument/text_test - allocs/op 479 allocs/op 479 allocs/op 1
BenchmarkDocument/text_composition_test - ns/op 28805 ns/op 28838 ns/op 1.00
BenchmarkDocument/text_composition_test - B/op 18588 B/op 18590 B/op 1.00
BenchmarkDocument/text_composition_test - allocs/op 481 allocs/op 481 allocs/op 1
BenchmarkDocument/rich_text_test - ns/op 84526 ns/op 84725 ns/op 1.00
BenchmarkDocument/rich_text_test - B/op 47959 B/op 47959 B/op 1
BenchmarkDocument/rich_text_test - allocs/op 1216 allocs/op 1216 allocs/op 1
BenchmarkDocument/counter_test - ns/op 16561 ns/op 16633 ns/op 1.00
BenchmarkDocument/counter_test - B/op 10210 B/op 10210 B/op 1
BenchmarkDocument/counter_test - allocs/op 236 allocs/op 236 allocs/op 1
BenchmarkDocument/text_edit_gc_100 - ns/op 2872818 ns/op 2896824 ns/op 0.99
BenchmarkDocument/text_edit_gc_100 - B/op 1658865 B/op 1658595 B/op 1.00
BenchmarkDocument/text_edit_gc_100 - allocs/op 17094 allocs/op 17092 allocs/op 1.00
BenchmarkDocument/text_edit_gc_1000 - ns/op 228761790 ns/op 232593749 ns/op 0.98
BenchmarkDocument/text_edit_gc_1000 - B/op 144369795 B/op 144379059 B/op 1.00
BenchmarkDocument/text_edit_gc_1000 - allocs/op 200889 allocs/op 200906 allocs/op 1.00
BenchmarkDocument/text_split_gc_100 - ns/op 3371033 ns/op 3420377 ns/op 0.99
BenchmarkDocument/text_split_gc_100 - B/op 2316810 B/op 2316994 B/op 1.00
BenchmarkDocument/text_split_gc_100 - allocs/op 16195 allocs/op 16196 allocs/op 1.00
BenchmarkDocument/text_split_gc_1000 - ns/op 288987060 ns/op 291333302 ns/op 0.99
BenchmarkDocument/text_split_gc_1000 - B/op 228927384 B/op 228919328 B/op 1.00
BenchmarkDocument/text_split_gc_1000 - allocs/op 203971 allocs/op 203934 allocs/op 1.00
BenchmarkDocument/text_delete_all_10000 - ns/op 11176426 ns/op 11818492 ns/op 0.95
BenchmarkDocument/text_delete_all_10000 - B/op 5810216 B/op 5810678 B/op 1.00
BenchmarkDocument/text_delete_all_10000 - allocs/op 40673 allocs/op 40675 allocs/op 1.00
BenchmarkDocument/text_delete_all_100000 - ns/op 208250940 ns/op 201368223 ns/op 1.03
BenchmarkDocument/text_delete_all_100000 - B/op 81896408 B/op 81900570 B/op 1.00
BenchmarkDocument/text_delete_all_100000 - allocs/op 411593 allocs/op 411626 allocs/op 1.00
BenchmarkDocument/text_100 - ns/op 230112 ns/op 220270 ns/op 1.04
BenchmarkDocument/text_100 - B/op 120107 B/op 120107 B/op 1
BenchmarkDocument/text_100 - allocs/op 5080 allocs/op 5080 allocs/op 1
BenchmarkDocument/text_1000 - ns/op 2488787 ns/op 2429840 ns/op 1.02
BenchmarkDocument/text_1000 - B/op 1169078 B/op 1169078 B/op 1
BenchmarkDocument/text_1000 - allocs/op 50084 allocs/op 50084 allocs/op 1
BenchmarkDocument/array_1000 - ns/op 1231080 ns/op 1191138 ns/op 1.03
BenchmarkDocument/array_1000 - B/op 1091299 B/op 1091341 B/op 1.00
BenchmarkDocument/array_1000 - allocs/op 11826 allocs/op 11826 allocs/op 1
BenchmarkDocument/array_10000 - ns/op 13151872 ns/op 13214012 ns/op 1.00
BenchmarkDocument/array_10000 - B/op 9799942 B/op 9800667 B/op 1.00
BenchmarkDocument/array_10000 - allocs/op 120290 allocs/op 120294 allocs/op 1.00
BenchmarkDocument/array_gc_100 - ns/op 150749 ns/op 144166 ns/op 1.05
BenchmarkDocument/array_gc_100 - B/op 132498 B/op 132489 B/op 1.00
BenchmarkDocument/array_gc_100 - allocs/op 1248 allocs/op 1248 allocs/op 1
BenchmarkDocument/array_gc_1000 - ns/op 1438027 ns/op 1375392 ns/op 1.05
BenchmarkDocument/array_gc_1000 - B/op 1158851 B/op 1158914 B/op 1.00
BenchmarkDocument/array_gc_1000 - allocs/op 12864 allocs/op 12864 allocs/op 1
BenchmarkDocument/counter_1000 - ns/op 209412 ns/op 198354 ns/op 1.06
BenchmarkDocument/counter_1000 - B/op 192852 B/op 192853 B/op 1.00
BenchmarkDocument/counter_1000 - allocs/op 5765 allocs/op 5765 allocs/op 1
BenchmarkDocument/counter_10000 - ns/op 2225119 ns/op 2157794 ns/op 1.03
BenchmarkDocument/counter_10000 - B/op 2087769 B/op 2087766 B/op 1.00
BenchmarkDocument/counter_10000 - allocs/op 59772 allocs/op 59772 allocs/op 1
BenchmarkDocument/object_1000 - ns/op 1422144 ns/op 1354096 ns/op 1.05
BenchmarkDocument/object_1000 - B/op 1427883 B/op 1428036 B/op 1.00
BenchmarkDocument/object_1000 - allocs/op 9844 allocs/op 9845 allocs/op 1.00
BenchmarkDocument/object_10000 - ns/op 15207886 ns/op 15028111 ns/op 1.01
BenchmarkDocument/object_10000 - B/op 12168266 B/op 12166744 B/op 1.00
BenchmarkDocument/object_10000 - allocs/op 100563 allocs/op 100559 allocs/op 1.00
BenchmarkDocument/tree_100 - ns/op 1074734 ns/op 1049112 ns/op 1.02
BenchmarkDocument/tree_100 - B/op 943677 B/op 943678 B/op 1.00
BenchmarkDocument/tree_100 - allocs/op 6099 allocs/op 6099 allocs/op 1
BenchmarkDocument/tree_1000 - ns/op 79013052 ns/op 79782715 ns/op 0.99
BenchmarkDocument/tree_1000 - B/op 86460445 B/op 86460627 B/op 1.00
BenchmarkDocument/tree_1000 - allocs/op 60113 allocs/op 60114 allocs/op 1.00
BenchmarkDocument/tree_10000 - ns/op 9877844688 ns/op 9957562898 ns/op 0.99
BenchmarkDocument/tree_10000 - B/op 8580991480 B/op 8580990424 B/op 1.00
BenchmarkDocument/tree_10000 - allocs/op 600238 allocs/op 600232 allocs/op 1.00
BenchmarkDocument/tree_delete_all_1000 - ns/op 78873167 ns/op 77379744 ns/op 1.02
BenchmarkDocument/tree_delete_all_1000 - B/op 86990661 B/op 86990891 B/op 1.00
BenchmarkDocument/tree_delete_all_1000 - allocs/op 67750 allocs/op 67751 allocs/op 1.00
BenchmarkDocument/tree_edit_gc_100 - ns/op 3900044 ns/op 3743356 ns/op 1.04
BenchmarkDocument/tree_edit_gc_100 - B/op 4121031 B/op 4120983 B/op 1.00
BenchmarkDocument/tree_edit_gc_100 - allocs/op 14356 allocs/op 14356 allocs/op 1
BenchmarkDocument/tree_edit_gc_1000 - ns/op 324385908 ns/op 311312288 ns/op 1.04
BenchmarkDocument/tree_edit_gc_1000 - B/op 383467172 B/op 383465558 B/op 1.00
BenchmarkDocument/tree_edit_gc_1000 - allocs/op 145413 allocs/op 145406 allocs/op 1.00
BenchmarkDocument/tree_split_gc_100 - ns/op 2628297 ns/op 2564917 ns/op 1.02
BenchmarkDocument/tree_split_gc_100 - B/op 2386869 B/op 2386900 B/op 1.00
BenchmarkDocument/tree_split_gc_100 - allocs/op 10341 allocs/op 10341 allocs/op 1
BenchmarkDocument/tree_split_gc_1000 - ns/op 199099024 ns/op 194397785 ns/op 1.02
BenchmarkDocument/tree_split_gc_1000 - B/op 221992480 B/op 221990026 B/op 1.00
BenchmarkDocument/tree_split_gc_1000 - allocs/op 112263 allocs/op 112248 allocs/op 1.00
BenchmarkRPC/client_to_server - ns/op 361166727 ns/op 364396329 ns/op 0.99
BenchmarkRPC/client_to_server - B/op 18072890 B/op 18067424 B/op 1.00
BenchmarkRPC/client_to_server - allocs/op 166886 allocs/op 165863 allocs/op 1.01
BenchmarkRPC/client_to_client_via_server - ns/op 655641048 ns/op 625660123 ns/op 1.05
BenchmarkRPC/client_to_client_via_server - B/op 32075216 B/op 32815272 B/op 0.98
BenchmarkRPC/client_to_client_via_server - allocs/op 312423 allocs/op 310207 allocs/op 1.01
BenchmarkRPC/attach_large_document - ns/op 1324092100 ns/op 1355198048 ns/op 0.98
BenchmarkRPC/attach_large_document - B/op 1888379968 B/op 1868233624 B/op 1.01
BenchmarkRPC/attach_large_document - allocs/op 7506 allocs/op 7466 allocs/op 1.01
BenchmarkRPC/adminCli_to_server - ns/op 554697697 ns/op 549909416 ns/op 1.01
BenchmarkRPC/adminCli_to_server - B/op 37722360 B/op 36780108 B/op 1.03
BenchmarkRPC/adminCli_to_server - allocs/op 289791 allocs/op 288662 allocs/op 1.00
BenchmarkLocker - ns/op 66.85 ns/op 65.86 ns/op 1.02
BenchmarkLocker - B/op 16 B/op 16 B/op 1
BenchmarkLocker - allocs/op 1 allocs/op 1 allocs/op 1
BenchmarkLockerParallel - ns/op 38.8 ns/op 38.59 ns/op 1.01
BenchmarkLockerParallel - B/op 0 B/op 0 B/op NaN
BenchmarkLockerParallel - allocs/op 0 allocs/op 0 allocs/op NaN
BenchmarkLockerMoreKeys - ns/op 149.1 ns/op 148.9 ns/op 1.00
BenchmarkLockerMoreKeys - B/op 15 B/op 15 B/op 1
BenchmarkLockerMoreKeys - allocs/op 0 allocs/op 0 allocs/op NaN
BenchmarkChange/Push_10_Changes - ns/op 3833899 ns/op 3838436 ns/op 1.00
BenchmarkChange/Push_10_Changes - B/op 126133 B/op 125677 B/op 1.00
BenchmarkChange/Push_10_Changes - allocs/op 1253 allocs/op 1254 allocs/op 1.00
BenchmarkChange/Push_100_Changes - ns/op 14295904 ns/op 14440415 ns/op 0.99
BenchmarkChange/Push_100_Changes - B/op 642446 B/op 647975 B/op 0.99
BenchmarkChange/Push_100_Changes - allocs/op 6540 allocs/op 6540 allocs/op 1
BenchmarkChange/Push_1000_Changes - ns/op 114310991 ns/op 115497921 ns/op 0.99
BenchmarkChange/Push_1000_Changes - B/op 6168109 B/op 6151829 B/op 1.00
BenchmarkChange/Push_1000_Changes - allocs/op 62162 allocs/op 62159 allocs/op 1.00
BenchmarkChange/Pull_10_Changes - ns/op 2864205 ns/op 2909758 ns/op 0.98
BenchmarkChange/Pull_10_Changes - B/op 100462 B/op 100076 B/op 1.00
BenchmarkChange/Pull_10_Changes - allocs/op 952 allocs/op 952 allocs/op 1
BenchmarkChange/Pull_100_Changes - ns/op 4359968 ns/op 4414877 ns/op 0.99
BenchmarkChange/Pull_100_Changes - B/op 257227 B/op 256121 B/op 1.00
BenchmarkChange/Pull_100_Changes - allocs/op 3154 allocs/op 3154 allocs/op 1
BenchmarkChange/Pull_1000_Changes - ns/op 8446801 ns/op 8566513 ns/op 0.99
BenchmarkChange/Pull_1000_Changes - B/op 1397716 B/op 1392837 B/op 1.00
BenchmarkChange/Pull_1000_Changes - allocs/op 26870 allocs/op 26865 allocs/op 1.00
BenchmarkSnapshot/Push_3KB_snapshot - ns/op 16979890 ns/op 17384863 ns/op 0.98
BenchmarkSnapshot/Push_3KB_snapshot - B/op 798844 B/op 802328 B/op 1.00
BenchmarkSnapshot/Push_3KB_snapshot - allocs/op 6543 allocs/op 6549 allocs/op 1.00
BenchmarkSnapshot/Push_30KB_snapshot - ns/op 117894205 ns/op 118971166 ns/op 0.99
BenchmarkSnapshot/Push_30KB_snapshot - B/op 6245989 B/op 6156721 B/op 1.01
BenchmarkSnapshot/Push_30KB_snapshot - allocs/op 62201 allocs/op 62158 allocs/op 1.00
BenchmarkSnapshot/Pull_3KB_snapshot - ns/op 6547205 ns/op 6602183 ns/op 0.99
BenchmarkSnapshot/Pull_3KB_snapshot - B/op 904462 B/op 902235 B/op 1.00
BenchmarkSnapshot/Pull_3KB_snapshot - allocs/op 14878 allocs/op 14878 allocs/op 1
BenchmarkSnapshot/Pull_30KB_snapshot - ns/op 14894058 ns/op 14754933 ns/op 1.01
BenchmarkSnapshot/Pull_30KB_snapshot - B/op 6990603 B/op 6981411 B/op 1.00
BenchmarkSnapshot/Pull_30KB_snapshot - allocs/op 144145 allocs/op 144131 allocs/op 1.00
BenchmarkSync/memory_sync_10_test - ns/op 6886 ns/op 6984 ns/op 0.99
BenchmarkSync/memory_sync_10_test - B/op 1286 B/op 1286 B/op 1
BenchmarkSync/memory_sync_10_test - allocs/op 38 allocs/op 38 allocs/op 1
BenchmarkSync/memory_sync_100_test - ns/op 51643 ns/op 51752 ns/op 1.00
BenchmarkSync/memory_sync_100_test - B/op 8652 B/op 8655 B/op 1.00
BenchmarkSync/memory_sync_100_test - allocs/op 273 allocs/op 274 allocs/op 1.00
BenchmarkSync/memory_sync_1000_test - ns/op 583929 ns/op 593943 ns/op 0.98
BenchmarkSync/memory_sync_1000_test - B/op 74802 B/op 74410 B/op 1.01
BenchmarkSync/memory_sync_1000_test - allocs/op 2138 allocs/op 2113 allocs/op 1.01
BenchmarkSync/memory_sync_10000_test - ns/op 7110422 ns/op 7699568 ns/op 0.92
BenchmarkSync/memory_sync_10000_test - B/op 753396 B/op 761656 B/op 0.99
BenchmarkSync/memory_sync_10000_test - allocs/op 20428 allocs/op 20495 allocs/op 1.00
BenchmarkTextEditing - ns/op 19445546182 ns/op 19296651559 ns/op 1.01
BenchmarkTextEditing - B/op 9041785016 B/op 9041594456 B/op 1.00
BenchmarkTextEditing - allocs/op 19921565 allocs/op 19920775 allocs/op 1.00

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.