You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2014/06/22 20:33:15 UTC
svn commit: r1604636 - in /logging/log4j/log4j2/trunk/log4j-nosql/src:
main/java/org/apache/logging/log4j/nosql/appender/NoSQLDatabaseManager.java
test/java/org/apache/logging/log4j/nosql/appender/NoSQLDatabaseManagerTest.java
Author: mattsicker
Date: Sun Jun 22 18:33:14 2014
New Revision: 1604636
URL: http://svn.apache.org/r1604636
Log:
Don't close NoSQL clients on commit.
- Related to LOG4J2-676.
- Our NoSQL drivers are actually clients which means calling close() on them (or equivalent) is really more like shutting down the connection pool than closing an individual connection.
Modified:
logging/log4j/log4j2/trunk/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSQLDatabaseManager.java
logging/log4j/log4j2/trunk/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSQLDatabaseManagerTest.java
Modified: logging/log4j/log4j2/trunk/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSQLDatabaseManager.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSQLDatabaseManager.java?rev=1604636&r1=1604635&r2=1604636&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSQLDatabaseManager.java (original)
+++ logging/log4j/log4j2/trunk/log4j-nosql/src/main/java/org/apache/logging/log4j/nosql/appender/NoSQLDatabaseManager.java Sun Jun 22 18:33:14 2014
@@ -51,6 +51,7 @@ public final class NoSQLDatabaseManager<
@Override
protected void shutdownInternal() {
+ // NoSQL doesn't use transactions, so all we need to do here is simply close the client
Closer.closeSilent(this.connection);
}
@@ -155,13 +156,10 @@ public final class NoSQLDatabaseManager<
@Override
protected void commitAndClose() {
- try {
- if (this.connection != null && !this.connection.isClosed()) {
- this.connection.close();
- }
- } catch (Exception e) {
- throw new AppenderLoggingException("Failed to commit and close NoSQL connection in manager.", e);
- }
+ // all NoSQL drivers auto-commit (since NoSQL doesn't generally use the concept of transactions).
+ // also, all our NoSQL drivers use internal connection pooling and provide clients, not connections.
+ // thus, we should not be closing the client until shutdown as NoSQL is very different from SQL.
+ // see LOG4J2-591 and LOG4J2-676
}
private NoSQLObject<W>[] convertStackTrace(final StackTraceElement[] stackTrace) {
Modified: logging/log4j/log4j2/trunk/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSQLDatabaseManagerTest.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSQLDatabaseManagerTest.java?rev=1604636&r1=1604635&r2=1604636&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSQLDatabaseManagerTest.java (original)
+++ logging/log4j/log4j2/trunk/log4j-nosql/src/test/java/org/apache/logging/log4j/nosql/appender/NoSQLDatabaseManagerTest.java Sun Jun 22 18:33:14 2014
@@ -71,14 +71,6 @@ public class NoSQLDatabaseManagerTest {
replay(this.provider, this.connection);
manager.connectAndStart();
-
- verify(this.provider, this.connection);
- reset(this.provider, this.connection);
- expect(this.connection.isClosed()).andReturn(false);
- this.connection.close();
- expectLastCall();
- replay(this.provider, this.connection);
-
manager.commitAndClose();
} finally {
try {
@@ -148,13 +140,6 @@ public class NoSQLDatabaseManagerTest {
} catch (AppenderLoggingException ignore) {
/* */
}
-
- verify(this.provider, this.connection, event);
- reset(this.provider, this.connection);
- expect(this.connection.isClosed()).andReturn(false);
- this.connection.close();
- expectLastCall();
- replay(this.provider, this.connection);
} finally {
try {
manager.release();
@@ -242,11 +227,6 @@ public class NoSQLDatabaseManagerTest {
assertNull("The context stack should be null.", object.get("contextStack"));
verify(this.provider, this.connection, event, message);
- reset(this.provider, this.connection);
- expect(this.connection.isClosed()).andReturn(false);
- this.connection.close();
- expectLastCall();
- replay(this.provider, this.connection);
} finally {
try {
manager.release();
@@ -382,11 +362,6 @@ public class NoSQLDatabaseManagerTest {
assertEquals("The context stack is not correct.", stack.asList(), object.get("contextStack"));
verify(this.provider, this.connection, event, message);
- reset(this.provider, this.connection);
- expect(this.connection.isClosed()).andReturn(false);
- this.connection.close();
- expectLastCall();
- replay(this.provider, this.connection);
} finally {
try {
manager.release();
@@ -584,11 +559,6 @@ public class NoSQLDatabaseManagerTest {
assertEquals("The context stack is not correct.", stack.asList(), object.get("contextStack"));
verify(this.provider, this.connection, event, message);
- reset(this.provider, this.connection);
- expect(this.connection.isClosed()).andReturn(false);
- this.connection.close();
- expectLastCall();
- replay(this.provider, this.connection);
} finally {
try {
manager.release();