@@ -8,55 +8,63 @@ import (
88
99func (c * ClusterClient ) DBSize (ctx context.Context ) * IntCmd {
1010 cmd := NewIntCmd (ctx , "dbsize" )
11- var size int64
12- err := c .ForEachMaster (ctx , func (ctx context.Context , master * Client ) error {
13- n , err := master .DBSize (ctx ).Result ()
11+ _ = c .hooks .process (ctx , cmd , func (ctx context.Context , _ Cmder ) error {
12+ var size int64
13+ err := c .ForEachMaster (ctx , func (ctx context.Context , master * Client ) error {
14+ n , err := master .DBSize (ctx ).Result ()
15+ if err != nil {
16+ return err
17+ }
18+ atomic .AddInt64 (& size , n )
19+ return nil
20+ })
1421 if err != nil {
15- return err
22+ cmd .SetErr (err )
23+ } else {
24+ cmd .val = size
1625 }
17- atomic .AddInt64 (& size , n )
1826 return nil
1927 })
20- if err != nil {
21- cmd .SetErr (err )
22- return cmd
23- }
24- cmd .val = size
2528 return cmd
2629}
2730
2831func (c * ClusterClient ) ScriptLoad (ctx context.Context , script string ) * StringCmd {
2932 cmd := NewStringCmd (ctx , "script" , "load" , script )
30- mu := & sync.Mutex {}
31- err := c .ForEachShard (ctx , func (ctx context.Context , shard * Client ) error {
32- val , err := shard .ScriptLoad (ctx , script ).Result ()
33+ _ = c .hooks .process (ctx , cmd , func (ctx context.Context , _ Cmder ) error {
34+ mu := & sync.Mutex {}
35+ err := c .ForEachShard (ctx , func (ctx context.Context , shard * Client ) error {
36+ val , err := shard .ScriptLoad (ctx , script ).Result ()
37+ if err != nil {
38+ return err
39+ }
40+
41+ mu .Lock ()
42+ if cmd .Val () == "" {
43+ cmd .val = val
44+ }
45+ mu .Unlock ()
46+
47+ return nil
48+ })
3349 if err != nil {
34- return err
35- }
36-
37- mu .Lock ()
38- if cmd .Val () == "" {
39- cmd .val = val
50+ cmd .SetErr (err )
4051 }
41- mu .Unlock ()
42-
4352 return nil
4453 })
45- if err != nil {
46- cmd .SetErr (err )
47- }
48-
4954 return cmd
5055}
5156
5257func (c * ClusterClient ) ScriptFlush (ctx context.Context ) * StatusCmd {
5358 cmd := NewStatusCmd (ctx , "script" , "flush" )
54- _ = c .ForEachShard (ctx , func (ctx context.Context , shard * Client ) error {
55- shard .ScriptFlush (ctx )
56-
59+ _ = c .hooks .process (ctx , cmd , func (ctx context.Context , _ Cmder ) error {
60+ err := c .ForEachShard (ctx , func (ctx context.Context , shard * Client ) error {
61+ return shard .ScriptFlush (ctx ).Err ()
62+ })
63+ if err != nil {
64+ cmd .SetErr (err )
65+ }
5766 return nil
5867 })
59-
6068 return cmd
6169}
6270
@@ -74,26 +82,28 @@ func (c *ClusterClient) ScriptExists(ctx context.Context, hashes ...string) *Boo
7482 result [i ] = true
7583 }
7684
77- mu := & sync.Mutex {}
78- err := c .ForEachShard (ctx , func (ctx context.Context , shard * Client ) error {
79- val , err := shard .ScriptExists (ctx , hashes ... ).Result ()
85+ _ = c .hooks .process (ctx , cmd , func (ctx context.Context , _ Cmder ) error {
86+ mu := & sync.Mutex {}
87+ err := c .ForEachShard (ctx , func (ctx context.Context , shard * Client ) error {
88+ val , err := shard .ScriptExists (ctx , hashes ... ).Result ()
89+ if err != nil {
90+ return err
91+ }
92+
93+ mu .Lock ()
94+ for i , v := range val {
95+ result [i ] = result [i ] && v
96+ }
97+ mu .Unlock ()
98+
99+ return nil
100+ })
80101 if err != nil {
81- return err
82- }
83-
84- mu .Lock ()
85- for i , v := range val {
86- result [i ] = result [i ] && v
102+ cmd .SetErr (err )
103+ } else {
104+ cmd .val = result
87105 }
88- mu .Unlock ()
89-
90106 return nil
91107 })
92- if err != nil {
93- cmd .SetErr (err )
94- }
95-
96- cmd .val = result
97-
98108 return cmd
99109}
0 commit comments