@@ -130,10 +130,13 @@ function monitorServer(server, options) {
130
130
options = options || { } ;
131
131
const heartbeatFrequencyMS = options . heartbeatFrequencyMS || 10000 ;
132
132
133
- if ( options . initial === true ) {
134
- server . s . monitorId = setTimeout ( ( ) => monitorServer ( server ) , heartbeatFrequencyMS ) ;
135
- return ;
136
- }
133
+ const rescheduleMonitoring = ( ) => {
134
+ server . s . monitoring = false ;
135
+ server . s . monitorId = setTimeout ( ( ) => {
136
+ server . s . monitorId = undefined ;
137
+ server . monitor ( ) ;
138
+ } , heartbeatFrequencyMS ) ;
139
+ } ;
137
140
138
141
// executes a single check of a server
139
142
const checkServer = callback => {
@@ -176,16 +179,13 @@ function monitorServer(server, options) {
176
179
} ;
177
180
178
181
const successHandler = isMaster => {
179
- server . s . monitoring = false ;
180
-
181
182
// emit an event indicating that our description has changed
182
183
server . emit ( 'descriptionReceived' , new ServerDescription ( server . description . address , isMaster ) ) ;
183
184
if ( server . s . state === STATE_CLOSED || server . s . state === STATE_CLOSING ) {
184
185
return ;
185
186
}
186
187
187
- // schedule the next monitoring process
188
- server . s . monitorId = setTimeout ( ( ) => monitorServer ( server ) , heartbeatFrequencyMS ) ;
188
+ rescheduleMonitoring ( ) ;
189
189
} ;
190
190
191
191
// run the actual monitoring loop
@@ -203,15 +203,13 @@ function monitorServer(server, options) {
203
203
// otherwise re-attempt monitoring once
204
204
checkServer ( ( error , isMaster ) => {
205
205
if ( error ) {
206
- server . s . monitoring = false ;
207
-
208
206
// we revert to an `Unknown` by emitting a default description with no isMaster
209
207
server . emit (
210
208
'descriptionReceived' ,
211
209
new ServerDescription ( server . description . address , null , { error } )
212
210
) ;
213
211
214
- // we do not reschedule monitoring in this case
212
+ rescheduleMonitoring ( ) ;
215
213
return ;
216
214
}
217
215
0 commit comments