Copilot commented on code in PR #2531: URL: https://github.com/apache/apisix-ingress-controller/pull/2531#discussion_r2303394193
########## internal/adc/client/client.go: ########## @@ -72,119 +72,92 @@ type Task struct { Resources *adctypes.Resources } -func (d *Client) Update(ctx context.Context, args Task) error { +type StoreDelta struct { + Deleted map[types.NamespacedNameKind]adctypes.Config + Applied map[types.NamespacedNameKind]adctypes.Config +} + +func (d *Client) applyStoreChanges(args Task, isDelete bool) (StoreDelta, error) { d.mu.Lock() - deleteConfigs := d.ConfigManager.Update(args.Key, args.Configs) - for _, config := range deleteConfigs { - if err := d.Store.Delete(config.Name, args.ResourceTypes, args.Labels); err != nil { - log.Errorw("failed to delete resources from store", - zap.String("name", config.Name), - zap.Error(err), - ) - return err + defer d.mu.Unlock() + + var delta StoreDelta + + if isDelete { + delta.Deleted = d.ConfigManager.Get(args.Key) + d.ConfigManager.Delete(args.Key) + } else { + deleted := d.ConfigManager.Update(args.Key, args.Configs) + delta.Deleted = deleted + delta.Applied = args.Configs + } + + for _, cfg := range delta.Deleted { + if err := d.Store.Delete(cfg.Name, args.ResourceTypes, args.Labels); err != nil { + return StoreDelta{}, errors.Wrap(err, "store delete failed") } } - for _, config := range args.Configs { - if err := d.Insert(config.Name, args.ResourceTypes, args.Resources, args.Labels); err != nil { - log.Errorw("failed to insert resources into store", - zap.String("name", config.Name), - zap.Error(err), - ) - return err + for _, cfg := range delta.Applied { + if err := d.Insert(cfg.Name, args.ResourceTypes, args.Resources, args.Labels); err != nil { + return StoreDelta{}, errors.Wrap(err, "store insert failed") Review Comment: The error messages "store delete failed" and "store insert failed" are too generic. They should include the configuration name or other identifying information to help with debugging when these operations fail. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: notifications-unsubscr...@apisix.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org