@@ -96,19 +96,19 @@ def __exit__(self, exc_type, exc_val, exc_tb):
9696 self .__update_fastest_node_timer .__exit__ ()
9797
9898 def __init__ (self , topology : Topology , thread_pool : ThreadPoolExecutor ):
99- self .__state = self .__NodeSelectorState (topology )
99+ self ._state = self .__NodeSelectorState (topology )
100100 self .__update_fastest_node_timer : Union [None , time ] = None
101101 self .__thread_pool_executor = thread_pool
102102
103103 @property
104104 def topology (self ) -> Topology :
105- return self .__state .topology
105+ return self ._state .topology
106106
107107 def node_is_available (self , index : int ) -> bool :
108- return self .__state .failures [index ] == 0
108+ return self ._state .failures [index ] == 0
109109
110110 def on_failed_request (self , node_index : int ) -> None :
111- state = self .__state
111+ state = self ._state
112112 if node_index < 0 or node_index >= len (state .failures ):
113113 return
114114 state .failures [node_index ] += 1
@@ -117,19 +117,19 @@ def on_update_topology(self, topology: Topology, force_update: bool = False) ->
117117 if topology is None :
118118 return False
119119
120- state_etag = self .__state .topology .etag if self .__state .topology .etag else 0
120+ state_etag = self ._state .topology .etag if self ._state .topology .etag else 0
121121 topology_etag = topology .etag if topology .etag else 0
122122
123123 if state_etag >= topology_etag and not force_update :
124124 return False
125125
126126 state = NodeSelector .__NodeSelectorState (topology )
127- self .__state = state
127+ self ._state = state
128128
129129 return True
130130
131131 def get_requested_node (self , node_tag : str ) -> CurrentIndexAndNode :
132- state = self .__state
132+ state = self ._state
133133 server_nodes = state .nodes
134134 for i in range (len (server_nodes )):
135135 if server_nodes [i ].cluster_tag == node_tag :
@@ -140,7 +140,7 @@ def get_requested_node(self, node_tag: str) -> CurrentIndexAndNode:
140140 raise RequestedNodeUnavailableException (f"Could not find requested node { node_tag } " )
141141
142142 def get_preferred_node (self ) -> CurrentIndexAndNode :
143- state = self .__state
143+ state = self ._state
144144 return self .get_preferred_node_internal (state )
145145
146146 @classmethod
@@ -154,7 +154,7 @@ def get_preferred_node_internal(cls, state: NodeSelector.__NodeSelectorState) ->
154154 return cls .unlikely_everyone_faulted_choice (state )
155155
156156 def get_preferred_node_with_topology (self ) -> CurrentIndexAndNodeAndEtag :
157- state = self .__state
157+ state = self ._state
158158 preferred_node = self .get_preferred_node_internal (state )
159159 etag = (state .topology .etag if state .topology .etag else - 2 ) if state .topology else - 2
160160 return CurrentIndexAndNodeAndEtag (preferred_node .current_index , preferred_node .current_node , etag )
@@ -168,7 +168,7 @@ def unlikely_everyone_faulted_choice(state: NodeSelector.__NodeSelectorState) ->
168168 return state .node_when_everyone_marked_as_faulted
169169
170170 def get_node_by_session_id (self , session_id : int ) -> CurrentIndexAndNode :
171- state = self .__state
171+ state = self ._state
172172 if len (state .topology .nodes ) == 0 :
173173 raise AllTopologyNodesDownException ("There are no nodes in the topology at all" )
174174 index = abs (session_id % len (state .topology .nodes ))
@@ -183,19 +183,19 @@ def get_node_by_session_id(self, session_id: int) -> CurrentIndexAndNode:
183183 return self .get_preferred_node ()
184184
185185 def get_fastest_node (self ) -> CurrentIndexAndNode :
186- state = self .__state
186+ state = self ._state
187187 if state .failures [state .fastest ] == 0 and state .nodes [state .fastest ].server_role == ServerNode .Role .MEMBER :
188188 return CurrentIndexAndNode (state .fastest , state .nodes [state .fastest ])
189189
190190 # if the fastest node has failures, we'll immediately schedule
191191 # another run of finding who the fastest node is, in the mantime
192192 # we'll just use the server preferred node or failover as usual
193193
194- self .__switch_to_speed_test_phase ()
194+ self ._switch_to_speed_test_phase ()
195195 return self .get_preferred_node ()
196196
197197 def restore_node_index (self , node_index : int ) -> None :
198- state = self .__state
198+ state = self ._state
199199 if len (state .failures ) <= node_index :
200200 return
201201
@@ -205,24 +205,23 @@ def restore_node_index(self, node_index: int) -> None:
205205 def _throw_empty_topology () -> None :
206206 raise RuntimeError ("Empty database topology, this shouldn't happen." )
207207
208- def __switch_to_speed_test_phase (self ) -> None :
209- state = self .__state
208+ def _switch_to_speed_test_phase (self ) -> None :
209+ state = self ._state
210210
211211 if not state .speed_test_mode == 0 :
212212 state .speed_test_mode = 1
213213 return
214214
215- for i in state .fastest_records :
216- i = 0
215+ state .fastest_records = len (state .fastest_records ) * [0 ]
217216
218217 state .speed_test_mode += 1
219218
220219 @property
221220 def in_speed_test_phase (self ) -> bool :
222- return self .__state .speed_test_mode > 1
221+ return self ._state .speed_test_mode > 1
223222
224223 def record_fastest (self , index : int , node : ServerNode ) -> None :
225- state = self .__state
224+ state = self ._state
226225 state_fastest = state .fastest_records
227226
228227 # the following two checks are to verify that things didn't move
@@ -273,11 +272,11 @@ def __select_fastest(self, state: NodeSelector.__NodeSelectorState, index: int)
273272
274273 else :
275274 self .__update_fastest_node_timer = threading .Timer (
276- datetime .timedelta (minutes = 1 ), self .__switch_to_speed_test_phase
275+ datetime .timedelta (minutes = 1 ), self ._switch_to_speed_test_phase
277276 )
278277
279278 def schedule_speed_test (self ) -> None :
280- self .__switch_to_speed_test_phase ()
279+ self ._switch_to_speed_test_phase ()
281280
282281
283282class CurrentIndexAndNode :
0 commit comments