@@ -148,7 +148,7 @@ func (m *Mercury) ListNodeContainers(ctx context.Context, nodename string, label
148
148
key := fmt .Sprintf (nodeContainersKey , nodename , "" )
149
149
resp , err := m .Get (ctx , key , clientv3 .WithPrefix ())
150
150
if err != nil {
151
- return [] * types. Container {} , err
151
+ return nil , err
152
152
}
153
153
154
154
containers := []* types.Container {}
@@ -246,21 +246,26 @@ func (m *Mercury) doGetContainers(ctx context.Context, keys []string) (container
246
246
247
247
func (m * Mercury ) bindContainersAdditions (ctx context.Context , containers []* types.Container ) ([]* types.Container , error ) {
248
248
nodes := map [string ]* types.Node {}
249
+ nodenames := []string {}
250
+ nodenameCache := map [string ]struct {}{}
249
251
statusKeys := map [string ]string {}
250
252
for _ , container := range containers {
251
253
appname , entrypoint , _ , err := utils .ParseContainerName (container .Name )
252
254
if err != nil {
253
255
return nil , err
254
256
}
255
257
statusKeys [container .ID ] = filepath .Join (containerStatusPrefix , appname , entrypoint , container .Nodename , container .ID )
256
- if _ , ok := nodes [container .Nodename ]; ! ok {
257
- node , err := m .GetNode (ctx , container .Nodename )
258
- if err != nil {
259
- return nil , err
260
- }
261
- nodes [node .Name ] = node
258
+ if _ , ok := nodenameCache [container .Nodename ]; ! ok {
259
+ nodenameCache [container .Nodename ] = struct {}{}
260
+ nodenames = append (nodenames , container .Nodename )
262
261
}
263
-
262
+ }
263
+ ns , err := m .GetNodes (ctx , nodenames )
264
+ if err != nil {
265
+ return nil , err
266
+ }
267
+ for _ , node := range ns {
268
+ nodes [node .Name ] = node
264
269
}
265
270
266
271
for index , container := range containers {
@@ -273,7 +278,6 @@ func (m *Mercury) bindContainersAdditions(ctx context.Context, containers []*typ
273
278
}
274
279
kv , err := m .GetOne (ctx , statusKeys [container .ID ])
275
280
if err != nil {
276
- // log.Warnf("[bindContainersAdditions] get status err: %v", err)
277
281
continue
278
282
}
279
283
status := & types.StatusMeta {}
0 commit comments