From e5b1fb5bfa09336c19875c8bd09d28e2e700a698 Mon Sep 17 00:00:00 2001 From: Marvin Zhang Date: Sat, 20 May 2023 14:06:07 +0800 Subject: [PATCH] fix: unable to perform deduplication issue --- result/service_mongo.go | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/result/service_mongo.go b/result/service_mongo.go index 9cfe2a4..6746f98 100644 --- a/result/service_mongo.go +++ b/result/service_mongo.go @@ -48,7 +48,12 @@ func (svc *ServiceMongo) Insert(docs ...interface{}) (err error) { doc.(interfaces.Result).SetValue(constants.HashKey, hash) query := bson.M{constants.HashKey: hash} switch svc.dc.Dedup.Type { - case constants.DedupTypeIgnore: + case constants.DedupTypeOverwrite: + err = mongo.GetMongoCol(svc.dc.Name).ReplaceWithOptions(query, doc, &options.ReplaceOptions{Upsert: &[]bool{true}[0]}) + if err != nil { + return trace.TraceError(err) + } + default: var o bson.M err := mongo.GetMongoCol(svc.dc.Name).Find(query, &mongo.FindOptions{Limit: 1}).One(&o) if err == nil { @@ -64,11 +69,6 @@ func (svc *ServiceMongo) Insert(docs ...interface{}) (err error) { if err != nil { return trace.TraceError(err) } - case constants.DedupTypeOverwrite: - err = mongo.GetMongoCol(svc.dc.Name).ReplaceWithOptions(query, doc, &options.ReplaceOptions{Upsert: &[]bool{true}[0]}) - if err != nil { - return trace.TraceError(err) - } } } } else { @@ -130,10 +130,13 @@ func NewResultServiceMongo(colId primitive.ObjectID, _ primitive.ObjectID) (svc2 } // data collection - svc.dc, err = svc.modelSvc.GetDataCollectionById(colId) - if err != nil { - return nil, err - } + svc.dc, _ = svc.modelSvc.GetDataCollectionById(colId) + go func() { + for { + time.Sleep(1 * time.Second) + svc.dc, _ = svc.modelSvc.GetDataCollectionById(colId) + } + }() // data collection model service svc.modelColSvc = service.GetBaseServiceByColName(interfaces.ModelIdResult, svc.dc.Name)