MCPcopy Create free account
hub / github.com/chainreactors/EvilProxy / reconnectJobStream

Method reconnectJobStream

internal/bridge/bridge.go:333–357  ·  view source on GitHub ↗

reconnectJobStream attempts to re-open the JobStream with exponential backoff.

(lastErr error)

Source from the content-addressed store, hash-verified

331
332// reconnectJobStream attempts to re-open the JobStream with exponential backoff.
333func (b *Bridge) reconnectJobStream(lastErr error) {
334 restore := shouldRestoreBridgeState(lastErr)
335 for attempt := 1; ; attempt++ {
336 select {
337 case <-b.ctx.Done():
338 return
339 case <-time.After(reconnectDelay(attempt)):
340 }
341 var err error
342 if restore {
343 err = b.restoreBridgeState(false)
344 } else {
345 err = b.openJobStream()
346 if shouldRestoreBridgeState(err) {
347 restore = true
348 }
349 }
350 if err != nil {
351 log.Errorf("[bridge] JobStream reconnect attempt %d failed: %v", attempt, err)
352 continue
353 }
354 log.Infof("[bridge] JobStream reconnected after %d attempts", attempt)
355 return
356 }
357}
358
359func (b *Bridge) restoreBridgeState(restoreSpite bool) error {
360 b.reconnectMu.Lock()

Callers 1

handleJobStreamMethod · 0.95

Calls 4

restoreBridgeStateMethod · 0.95
openJobStreamMethod · 0.95
shouldRestoreBridgeStateFunction · 0.85
reconnectDelayFunction · 0.85

Tested by

no test coverage detected