[client] change notifyDisconnected call (#5138)

On handleJobStream, when handling error codes 
from receiveJobRequest in the switch-case, 
notifying disconnected in cases where it isn't a 
disconnection breaks connection status reporting 
on mobile peers.

This commit changes it so it isn't called on
Canceled or Unimplemented status codes.
This commit is contained in:
Diego Romar
2026-01-20 07:14:33 -03:00
committed by GitHub
parent 58daa674ef
commit 50da5074e7

View File

@@ -185,10 +185,10 @@ func (c *GrpcClient) handleJobStream(
for { for {
jobReq, err := c.receiveJobRequest(ctx, stream, serverPubKey) jobReq, err := c.receiveJobRequest(ctx, stream, serverPubKey)
if err != nil { if err != nil {
c.notifyDisconnected(err)
if s, ok := gstatus.FromError(err); ok { if s, ok := gstatus.FromError(err); ok {
switch s.Code() { switch s.Code() {
case codes.PermissionDenied: case codes.PermissionDenied:
c.notifyDisconnected(err)
return backoff.Permanent(err) // unrecoverable error, propagate to the upper layer return backoff.Permanent(err) // unrecoverable error, propagate to the upper layer
case codes.Canceled: case codes.Canceled:
log.Debugf("management connection context has been canceled, this usually indicates shutdown") log.Debugf("management connection context has been canceled, this usually indicates shutdown")
@@ -198,11 +198,13 @@ func (c *GrpcClient) handleJobStream(
"Please update the management service to use this feature.") "Please update the management service to use this feature.")
return nil return nil
default: default:
c.notifyDisconnected(err)
log.Warnf("disconnected from the Management service but will retry silently. Reason: %v", err) log.Warnf("disconnected from the Management service but will retry silently. Reason: %v", err)
return err return err
} }
} else { } else {
// non-gRPC error // non-gRPC error
c.notifyDisconnected(err)
log.Warnf("disconnected from the Management service but will retry silently. Reason: %v", err) log.Warnf("disconnected from the Management service but will retry silently. Reason: %v", err)
return err return err
} }