]> git.feebdaed.xyz Git - 0xmirror/grpc-go.git/commitdiff
priority: use new-style atomic APIs (#8558)
authorEaswar Swaminathan <easwars@google.com>
Fri, 5 Sep 2025 06:04:46 +0000 (23:04 -0700)
committerGitHub <noreply@github.com>
Fri, 5 Sep 2025 06:04:46 +0000 (23:04 -0700)
Use new-style atomic APIs instead of the old ones in the
`ignoreResolveNowClientConn` type.

The changes made in this PR improve the code in the following ways:
* Ergonomics: Method-based API vs function-based, no pointer management
needed
* Safety: Type safety prevents mixing atomic/non-atomic operations,
eliminates pointer errors
* Clarity: The `atomic.Uint32` type makes atomic intent explicit from
declaration

RELEASE NOTES: none

internal/xds/balancer/priority/ignore_resolve_now.go

index 792ee4b3f242c11065b3bc7bdab6710afa2b9611..df9ec46c5706b02ddefef10ae0005278fb90fa0b 100644 (file)
@@ -29,29 +29,21 @@ import (
 // ResolveNow() method to ignore those calls if the ignoreResolveNow bit is set.
 type ignoreResolveNowClientConn struct {
        balancer.ClientConn
-       ignoreResolveNow *uint32
+       ignoreResolveNow atomic.Bool
 }
 
 func newIgnoreResolveNowClientConn(cc balancer.ClientConn, ignore bool) *ignoreResolveNowClientConn {
-       ret := &ignoreResolveNowClientConn{
-               ClientConn:       cc,
-               ignoreResolveNow: new(uint32),
-       }
+       ret := &ignoreResolveNowClientConn{ClientConn: cc}
        ret.updateIgnoreResolveNow(ignore)
        return ret
 }
 
 func (i *ignoreResolveNowClientConn) updateIgnoreResolveNow(b bool) {
-       if b {
-               atomic.StoreUint32(i.ignoreResolveNow, 1)
-               return
-       }
-       atomic.StoreUint32(i.ignoreResolveNow, 0)
-
+       i.ignoreResolveNow.Store(b)
 }
 
-func (i ignoreResolveNowClientConn) ResolveNow(o resolver.ResolveNowOptions) {
-       if atomic.LoadUint32(i.ignoreResolveNow) != 0 {
+func (i *ignoreResolveNowClientConn) ResolveNow(o resolver.ResolveNowOptions) {
+       if i.ignoreResolveNow.Load() {
                return
        }
        i.ClientConn.ResolveNow(o)