diff --git a/pkg/storage/mongo/mongo.go b/pkg/storage/mongo/mongo.go index 721929ff..ff379de5 100644 --- a/pkg/storage/mongo/mongo.go +++ b/pkg/storage/mongo/mongo.go @@ -62,7 +62,6 @@ func (m *ModuleStore) initDatabase() error { index := mgo.Index{ Key: []string{"base_url", "module", "version"}, Unique: true, - DropDups: true, Background: true, Sparse: true, } diff --git a/pkg/storage/mongo/saver.go b/pkg/storage/mongo/saver.go index dad3cd7b..3eb45f4c 100644 --- a/pkg/storage/mongo/saver.go +++ b/pkg/storage/mongo/saver.go @@ -16,6 +16,14 @@ func (s *ModuleStore) Save(ctx context.Context, module, version string, mod []by ctx, span := observ.StartSpan(ctx, op.String()) defer span.End() + exists, err := s.Exists(ctx, module, version) + if err != nil { + return errors.E(op, err, errors.M(module), errors.V(version)) + } + if exists { + return errors.E(op, "already exists", errors.M(module), errors.V(version), errors.KindAlreadyExists) + } + zipName := s.gridFileName(module, version) fs := s.s.DB(s.d).GridFS("fs") f, err := fs.Create(zipName)