@@ -18,7 +18,11 @@ impl RoundRobinStrategy {
18
18
}
19
19
}
20
20
21
- fn select ( all_servers : & [ BoltServer ] , servers : & [ BoltServer ] , index : & AtomicUsize ) -> Option < BoltServer > {
21
+ fn select (
22
+ all_servers : & [ BoltServer ] ,
23
+ servers : & [ BoltServer ] ,
24
+ index : & AtomicUsize ,
25
+ ) -> Option < BoltServer > {
22
26
if servers. is_empty ( ) {
23
27
return None ;
24
28
}
@@ -28,12 +32,8 @@ impl RoundRobinStrategy {
28
32
if used. len ( ) >= all_servers. len ( ) {
29
33
return None ; // All servers have been used
30
34
}
31
- let _ = index. compare_exchange (
32
- 0 ,
33
- all_servers. len ( ) ,
34
- Ordering :: Relaxed ,
35
- Ordering :: Relaxed ,
36
- ) ;
35
+ let _ =
36
+ index. compare_exchange ( 0 , all_servers. len ( ) , Ordering :: Relaxed , Ordering :: Relaxed ) ;
37
37
let i = index. fetch_sub ( 1 , Ordering :: Relaxed ) ;
38
38
if let Some ( server) = all_servers. get ( i - 1 ) {
39
39
if servers. contains ( server) {
@@ -52,7 +52,9 @@ impl LoadBalancingStrategy for RoundRobinStrategy {
52
52
. filter ( |s| s. role == "READ" )
53
53
. cloned ( )
54
54
. collect :: < Vec < BoltServer > > ( ) ;
55
- let all_readers = self . connection_registry . all_servers ( )
55
+ let all_readers = self
56
+ . connection_registry
57
+ . all_servers ( )
56
58
. iter ( )
57
59
. filter ( |s| s. role == "READ" )
58
60
. cloned ( )
@@ -67,7 +69,9 @@ impl LoadBalancingStrategy for RoundRobinStrategy {
67
69
. filter ( |s| s. role == "WRITE" )
68
70
. cloned ( )
69
71
. collect :: < Vec < BoltServer > > ( ) ;
70
- let all_writers = self . connection_registry . all_servers ( )
72
+ let all_writers = self
73
+ . connection_registry
74
+ . all_servers ( )
71
75
. iter ( )
72
76
. filter ( |s| s. role == "WRITE" )
73
77
. cloned ( )
@@ -88,24 +92,30 @@ mod tests {
88
92
addresses: vec![ "server1:7687" . to_string( ) ] ,
89
93
role: "ROUTE" . to_string( ) ,
90
94
} ] ;
91
- let readers1 = vec ! [ Server {
92
- addresses: vec![ "server1:7687" . to_string( ) ] ,
93
- role: "READ" . to_string( ) ,
94
- } , Server {
95
- addresses: vec![ "server2:7687" . to_string( ) ] ,
96
- role: "READ" . to_string( ) ,
97
- } ] ;
95
+ let readers1 = vec ! [
96
+ Server {
97
+ addresses: vec![ "server1:7687" . to_string( ) ] ,
98
+ role: "READ" . to_string( ) ,
99
+ } ,
100
+ Server {
101
+ addresses: vec![ "server2:7687" . to_string( ) ] ,
102
+ role: "READ" . to_string( ) ,
103
+ } ,
104
+ ] ;
98
105
let writers1 = vec ! [ Server {
99
106
addresses: vec![ "server4:7687" . to_string( ) ] ,
100
107
role: "WRITE" . to_string( ) ,
101
108
} ] ;
102
- let readers2 = vec ! [ Server {
103
- addresses: vec![ "server1:7687" . to_string( ) ] ,
104
- role: "READ" . to_string( ) ,
105
- } , Server {
106
- addresses: vec![ "server3:7687" . to_string( ) ] ,
107
- role: "READ" . to_string( ) ,
108
- } ] ;
109
+ let readers2 = vec ! [
110
+ Server {
111
+ addresses: vec![ "server1:7687" . to_string( ) ] ,
112
+ role: "READ" . to_string( ) ,
113
+ } ,
114
+ Server {
115
+ addresses: vec![ "server3:7687" . to_string( ) ] ,
116
+ role: "READ" . to_string( ) ,
117
+ } ,
118
+ ] ;
109
119
110
120
let writers2 = vec ! [ Server {
111
121
addresses: vec![ "server4:7687" . to_string( ) ] ,
@@ -157,22 +167,16 @@ mod tests {
157
167
let strategy = RoundRobinStrategy :: new ( registry. clone ( ) ) ;
158
168
159
169
// select a reader for db-1
160
- let reader = RoundRobinStrategy :: select ( & all_readers, & servers1, & strategy. reader_index ) . unwrap ( ) ;
161
- assert_eq ! (
162
- reader. address,
163
- "server2"
164
- ) ;
170
+ let reader =
171
+ RoundRobinStrategy :: select ( & all_readers, & servers1, & strategy. reader_index ) . unwrap ( ) ;
172
+ assert_eq ! ( reader. address, "server2" ) ;
165
173
// select a reader for db-2
166
- let reader = RoundRobinStrategy :: select ( & all_readers, & servers2, & strategy. reader_index ) . unwrap ( ) ;
167
- assert_eq ! (
168
- reader. address,
169
- "server1"
170
- ) ;
174
+ let reader =
175
+ RoundRobinStrategy :: select ( & all_readers, & servers2, & strategy. reader_index ) . unwrap ( ) ;
176
+ assert_eq ! ( reader. address, "server1" ) ;
171
177
// select another reader for db-1
172
- let reader = RoundRobinStrategy :: select ( & all_readers, & servers1, & strategy. reader_index ) . unwrap ( ) ;
173
- assert_eq ! (
174
- reader. address,
175
- "server2"
176
- ) ;
178
+ let reader =
179
+ RoundRobinStrategy :: select ( & all_readers, & servers1, & strategy. reader_index ) . unwrap ( ) ;
180
+ assert_eq ! ( reader. address, "server2" ) ;
177
181
}
178
182
}
0 commit comments