René Zanner created LOG4J2-1196:
-----------------------------------

             Summary: 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
            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: log4j-dev-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-dev-h...@logging.apache.org

Reply via email to