This is an automated email from the ASF dual-hosted git repository.

littlecui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-service-center.git


The following commit(s) were added to refs/heads/master by this push:
     new 9244f791 [fix]sync config without history (#1337)
9244f791 is described below

commit 9244f79150cb34dbf13fa61976ec893eeb191a0f
Author: little-cui <[email protected]>
AuthorDate: Tue Aug 30 22:37:39 2022 +0800

    [fix]sync config without history (#1337)
---
 syncer/service/replicator/resource/config.go | 51 +++++++++++++++++++++++++---
 1 file changed, 47 insertions(+), 4 deletions(-)

diff --git a/syncer/service/replicator/resource/config.go 
b/syncer/service/replicator/resource/config.go
index 73c9a2f5..cb45f22e 100644
--- a/syncer/service/replicator/resource/config.go
+++ b/syncer/service/replicator/resource/config.go
@@ -122,8 +122,26 @@ type docResource interface {
 }
 
 func (c *kvConfig) Create(ctx context.Context, doc *kiemodel.KVDoc) error {
-       _, err := kiedb.GetBroker().GetKVDao().Create(ctx, doc)
-       return err
+       revision, err := kiedb.GetBroker().GetRevisionDao().ApplyRevision(ctx, 
doc.Domain)
+       if err != nil {
+               return fmt.Errorf("apply kv revision failed, %s", err.Error())
+       }
+       completeKV(doc, revision)
+       doc, err = kiedb.GetBroker().GetKVDao().Create(ctx, doc)
+       if err != nil {
+               return fmt.Errorf("create kv failed, %s", err.Error())
+       }
+       err = kiedb.GetBroker().GetHistoryDao().AddHistory(ctx, doc)
+       if err != nil {
+               log.Warn(fmt.Sprintf("can not updateKeyValue version for [%s] 
[%s] in [%s], err: %s",
+                       doc.Key, doc.Labels, doc.Domain, err))
+       }
+       return nil
+}
+
+func completeKV(kv *kiemodel.KVDoc, revision int64) {
+       kv.UpdateRevision = revision
+       kv.CreateRevision = revision
 }
 
 func (c *kvConfig) Get(ctx context.Context, ID string) (*kiemodel.KVDoc, 
error) {
@@ -137,14 +155,39 @@ func (c *kvConfig) Get(ctx context.Context, ID string) 
(*kiemodel.KVDoc, error)
 }
 
 func (c *kvConfig) Update(ctx context.Context, doc *kiemodel.KVDoc) error {
-       return kiedb.GetBroker().GetKVDao().Update(ctx, doc)
+       var err error
+       doc.UpdateRevision, err = 
kiedb.GetBroker().GetRevisionDao().ApplyRevision(ctx, doc.Domain)
+       if err != nil {
+               return fmt.Errorf("apply kv revision failed, %s", err.Error())
+       }
+       err = kiedb.GetBroker().GetKVDao().Update(ctx, doc)
+       if err != nil {
+               return fmt.Errorf("update kv failed, %s", err.Error())
+       }
+       err = kiedb.GetBroker().GetHistoryDao().AddHistory(ctx, doc)
+       if err != nil {
+               log.Warn(fmt.Sprintf("can not add revision for [%s] [%s] in 
[%s], err: %s",
+                       doc.Key, doc.Labels, doc.Domain, err.Error()))
+       }
+       return nil
 }
 
 func (c *kvConfig) Delete(ctx context.Context, ID string) error {
        domain := util.ParseDomain(ctx)
        project := util.ParseProject(ctx)
        _, err := kiedb.GetBroker().GetKVDao().FindOneAndDelete(ctx, ID, 
project, domain)
-       return err
+       if err != nil {
+               return fmt.Errorf("delete kv failed, %s", err.Error())
+       }
+       _, err = kiedb.GetBroker().GetRevisionDao().ApplyRevision(ctx, domain)
+       if err != nil {
+               return fmt.Errorf("the kv [%s] is deleted, but increase 
revision failed, %s", ID, err.Error())
+       }
+       err = kiedb.GetBroker().GetHistoryDao().DelayDeletionTime(ctx, 
[]string{ID}, project, domain)
+       if err != nil {
+               log.Warn(fmt.Sprintf("add delete time to [%s] failed, err: %s", 
ID, err.Error()))
+       }
+       return nil
 }
 
 func (c *kvConfig) CreateHandle(ctx context.Context) error {

Reply via email to