[
https://issues.apache.org/jira/browse/LOG4J2-1196?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15006790#comment-15006790
]
Matt Sicker commented on LOG4J2-1196:
-------------------------------------
Well, for one, there is no "this.mongo" field in that class.
> MongoDbConnection does not close MongoClient
> --------------------------------------------
>
> Key: LOG4J2-1196
> URL: https://issues.apache.org/jira/browse/LOG4J2-1196
> Project: Log4j 2
> Issue Type: Bug
> Components: Appenders
> Affects Versions: 2.2, 2.3, 2.4, 2.4.1
> Reporter: René Zanner
> Priority: Critical
>
> When shutting down Log4J, e. g. during undeployment of a web application, the
> MongoClient opened by the MongoDbProvider must be closed by the
> MongoDbConnection.close() method. Otherwise the thread pool opened by the
> MongoClient will not get shutdown, since the MongoClient itself won't get
> closed.
> The quick fix is to remove the comments {code} // there's no need to
> call this.mongo.close() since that literally closes the connection
> // MongoDBClient uses internal connection pooling
> // for more details, see LOG4J2-591
> {code} from the "close()" method of MongoDbConnection, as it's very
> misleading and, actually, wrong.
> Instead, you really have to call {code}this.mongo.close(){code} here, because
> the "close()" method of the MongoDbConnection is called *only* when shutting
> down NoSqlDatabaseManager using shutdownInternal().
> My suggestion is to implement a similar strategy as used in the
> CouchDbConnection - using an AtomicBoolean flag to check whether "close()"
> has already been called.
> This way the code also works for the new MongoDB Java driver 3.x API.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]