Skip to content

Commit 2599978

Browse files
committed
fix doctests
1 parent 3baf681 commit 2599978

File tree

2 files changed

+28
-10
lines changed

2 files changed

+28
-10
lines changed

doctests/timeseries_tut_test.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,24 @@ package example_commands_test
55
import (
66
"context"
77
"fmt"
8-
"maps"
98
"math"
10-
"slices"
119
"sort"
1210

1311
"github.com/redis/go-redis/v9"
1412
)
1513

1614
// HIDE_END
1715

16+
// mapKeys returns a slice of all keys from the map (Go 1.21 compatible)
17+
// TODO: Once minimum Go version is upgraded to 1.23+, replace with slices.Collect(maps.Keys(m))
18+
func mapKeys[K comparable, V any](m map[K]V) []K {
19+
keys := make([]K, 0, len(m))
20+
for k := range m {
21+
keys = append(keys, k)
22+
}
23+
return keys
24+
}
25+
1826
func ExampleClient_timeseries_create() {
1927
ctx := context.Background()
2028

@@ -417,7 +425,7 @@ func ExampleClient_timeseries_query_multi() {
417425
panic(err)
418426
}
419427

420-
res28Keys := slices.Collect(maps.Keys(res28))
428+
res28Keys := mapKeys(res28)
421429
sort.Strings(res28Keys)
422430

423431
for _, k := range res28Keys {
@@ -457,7 +465,7 @@ func ExampleClient_timeseries_query_multi() {
457465
panic(err)
458466
}
459467

460-
res29Keys := slices.Collect(maps.Keys(res29))
468+
res29Keys := mapKeys(res29)
461469
sort.Strings(res29Keys)
462470

463471
for _, k := range res29Keys {
@@ -505,7 +513,7 @@ func ExampleClient_timeseries_query_multi() {
505513
panic(err)
506514
}
507515

508-
res30Keys := slices.Collect(maps.Keys(res30))
516+
res30Keys := mapKeys(res30)
509517
sort.Strings(res30Keys)
510518

511519
for _, k := range res30Keys {
@@ -550,7 +558,7 @@ func ExampleClient_timeseries_query_multi() {
550558
panic(err)
551559
}
552560

553-
res31Keys := slices.Collect(maps.Keys(res31))
561+
res31Keys := mapKeys(res31)
554562
sort.Strings(res31Keys)
555563

556564
for _, k := range res31Keys {
@@ -857,7 +865,7 @@ func ExampleClient_timeseries_aggmulti() {
857865
panic(err)
858866
}
859867

860-
res44Keys := slices.Collect(maps.Keys(res44))
868+
res44Keys := mapKeys(res44)
861869
sort.Strings(res44Keys)
862870

863871
for _, k := range res44Keys {
@@ -905,7 +913,7 @@ func ExampleClient_timeseries_aggmulti() {
905913
panic(err)
906914
}
907915

908-
res45Keys := slices.Collect(maps.Keys(res45))
916+
res45Keys := mapKeys(res45)
909917
sort.Strings(res45Keys)
910918

911919
for _, k := range res45Keys {

internal/routing/aggregator.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,12 @@ func (a *AggLogicalAndAggregator) Add(result interface{}, err error) error {
493493
}
494494
for {
495495
old := a.res.Load()
496-
if a.res.CompareAndSwap(old, old&newVal) {
496+
desired := old & newVal
497+
if a.res.CompareAndSwap(old, desired) {
498+
break
499+
}
500+
// Early exit: if the value already equals what we want, no need to continue
501+
if a.res.Load() == desired {
497502
break
498503
}
499504
}
@@ -587,7 +592,12 @@ func (a *AggLogicalOrAggregator) Add(result interface{}, err error) error {
587592
}
588593
for {
589594
old := a.res.Load()
590-
if a.res.CompareAndSwap(old, old|newVal) {
595+
desired := old | newVal
596+
if a.res.CompareAndSwap(old, desired) {
597+
break
598+
}
599+
// Early exit: if the value already equals what we want, no need to continue
600+
if a.res.Load() == desired {
591601
break
592602
}
593603
}

0 commit comments

Comments
 (0)