field-services icon indicating copy to clipboard operation
field-services copied to clipboard

Potential import collision: import path should be "go.mongodb.org/mongo-driver", not "github.com/mongodb/mongo-go-driver"

Open KateGo520 opened this issue 3 years ago • 1 comments

Background

I find that go.mongodb.org/mongo-driver and github.com/mongodb/mongo-go-driver coexist in this repo: https://github.com/longfellowone/field-services/blob/master/go.mod (Line 22 & 32)

github.com/mongodb/mongo-go-driver v1.0.1
go.mongodb.org/mongo-driver v1.0.1 // indirect

That’s because the mongodb/mongo-go-driver has already renamed it’s import path from "github.com/mongodb/mongo-go-driver" to "go.mongodb.org/mongo-driver". When you use the old path "github.com/mongodb/mongo-go-driver" to import the mongodb/mongo-go-driver, will reintroduces mongodb/mongo-go-driver through the import statements "import go.mongodb.org/mongo-driver" in the go source file of mongodb/mongo-go-driver.

https://github.com/mongodb/mongo-go-driver/blob/v1.0.1/mongo/client.go#L16

package mongo
import (
	"go.mongodb.org/mongo-driver/bson"
	"go.mongodb.org/mongo-driver/bson/bsoncodec"
	…
)

The "go.mongodb.org/mongo-driver" and "github.com/mongodb/mongo-go-driver" are the same repos. This will work in isolation, bring about potential risks and problems.

Solution

Follow the requirements of mongodb/mongo-go-driver README.md:

To get started with the driver, import the mongo package, create a mongo.Client:

import (
    "go.mongodb.org/mongo-driver/mongo"
    "go.mongodb.org/mongo-driver/mongo/options"
)
…

Replace all the old import paths, change "github.com/mongodb/mongo-go-driver" to "go.mongodb.org/mongo-driver". Where did you import it: https://github.com/longfellowone/field-services/search?q=github.com%2Fmongodb%2Fmongo-go-driver&unscoped_q=github.com%2Fmongodb%2Fmongo-go-driver

KateGo520 avatar Aug 10 '20 09:08 KateGo520

@longfellowone Could you help me review this issue? Thx :p

KateGo520 avatar Aug 10 '20 09:08 KateGo520