MCPcopy
hub / github.com/grpc/grpc-go / enterIdleMode

Method enterIdleMode

clientconn.go:439–469  ·  view source on GitHub ↗

enterIdleMode puts the channel in idle mode, and as part of it shuts down the name resolver, load balancer, and any subchannels. This should never be called directly; use cc.idlenessMgr.EnterIdleMode instead.

()

Source from the content-addressed store, hash-verified

437// name resolver, load balancer, and any subchannels. This should never be
438// called directly; use cc.idlenessMgr.EnterIdleMode instead.
439func (cc *ClientConn) enterIdleMode() {
440 cc.mu.Lock()
441
442 if cc.conns == nil {
443 cc.mu.Unlock()
444 return
445 }
446
447 conns := cc.conns
448
449 rWrapper := cc.resolverWrapper
450 rWrapper.close()
451 cc.pickerWrapper.reset()
452 bWrapper := cc.balancerWrapper
453 bWrapper.close()
454 cc.csMgr.updateState(connectivity.Idle)
455 cc.addTraceEvent("entering idle mode")
456
457 cc.initIdleStateLocked()
458
459 cc.mu.Unlock()
460
461 // Block until the name resolver and LB policy are closed.
462 <-rWrapper.serializer.Done()
463 <-bWrapper.serializer.Done()
464
465 // Close all subchannels after the LB policy is closed.
466 for ac := range conns {
467 ac.tearDown(errConnIdling)
468 }
469}
470
471// validateTransportCredentials performs a series of checks on the configured
472// transport credentials. It returns a non-nil error if any of these conditions

Callers 1

EnterIdleModeMethod · 0.80

Calls 9

addTraceEventMethod · 0.95
initIdleStateLockedMethod · 0.95
LockMethod · 0.45
UnlockMethod · 0.45
closeMethod · 0.45
resetMethod · 0.45
updateStateMethod · 0.45
DoneMethod · 0.45
tearDownMethod · 0.45

Tested by

no test coverage detected