Details
-
Bug
-
Resolution: Done
-
Major - P3
-
None
-
1.0.4
-
None
Description
The following code, that opens a change stream and closes it while the iterator is waiting for an event, panics on master:
package main
|
|
|
import (
|
"context"
|
"fmt"
|
"time"
|
|
|
"go.mongodb.org/mongo-driver/bson"
|
"go.mongodb.org/mongo-driver/mongo"
|
"go.mongodb.org/mongo-driver/mongo/options"
|
)
|
|
|
func main() {
|
opts := options.Client().ApplyURI("mongodb://0.0.0.0/issue")
|
|
|
client, err := mongo.Connect(nil, opts)
|
if err != nil {
|
panic(err)
|
}
|
|
|
db := client.Database("issue")
|
|
|
cs, err := db.Collection("foo").Watch(context.Background(), []bson.M{}, options.ChangeStream())
|
if err != nil {
|
panic(err)
|
}
|
defer cs.Close(nil)
|
|
|
go func() {
|
time.Sleep(time.Second)
|
cs.Close(nil)
|
}()
|
|
|
for cs.Next(context.Background()) {
|
fmt.Println(cs.Current)
|
}
|
}
|
panic: runtime error: invalid memory address or nil pointer dereference
|
[signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x13ae12d]
|
|
|
goroutine 1 [running]:
|
go.mongodb.org/mongo-driver/mongo.(*ChangeStream).loopNext(0xc000102960, 0x15d08c0, 0xc0000a6008)
|
/Users/256dpi/Development/Go/pkg/mod/go.mongodb.org/mongo-driver@v1.0.1-0.20190712184055-9ec4480161a7/mongo/change_stream.go:452 +0x15d
|
go.mongodb.org/mongo-driver/mongo.(*ChangeStream).Next(0xc000102960, 0x15d08c0, 0xc0000a6008, 0x0)
|
/Users/256dpi/Development/Go/pkg/mod/go.mongodb.org/mongo-driver@v1.0.1-0.20190712184055-9ec4480161a7/mongo/change_stream.go:420 +0x151
|
main.main()
|
/Users/256dpi/Development/GitHub/256dpi/fire/spark/issue/main.go:34 +0x35c
|