Skip to content

reconciler: Add StatusSet.IsPendingOrRefreshing and IsDone - #190

Open
joamaki wants to merge 1 commit into
mainfrom
pr/joamaki/statusset-queries
Open

reconciler: Add StatusSet.IsPendingOrRefreshing and IsDone#190
joamaki wants to merge 1 commit into
mainfrom
pr/joamaki/statusset-queries

Conversation

@joamaki

@joamaki joamaki commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Add methods to efficiently query the set.
Change All() to return an iterator instead of producing a map.

Add methods to efficiently query the set.
Change All() to return an iterator instead of producing a map.

Signed-off-by: Jussi Maki <jussi@isovalent.com>
@joamaki
joamaki requested a review from a team as a code owner August 27, 2026 13:52
@joamaki
joamaki requested review from pippolo84 and removed request for a team August 27, 2026 13:52
@github-actions

Copy link
Copy Markdown
$ make
go build ./...
go: downloading github.com/cilium/hive v1.0.4
go: downloading go.yaml.in/yaml/v3 v3.0.4
go: downloading golang.org/x/time v0.15.0
go: downloading github.com/spf13/cobra v1.10.2
go: downloading github.com/spf13/pflag v1.0.10
go: downloading github.com/cilium/stream v0.0.1
go: downloading github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de
go: downloading github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
go: downloading github.com/mitchellh/mapstructure v1.5.0
go: downloading go.uber.org/dig v1.17.1
go: downloading golang.org/x/term v0.16.0
go: downloading github.com/spf13/viper v1.18.2
go: downloading golang.org/x/sys v0.17.0
go: downloading golang.org/x/tools v0.17.0
go: downloading github.com/spf13/cast v1.6.0
go: downloading github.com/fsnotify/fsnotify v1.7.0
go: downloading github.com/sagikazarmark/slog-shim v0.1.0
go: downloading github.com/spf13/afero v1.11.0
go: downloading github.com/subosito/gotenv v1.6.0
go: downloading github.com/hashicorp/hcl v1.0.0
go: downloading gopkg.in/ini.v1 v1.67.0
go: downloading github.com/magiconair/properties v1.8.7
go: downloading github.com/pelletier/go-toml/v2 v2.1.0
go: downloading gopkg.in/yaml.v3 v3.0.1
go: downloading golang.org/x/text v0.14.0
STATEDB_VALIDATE=1 go test ./... -cover -vet=all -test.count 1
go: downloading github.com/stretchr/testify v1.11.1
go: downloading go.uber.org/goleak v1.3.0
go: downloading golang.org/x/exp v0.0.0-20240119083558-1b970713d09a
go: downloading github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2
ok  	github.com/cilium/statedb	289.654s	coverage: 79.6% of statements
ok  	github.com/cilium/statedb/index	0.005s	coverage: 33.7% of statements
ok  	github.com/cilium/statedb/internal	0.032s	coverage: 42.9% of statements
ok  	github.com/cilium/statedb/lpm	3.730s	coverage: 76.4% of statements
ok  	github.com/cilium/statedb/part	80.373s	coverage: 86.4% of statements
ok  	github.com/cilium/statedb/reconciler	0.268s	coverage: 93.2% of statements
	github.com/cilium/statedb/reconciler/benchmark		coverage: 0.0% of statements
	github.com/cilium/statedb/reconciler/example		coverage: 0.0% of statements
