diff --git a/plugins/database/mongodb/connection_producer.go b/plugins/database/mongodb/connection_producer.go index 9674d10bf7c1..aa674aafe3a2 100644 --- a/plugins/database/mongodb/connection_producer.go +++ b/plugins/database/mongodb/connection_producer.go @@ -90,12 +90,18 @@ func (c *mongoDBConnectionProducer) Initialize(ctx context.Context, conf map[str // Connection creates a database connection. func (c *mongoDBConnectionProducer) Connection(_ context.Context) (interface{}, error) { + c.Lock() + defer c.Unlock() + if !c.Initialized { return nil, connutil.ErrNotInitialized } if c.session != nil { - return c.session, nil + if err := c.session.Ping(); err == nil { + return c.session, nil + } + c.session.Close() } dialInfo, err := parseMongoURL(c.ConnectionURL)