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 <[email protected]> Authored: Sat Aug 20 09:15:43 2016 +0900 Committer: rpopma <[email protected]> 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.
