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

Reply via email to