MCPcopy Create free account
hub / github.com/cppla/moto / dialOne

Method dialOne

controller/prewarm.go:71–95  ·  view source on GitHub ↗

dialOne 拨号一个连接并加入空闲池。

()

Source from the content-addressed store, hash-verified

69
70// dialOne 拨号一个连接并加入空闲池。
71func (p *prewarmPool) dialOne() {
72 conn, err := DialFast(p.addr)
73 if err != nil {
74 utils.Logger.Warn("预热连接失败", zap.String("target", p.addr), zap.Error(err))
75 time.Sleep(500 * time.Millisecond)
76 p.mu.Lock()
77 p.warming--
78 if p.warming < 0 {
79 p.warming = 0
80 }
81 p.ensureLocked()
82 p.mu.Unlock()
83 return
84 }
85 if tc, ok := conn.(*net.TCPConn); ok {
86 _ = tc.SetKeepAlive(true)
87 _ = tc.SetKeepAlivePeriod(30 * time.Second)
88 _ = tc.SetNoDelay(true)
89 }
90 p.mu.Lock()
91 p.warming--
92 p.idle = append(p.idle, conn)
93 p.ensureLocked()
94 p.mu.Unlock()
95}
96
97// acquirePrewarmed 优先从预热池取出可用连接。
98func acquirePrewarmed(addr string) (net.Conn, bool) {

Callers 1

ensureLockedMethod · 0.95

Calls 2

ensureLockedMethod · 0.95
DialFastFunction · 0.85

Tested by

no test coverage detected