(server, result)
| 339 | } |
| 340 | |
| 341 | function applyHubProbeResult(server, result) { |
| 342 | const info = getHubProbeInfo(server.id); |
| 343 | info.lastProbeAt = Date.now(); |
| 344 | |
| 345 | if (result.ok) { |
| 346 | clearHubRetry(server.id); |
| 347 | info.status = 'online'; |
| 348 | info.latencyMs = result.latencyMs; |
| 349 | info.lastSuccessAt = info.lastProbeAt; |
| 350 | info.consecutiveFailures = 0; |
| 351 | return; |
| 352 | } |
| 353 | |
| 354 | info.consecutiveFailures += 1; |
| 355 | if (info.lastSuccessAt && info.consecutiveFailures < HUB_PROBE_FAILS_TO_OFFLINE) { |
| 356 | info.status = 'unstable'; |
| 357 | scheduleHubRetry(server.id); |
| 358 | return; |
| 359 | } |
| 360 | |
| 361 | clearHubRetry(server.id); |
| 362 | info.status = 'offline'; |
| 363 | info.latencyMs = null; |
| 364 | } |
| 365 | |
| 366 | async function runHubProbes(servers, { markUnknown = false } = {}) { |
| 367 | if (!servers.length) return; |
no test coverage detected