Skip to content

Commit 173d928

Browse files
committed
Merge remote-tracking branch 'upstream/develop' into agent-skills
2 parents 8a457d9 + 66e05df commit 173d928

84 files changed

Lines changed: 1984 additions & 797 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

cluster/cluster/adaptivesvc/cluster_invoker.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,21 +86,21 @@ func (ivk *adaptiveServiceClusterInvoker) Invoke(ctx context.Context, invocation
8686
}
8787
}
8888
if remainingStr == "" {
89-
logger.Errorf("[adasvc cluster] The %s field type of value %v should be string.",
90-
constant.AdaptiveServiceRemainingKey, remainingIface)
89+
logger.Errorf("[Cluster][AdaptiveSvc] %s field type invalid, key=%s value=%v, expected string",
90+
constant.AdaptiveServiceRemainingKey, constant.AdaptiveServiceRemainingKey, remainingIface)
9191
return res
9292
}
9393
remaining, err := strconv.Atoi(remainingStr)
9494
if err != nil {
95-
logger.Warnf("the remaining is unexpected, we need a int type, but we got %s, err: %v.", remainingStr, err)
95+
logger.Warnf("[Cluster][AdaptiveSvc] parse remaining failed, remaining=%s err=%v, expected int", remainingStr, err)
9696
return res
9797
}
98-
logger.Debugf("[adasvc cluster] The server status was received successfully, %s: %#v",
98+
logger.Debugf("[Cluster][AdaptiveSvc] received server status, %s=%s",
9999
constant.AdaptiveServiceRemainingKey, remainingStr)
100100
err = metrics.LocalMetrics.SetMethodMetrics(invoker.GetURL(),
101101
invocation.MethodName(), metrics.HillClimbing, uint64(remaining))
102102
if err != nil {
103-
logger.Warnf("adaptive service metrics update is failed, err: %v", err)
103+
logger.Warnf("[Cluster][AdaptiveSvc] update metrics failed, err=%v", err)
104104
return &result.RPCResult{Err: err}
105105
}
106106

cluster/cluster/base/cluster_invoker.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ func (invoker *BaseClusterInvoker) doSelectInvoker(lb loadbalance.LoadBalance, i
127127
return invokers[0]
128128
}
129129
base.SetInvokerUnhealthyStatus(invokers[0])
130-
logger.Errorf("the invokers of %s is nil. ", invokers[0].GetURL().ServiceKey())
130+
logger.Errorf("[Cluster] invoker unavailable, serviceKey=%s, reason=nil", invokers[0].GetURL().ServiceKey())
131131
return nil
132132
}
133133

