@@ -8,55 +8,63 @@ import (
8
8
9
9
func (c * ClusterClient ) DBSize (ctx context.Context ) * IntCmd {
10
10
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
+ })
14
21
if err != nil {
15
- return err
22
+ cmd .SetErr (err )
23
+ } else {
24
+ cmd .val = size
16
25
}
17
- atomic .AddInt64 (& size , n )
18
26
return nil
19
27
})
20
- if err != nil {
21
- cmd .SetErr (err )
22
- return cmd
23
- }
24
- cmd .val = size
25
28
return cmd
26
29
}
27
30
28
31
func (c * ClusterClient ) ScriptLoad (ctx context.Context , script string ) * StringCmd {
29
32
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
+ })
33
49
if err != nil {
34
- return err
35
- }
36
-
37
- mu .Lock ()
38
- if cmd .Val () == "" {
39
- cmd .val = val
50
+ cmd .SetErr (err )
40
51
}
41
- mu .Unlock ()
42
-
43
52
return nil
44
53
})
45
- if err != nil {
46
- cmd .SetErr (err )
47
- }
48
-
49
54
return cmd
50
55
}
51
56
52
57
func (c * ClusterClient ) ScriptFlush (ctx context.Context ) * StatusCmd {
53
58
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
+ }
57
66
return nil
58
67
})
59
-
60
68
return cmd
61
69
}
62
70
@@ -74,26 +82,28 @@ func (c *ClusterClient) ScriptExists(ctx context.Context, hashes ...string) *Boo
74
82
result [i ] = true
75
83
}
76
84
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
+ })
80
101
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
87
105
}
88
- mu .Unlock ()
89
-
90
106
return nil
91
107
})
92
- if err != nil {
93
- cmd .SetErr (err )
94
- }
95
-
96
- cmd .val = result
97
-
98
108
return cmd
99
109
}
0 commit comments