You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2016/08/22 15:40:21 UTC

[07/16] logging-log4j2 git commit: LOG4J2-1516 moved putAll(Map) method into separate ThreadContextMap2 interface

LOG4J2-1516 moved putAll(Map) method into separate ThreadContextMap2 interface


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/4182abd0
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/4182abd0
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/4182abd0

Branch: refs/heads/LOG4J2-1349-gcfree-threadcontext
Commit: 4182abd080e2f1fd8bf4d866823555b410fc5bc4
Parents: 4a0962b
Author: rpopma <rp...@apache.org>
Authored: Sat Aug 20 09:15:43 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Tue Aug 23 00:31:07 2016 +0900

----------------------------------------------------------------------
 .../log4j/spi/AbstractCopyOnWriteMutableThreadContext.java   | 4 +++-
 .../log4j/spi/AbstractGarbageFreeMutableThreadContext.java   | 8 +++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4182abd0/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractCopyOnWriteMutableThreadContext.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractCopyOnWriteMutableThreadContext.java b/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractCopyOnWriteMutableThreadContext.java
index fe6c367..42529f7 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractCopyOnWriteMutableThreadContext.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractCopyOnWriteMutableThreadContext.java
@@ -27,8 +27,10 @@ import org.apache.logging.log4j.util.PropertiesUtil;
  * immutable. This means the Map can be passed to other threads without concern that it will be updated. Since it is
  * expected that the Map will be passed to many more log events than the number of keys it contains the performance
  * should be much better than if the Map was copied for each event.
+ *
+ * @since 2.7
  */
-public abstract class AbstractCopyOnWriteMutableThreadContext implements ThreadContextMap {
+public abstract class AbstractCopyOnWriteMutableThreadContext implements ThreadContextMap, ThreadContextMap2 {
     /**
      * Property name ({@value} ) for selecting {@code InheritableThreadLocal} (value "true") or plain
      * {@code ThreadLocal} (value is not "true") in the implementation.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/4182abd0/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractGarbageFreeMutableThreadContext.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractGarbageFreeMutableThreadContext.java b/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractGarbageFreeMutableThreadContext.java
index 45010a0..73636a9 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractGarbageFreeMutableThreadContext.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractGarbageFreeMutableThreadContext.java
@@ -23,8 +23,14 @@ import org.apache.logging.log4j.util.PropertiesUtil;
 
 /**
  * Garbage-free ThreadContextMap implementation backed by {@code MutableContextData}.
+ * <p>
+ * This implementation does <em>not</em> make a copy of its contents on every operation, so this data structure cannot
+ * be passed to log events. It is advisable to provide a fast way to copy data from this data structure into log
+ * events.
+ * </p>
+ * @since 2.7
  */
-public abstract class AbstractGarbageFreeMutableThreadContext implements ThreadContextMap {
+public abstract class AbstractGarbageFreeMutableThreadContext implements ThreadContextMap, ThreadContextMap2 {
     /**
      * Property name ({@value} ) for selecting {@code InheritableThreadLocal} (value "true") or plain
      * {@code ThreadLocal} (value is not "true") in the implementation.