@@ -149,8 +149,7 @@ func (invoker *BaseClusterInvoker) doSelectInvoker(lb loadbalance.LoadBalance, i
149149
continue
150150
}
151151
if !reselectedInvoker.IsAvailable() {
152-
logger.Infof("the invoker of %s is not available, maybe some network error happened or the server is shutdown.",
153-
invoker.GetURL().Ip)
152+
logger.Infof("[Cluster] invoker unavailable, ip=%s", invoker.GetURL().Ip)
154153
base.SetInvokerUnhealthyStatus(reselectedInvoker)
155154
otherInvokers = getOtherInvokers(otherInvokers, reselectedInvoker)
156155
continue

cluster/cluster/broadcast/cluster_invoker.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func (invoker *broadcastClusterInvoker) Invoke(ctx context.Context, invocation p
5858
for _, ivk := range invokers {
5959
res = ivk.Invoke(ctx, invocation)
6060
if res.Error() != nil {
61-
logger.Warnf("broadcast invoker invoke err: %v when use invoker: %v\n", res.Error(), ivk)
61+
logger.Warnf("[Cluster][Broadcast] invoke failed, err=%v invoker=%v", res.Error(), ivk)
6262
err = res.Error()
6363
}
6464
}

cluster/cluster/failback/cluster_invoker.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func newFailbackClusterInvoker(directory directory.Directory) protocolbase.Invok
6565
retriesConfig := invoker.GetURL().GetParam(constant.RetriesKey, constant.DefaultFailbackTimes)
6666
retries, err := strconv.Atoi(retriesConfig)
6767
if err != nil || retries < 0 {
68-
logger.Error("Your retries config is invalid,pls do a check. And will use the default fail back times configuration instead.")
68+
logger.Error("[Cluster][Failback] retries config invalid, using default")
6969
retries = constant.DefaultFailbackTimesInt
7070
}
7171

@@ -112,7 +112,7 @@ func (invoker *failbackClusterInvoker) process(ctx context.Context) {
112112

113113
// ignore return. the get must success.
114114
if _, err = invoker.taskList.Get(1); err != nil {
115-
logger.Warnf("get task found err: %v\n", err)
115+
logger.Warnf("[Cluster][Failback] get task failed, err=%v", err)
116116
break
117117
}
118118
go invoker.tryTimerTaskProc(ctx, retryTask)
@@ -124,7 +124,7 @@ func (invoker *failbackClusterInvoker) process(ctx context.Context) {
124124
func (invoker *failbackClusterInvoker) Invoke(ctx context.Context, invocation protocolbase.Invocation) result.Result {
125125
invokers := invoker.Directory.List(invocation)
126126
if err := invoker.CheckInvokers(invokers, invocation); err != nil {
127-
logger.Errorf("Failed to invoke the method %v in the service %v, wait for retry in background. Ignored exception: %v.\n",
127+
logger.Errorf("[Cluster][Failback] check invokers failed, method=%s service=%s err=%v",
128128
invocation.MethodName(), invoker.GetURL().Service(), err)
129129
return &result.RPCResult{}
130130
}
@@ -151,14 +151,14 @@ func (invoker *failbackClusterInvoker) Invoke(ctx context.Context, invocation pr
151151

152152
taskLen := invoker.taskList.Len()
153153
if taskLen >= invoker.failbackTasks {
154-
logger.Warnf("tasklist is too full > %d.\n", taskLen)
154+
logger.Warnf("[Cluster][Failback] task list full, len=%d", taskLen)
155155
return &result.RPCResult{}
156156
}
157157

158158
timerTask := newRetryTimerTask(loadBalance, invocation, invokers, ivk, invoker)
159159
invoker.taskList.Put(timerTask)
160160

161-
logger.Errorf("Failback to invoke the method %v in the service %v, wait for retry in background. Ignored exception: %v.\n",
161+
logger.Errorf("[Cluster][Failback] invoke failed, method=%s service=%s err=%v",
162162
methodName, url.Service(), res.Error().Error())
163163
// ignore
164164
return &result.RPCResult{}
@@ -192,21 +192,21 @@ type retryTimerTask struct {
192192
}
193193

194194
func (t *retryTimerTask) checkRetry() {
195-
logger.Errorf("Failed retry to invoke the method %v in the service %v, wait again. The exception: %v",
195+
logger.Errorf("[Cluster][Failback] retry failed, method=%s service=%s err=%v",
196196
t.invocation.MethodName(), t.clusterInvoker.GetURL().Service(), t.lastErr)
197197
t.retries++
198198
t.nextBackoff = t.backoff.NextBackOff() // calculate next exponential backoff wait time
199199

200200
if t.retries > t.maxRetries || t.nextBackoff == backoff.Stop {
201-
logger.Errorf("Retry times exceed threshold (%v), invocation-> %v",
201+
logger.Errorf("[Cluster][Failback] retry exceeded, retries=%d invocation=%v",
202202
t.retries, t.invocation)
203203
return
204204
}
205205

206-
logger.Infof("Failback retry scheduled after %v for method %v", t.nextBackoff, t.invocation.MethodName())
206+
logger.Infof("[Cluster][Failback] retry scheduled, backoff=%v method=%s", t.nextBackoff, t.invocation.MethodName())
207207

208208
if err := t.clusterInvoker.taskList.Put(t); err != nil {
209-
logger.Errorf("invoker.taskList.Put(retryTask:%#v) = error:%v", t, err)
209+
logger.Errorf("[Cluster][Failback] put task failed, task=%v err=%v", t, err)
210210
return
211211
}
212212
t.lastT = time.Now() // update lastT after successful Put

cluster/cluster/failover/cluster_invoker.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package failover
1919

2020
import (
2121
"context"
22-
"fmt"
2322
"strconv"
2423
)
2524

@@ -97,17 +96,15 @@ func (invoker *failoverClusterInvoker) Invoke(ctx context.Context, invocation pr
9796
invokerSvc := invoker.GetURL().Service()
9897
invokerUrl := invoker.Directory.GetURL()
9998
if ivk == nil {
100-
logger.Errorf("Failed to invoke the method %s of the service %s .No provider is available.", methodName, invokerSvc)
99+
logger.Errorf("[Cluster][Failover] no provider available, method=%s service=%s", methodName, invokerSvc)
101100
return &result.RPCResult{
102101
Err: perrors.Errorf("Failed to invoke the method %s of the service %s .No provider is available because can't connect server.",
103102
methodName, invokerSvc),
104103
}
105104
}
106105

107-
logger.Errorf(fmt.Sprintf("Failed to invoke the method %v in the service %v. "+
108-
"Tried %v times of the providers %v (%v/%v) from the registry %v on the consumer %v using the dubbo version %v. "+
109-
"Last error is %+v.", methodName, invokerSvc, retries, providers, len(providers), len(invokers),
110-
invokerUrl, ip, constant.Version, res.Error().Error()))
106+
logger.Errorf("[Cluster][Failover] invoke failed after retries, method=%s service=%s retries=%d providers=%d/%d registry=%s consumer=%s version=%s lastErr=%v",
107+
methodName, invokerSvc, retries, len(providers), len(invokers), invokerUrl, ip, constant.Version, res.Error().Error())
111108

112109
return res
113110
}

cluster/cluster/failsafe/cluster_invoker.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func (invoker *failsafeClusterInvoker) Invoke(ctx context.Context, invocation pr
7777
res = ivk.Invoke(ctx, invocation)
7878
if res.Error() != nil {
7979
// ignore
80-
logger.Errorf("Failsafe ignore exception: %v.\n", res.Error().Error())
80+
logger.Errorf("[Cluster][Failsafe] ignore exception, err=%v", res.Error().Error())
8181
return &result.RPCResult{}
8282
}
8383
return res

cluster/cluster/forking/cluster_invoker.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ func (invoker *forkingClusterInvoker) Invoke(ctx context.Context, invocation pro
7676
go func(k protocolbase.Invoker) {
7777
result := k.Invoke(ctx, invocation)
7878
if err := resultQ.Put(result); err != nil {
79-
logger.Errorf("resultQ put failed with exception: %v.\n", err)
79+
logger.Errorf("[Cluster][Forking] resultQ put failed with exception err=%v", err)
8080
}
8181
}(ivk)
8282
}

cluster/cluster/mock.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ func (bi *MockInvoker) Invoke(c context.Context, invocation base.Invocation) res
102102
}
103103

104104
func (bi *MockInvoker) Destroy() {
105-
logger.Infof("Destroy invoker: %v", bi.GetURL().String())
105+
logger.Infof("[Mock] Destroy invoker url=%s", bi.GetURL().String())
106106
bi.destroyed = true
107107
bi.available = false
108108
}

cluster/directory/static/directory.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func NewDirectory(invokers []protocolbase.Invoker) *directory {
4949

5050
err := dir.BuildRouterChain(invokers, url)
5151
if err != nil {
52-
logger.Error(err)
52+
logger.Errorf("[Cluster][Directory] build router chain failed, err=%v", err)
5353
dir.RouterChain().SetInvokers(invokers)
5454
}
5555

cluster/loadbalance/consistenthashing/loadbalance.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"encoding/json"
2222
"hash/crc32"
2323
"regexp"
24+
"sync"
2425
)
2526

2627
import (
@@ -38,8 +39,9 @@ const (
3839
)
3940

4041
var (
41-
selectors = make(map[string]*selector)
42-
re = regexp.MustCompile(constant.CommaSplitPattern)
42+
selectors = make(map[string]*selector)
43+
selectorsMu sync.RWMutex
44+
re = regexp.MustCompile(constant.CommaSplitPattern)
4345
)
4446

4547
func init() {
@@ -71,10 +73,19 @@ func (lb *conshashLoadBalance) Select(invokers []base.Invoker, invocation base.I
7173
bs = append(bs, b...)
7274
}
7375
hashCode := crc32.ChecksumIEEE(bs)
76+
77+
selectorsMu.RLock()
7478
selector, ok := selectors[key]
79+
selectorsMu.RUnlock()
80+
7581
if !ok || selector.hashCode != hashCode {
76-
selectors[key] = newSelector(invokers, methodName, hashCode)
82+
selectorsMu.Lock()
83+
selector, ok = selectors[key]
84+
if !ok || selector.hashCode != hashCode {
85+
selectors[key] = newSelector(invokers, methodName, hashCode)
86+
}
7787
selector = selectors[key]
88+
selectorsMu.Unlock()
7889
}
7990
return selector.Select(invocation)
8091
}

0 commit comments

Comments
 (0)