in server/datasource/mongo/history/history_dao.go [136:181]
func historyRotate(ctx context.Context, kvID, project, domain string) error {
filter := bson.M{"id": kvID, "domain": domain, "project": project}
collection := mongo.GetClient().GetDB().Collection(mmodel.CollectionKVRevision)
curTotal, err := collection.CountDocuments(ctx, filter)
if err != nil {
return err
}
if curTotal <= datasource.MaxHistoryNum {
return nil
}
opt := options.Find().SetSort(map[string]interface{}{
"update_revision": 1,
})
opt = opt.SetLimit(curTotal - datasource.MaxHistoryNum)
cur, err := collection.Find(ctx, filter, opt)
if err != nil {
return err
}
defer cur.Close(ctx)
if cur.Err() != nil {
return err
}
for cur.Next(ctx) {
curKV := &model.KVDoc{}
if err := cur.Decode(curKV); err != nil {
openlog.Error("decode to KVs error: " + err.Error())
return err
}
_, err := collection.DeleteOne(ctx, bson.M{
"id": kvID,
"domain": domain,
"project": project,
"update_revision": curKV.UpdateRevision,
})
if err != nil {
return err
}
openlog.Debug("delete overflowed revision", openlog.WithTags(openlog.Tags{
"id": curKV.ID,
"key": curKV.Key,
"revision": curKV.UpdateRevision,
}))
}
return nil
}