go test -race ./... -test.count 1
ok  	github.com/cilium/statedb	36.621s
ok  	github.com/cilium/statedb/index	1.017s
ok  	github.com/cilium/statedb/internal	1.041s
ok  	github.com/cilium/statedb/lpm	2.893s
ok  	github.com/cilium/statedb/part	31.054s
ok  	github.com/cilium/statedb/reconciler	1.354s
?   	github.com/cilium/statedb/reconciler/benchmark	[no test files]
?   	github.com/cilium/statedb/reconciler/example	[no test files]
go test ./... -bench . -benchmem -test.run xxx
goos: linux
goarch: amd64
pkg: github.com/cilium/statedb
cpu: INTEL(R) XEON(R) PLATINUM 8573C
BenchmarkDB_WriteTxn_1-4                      	  789723	      1360 ns/op	    735431 objects/sec	     704 B/op	      17 allocs/op
BenchmarkDB_WriteTxn_10-4                     	 1909597	       558.6 ns/op	   1790103 objects/sec	     386 B/op	       8 allocs/op
BenchmarkDB_WriteTxn_100-4                    	 2624647	       456.1 ns/op	   2192341 objects/sec	     349 B/op	       7 allocs/op
BenchmarkDB_WriteTxn_1000-4                   	 2382992	       505.2 ns/op	   1979336 objects/sec	     350 B/op	       7 allocs/op
BenchmarkDB_WriteTxn_100_SecondaryIndex-4     	 1673875	       716.0 ns/op	   1396742 objects/sec	     459 B/op	      10 allocs/op
BenchmarkDB_WriteTxn_CommitOnly_100Tables-4   	  939141	      1216 ns/op	    1128 B/op	       6 allocs/op
BenchmarkDB_WriteTxn_CommitOnly_1Table-4      	 1547818	       776.1 ns/op	     240 B/op	       6 allocs/op
BenchmarkDB_NewWriteTxn-4                     	 1739192	       688.8 ns/op	     216 B/op	       5 allocs/op
BenchmarkDB_WriteTxnCommit100-4               	  873464	      1205 ns/op	    1112 B/op	       6 allocs/op
BenchmarkDB_NewReadTxn-4                      	722104537	         1.673 ns/op	       0 B/op	       0 allocs/op
BenchmarkDB_Modify-4                          	    2130	    554803 ns/op	   1802441 objects/sec	  374572 B/op	    8080 allocs/op
BenchmarkDB_GetInsert-4                       	    1936	    616026 ns/op	   1623308 objects/sec	  358570 B/op	    8080 allocs/op
BenchmarkDB_RandomInsert-4                    	    2328	    522878 ns/op	   1912492 objects/sec	  350567 B/op	    7080 allocs/op
BenchmarkDB_RandomReplace-4                   	    1249	    976900 ns/op	   1023647 objects/sec	  472499 B/op	   11109 allocs/op
BenchmarkDB_SequentialInsert-4                	    2412	    497740 ns/op	   2009081 objects/sec	  350565 B/op	    7080 allocs/op
BenchmarkDB_SequentialInsert_Prefix-4         	     561	   2110798 ns/op	    473754 objects/sec	 2840378 B/op	   45536 allocs/op
BenchmarkDB_Changes_Baseline-4                	    1911	    622856 ns/op	   1605509 objects/sec	  444576 B/op	    9201 allocs/op
BenchmarkDB_Changes-4                         	    1063	   1116360 ns/op	    895769 objects/sec	  660595 B/op	   12371 allocs/op
BenchmarkDB_RandomLookup-4                    	   27612	     43545 ns/op	  22964651 objects/sec	       0 B/op	       0 allocs/op
BenchmarkDB_SequentialLookup-4                	   38588	     30995 ns/op	  32262771 objects/sec	       0 B/op	       0 allocs/op
BenchmarkDB_Prefix_SecondaryIndex-4           	    8430	    124725 ns/op	   8017632 objects/sec	  124952 B/op	    1026 allocs/op
BenchmarkDB_FullIteration_All-4               	    1244	    867531 ns/op	 115269670 objects/sec	     104 B/op	       4 allocs/op
BenchmarkDB_FullIteration_Prefix-4            	    1338	    887910 ns/op	 112624030 objects/sec	     136 B/op	       5 allocs/op
BenchmarkDB_FullIteration_Get-4               	     310	   3819884 ns/op	  26178809 objects/sec	       0 B/op	       0 allocs/op
BenchmarkDB_FullIteration_Get_Secondary-4     	     175	   6801001 ns/op	  14703717 objects/sec	       0 B/op	       0 allocs/op
BenchmarkDB_FullIteration_ReadTxnGet-4        	     310	   3845656 ns/op	  26003363 objects/sec	       0 B/op	       0 allocs/op
BenchmarkDB_PropagationDelay-4                	  739927	      1398 ns/op	        12.00 50th_µs	        14.00 90th_µs	        46.00 99th_µs	     877 B/op	      20 allocs/op
BenchmarkDB_WriteTxn_100_LPMIndex-4           	  491984	      2073 ns/op	    482462 objects/sec	    1606 B/op	      37 allocs/op
BenchmarkDB_WriteTxn_1_LPMIndex-4             	  137712	     13139 ns/op	     76109 objects/sec	   13731 B/op	      82 allocs/op
BenchmarkDB_LPMIndex_Get-4                    	     378	   3158382 ns/op	   3166178 objects/sec	       0 B/op	       0 allocs/op
BenchmarkWatchSet_4-4                         	 2498356	       475.3 ns/op	     296 B/op	       4 allocs/op
BenchmarkWatchSet_16-4                        	  752986	      1585 ns/op	    1096 B/op	       5 allocs/op
BenchmarkWatchSet_128-4                       	   81973	     14725 ns/op	    8904 B/op	       5 allocs/op
BenchmarkWatchSet_1024-4                      	    7950	    146795 ns/op	   73744 B/op	       5 allocs/op
PASS
ok  	github.com/cilium/statedb	43.411s
PASS
ok  	github.com/cilium/statedb/index	0.004s
goos: linux
goarch: amd64
pkg: github.com/cilium/statedb/internal
cpu: INTEL(R) XEON(R) PLATINUM 8573C
Benchmark_SortableMutex-4   	 6716126	       179.0 ns/op	       0 B/op	       0 allocs/op
PASS
ok  	github.com/cilium/statedb/internal	1.206s
goos: linux
goarch: amd64
pkg: github.com/cilium/statedb/lpm
cpu: INTEL(R) XEON(R) PLATINUM 8573C
Benchmark_txn_insert/batchSize=1-4         	    2212	    522496 ns/op	   1913889 objects/sec	  822419 B/op	   13975 allocs/op
Benchmark_txn_insert/batchSize=10-4        	    3866	    312141 ns/op	   3203683 objects/sec	  369201 B/op	    6668 allocs/op
Benchmark_txn_insert/batchSize=100-4       	    4035	    293204 ns/op	   3410600 objects/sec	  329617 B/op	    6027 allocs/op
Benchmark_txn_delete/batchSize=1-4         	    1504	    733855 ns/op	   1362668 objects/sec	 1270477 B/op	   13976 allocs/op
Benchmark_txn_delete/batchSize=10-4        	    3404	    350609 ns/op	   2852176 objects/sec	  356419 B/op	    5769 allocs/op
Benchmark_txn_delete/batchSize=100-4       	    3661	    331259 ns/op	   3018783 objects/sec	  270754 B/op	    5038 allocs/op
Benchmark_LPM_Lookup-4                     	    9585	    124221 ns/op	   8050201 objects/sec	       0 B/op	       0 allocs/op
Benchmark_LPM_All-4                        	  126775	      9409 ns/op	 106280709 objects/sec	      32 B/op	       1 allocs/op
Benchmark_LPM_Prefix-4                     	  121789	      9787 ns/op	 102176023 objects/sec	      32 B/op	       1 allocs/op
Benchmark_LPM_LowerBound-4                 	  235862	      5048 ns/op	  99039537 objects/sec	     288 B/op	       2 allocs/op
PASS
ok  	github.com/cilium/statedb/lpm	11.835s
goos: linux
goarch: amd64
pkg: github.com/cilium/statedb/part
cpu: INTEL(R) XEON(R) PLATINUM 8573C
Benchmark_Set_Singleton_Create-4              	30019767	        38.60 ns/op	      24 B/op	       1 allocs/op
Benchmark_Set_Singleton_Has-4                 	100000000	        10.53 ns/op	       0 B/op	       0 allocs/op
Benchmark_StringMap_Txn_Insert-4              	    9409	    119295 ns/op	   8382591 items/sec	   98250 B/op	    1306 allocs/op
Benchmark_Uint64Map_Random-4                  	    2072	    593595 ns/op	   1684651 items/sec	 1321619 B/op	    6026 allocs/op
Benchmark_Uint64Map_Sequential-4              	    2060	    629100 ns/op	   1589572 items/sec	 1703093 B/op	    5753 allocs/op
Benchmark_Uint64Map_Sequential_Insert-4       	    2259	    542563 ns/op	   1843105 items/sec	 1695086 B/op	    4752 allocs/op
Benchmark_Uint64Map_Sequential_Txn_Insert-4   	   10000	    100942 ns/op	   9906694 items/sec	   90464 B/op	    2031 allocs/op
Benchmark_Uint64Map_Random_Insert-4           	    2236	    538952 ns/op	   1855452 items/sec	 1314324 B/op	    5034 allocs/op
Benchmark_Uint64Map_Random_Txn_Insert-4       	    6950	    164411 ns/op	   6082329 items/sec	  117232 B/op	    2400 allocs/op
Benchmark_Insert_RootOnlyWatch-4              	   10000	    102049 ns/op	   9799233 objects/sec	   75552 B/op	    2036 allocs/op
Benchmark_Insert-4                            	    9304	    123696 ns/op	   8084343 objects/sec	   84256 B/op	    3067 allocs/op
Benchmark_WatchReplace-4                      	   10000	    108669 ns/op	   9202221 objects/sec	   65346 B/op	    2011 allocs/op
Benchmark_Modify-4                            	   14094	     85205 ns/op	  11736452 objects/sec	   58056 B/op	    1007 allocs/op
Benchmark_GetInsert-4                         	   10000	    107423 ns/op	   9308984 objects/sec	   58056 B/op	    1007 allocs/op
Benchmark_Replace-4                           	33798040	        35.03 ns/op	  28548701 objects/sec	       0 B/op	       0 allocs/op
Benchmark_Replace_RootOnlyWatch-4             	30667906	        35.50 ns/op	  28166691 objects/sec	       0 B/op	       0 allocs/op
Benchmark_txn_1-4                             	 9768734	       121.7 ns/op	   8219515 objects/sec	      64 B/op	       3 allocs/op
Benchmark_txn_10-4                            	11724698	        99.78 ns/op	  10021863 objects/sec	      76 B/op	       2 allocs/op
Benchmark_txn_100-4                           	13130598	        89.16 ns/op	  11215276 objects/sec	      67 B/op	       2 allocs/op
Benchmark_txn_1000-4                          	11418706	       104.2 ns/op	   9601400 objects/sec	      65 B/op	       2 allocs/op
Benchmark_txn_delete_1-4                      	 5135900	       231.9 ns/op	   4312562 objects/sec	     632 B/op	       3 allocs/op
Benchmark_txn_delete_10-4                     	12219619	        98.02 ns/op	  10202344 objects/sec	     103 B/op	       1 allocs/op
Benchmark_txn_delete_100-4                    	14005634	        76.52 ns/op	  13068550 objects/sec	      35 B/op	       1 allocs/op
Benchmark_txn_delete_1000-4                   	15995316	        74.41 ns/op	  13438407 objects/sec	      28 B/op	       1 allocs/op
Benchmark_Get-4                               	   57177	     20968 ns/op	  47691510 objects/sec	       0 B/op	       0 allocs/op
Benchmark_GetWatch-4                          	   53247	     22501 ns/op	  44442650 objects/sec	       0 B/op	       0 allocs/op
Benchmark_All-4                               	  196438	      6108 ns/op	 163708017 objects/sec	       0 B/op	       0 allocs/op
Benchmark_Iterator_All-4                      	  200950	      5971 ns/op	 167487099 objects/sec	       0 B/op	       0 allocs/op
Benchmark_Iterator_Next-4                     	  198326	      5976 ns/op	 167324430 objects/sec	     896 B/op	       1 allocs/op
Benchmark_Hashmap_Insert-4                    	   21589	     55905 ns/op	  17887633 objects/sec	   74264 B/op	      20 allocs/op
Benchmark_Hashmap_Get_Uint64-4                	  196802	      6042 ns/op	 165507229 objects/sec	       0 B/op	       0 allocs/op
Benchmark_Hashmap_Get_Bytes-4                 	  169542	      7080 ns/op	 141240891 objects/sec	       0 B/op	       0 allocs/op
Benchmark_Delete_Random-4                     	      82	  15011084 ns/op	   6661744 objects/sec	 2539398 B/op	  102756 allocs/op
Benchmark_find16-4                            	234834334	         5.038 ns/op	       0 B/op	       0 allocs/op
Benchmark_findIndex16-4                       	89474068	        13.09 ns/op	       0 B/op	       0 allocs/op
Benchmark_find64-4                            	342219265	         3.505 ns/op	       0 B/op	       0 allocs/op
Benchmark_findIndex64_hit-4                   	318887114	         3.769 ns/op	       0 B/op	       0 allocs/op
Benchmark_findIndex64_miss-4                  	326173125	         3.699 ns/op	       0 B/op	       0 allocs/op
Benchmark_find4-4                             	524433253	         2.282 ns/op	       0 B/op	       0 allocs/op
Benchmark_findIndex4-4                        	346793145	         3.350 ns/op	       0 B/op	       0 allocs/op
BenchmarkSmallWriteTxn/updates_1-4            	  456104	      2543 ns/op	    3529 B/op	       4 allocs/op
BenchmarkSmallWriteTxn/updates_2-4            	  335359	      3615 ns/op	    4742 B/op	       6 allocs/op
BenchmarkSmallWriteTxn/updates_4-4            	  200952	      5651 ns/op	    7155 B/op	      11 allocs/op
BenchmarkSmallWriteTxn/updates_8-4            	  119526	      9799 ns/op	   11927 B/op	      20 allocs/op
BenchmarkSmallWriteTxn/updates_16-4           	   65791	     18189 ns/op	   21290 B/op	      38 allocs/op
PASS
ok  	github.com/cilium/statedb/part	54.274s
PASS
ok  	github.com/cilium/statedb/reconciler	0.004s
?   	github.com/cilium/statedb/reconciler/benchmark	[no test files]
?   	github.com/cilium/statedb/reconciler/example	[no test files]
go run ./reconciler/benchmark -quiet
1000000 objects reconciled in 1.60 seconds (batch size 1000)
Throughput 623068.70 objects per second
568MB total allocated, 6015183 in-use objects, 239MB bytes in use

@pippolo84 pippolo84 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants