You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by vy...@apache.org on 2023/03/23 13:41:19 UTC
[logging-log4j2] branch main updated: Make `HierarchicalCollections` thread-safe
This is an automated email from the ASF dual-hosted git repository.
vy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to refs/heads/main by this push:
new 64c4bd693b Make `HierarchicalCollections` thread-safe
64c4bd693b is described below
commit 64c4bd693b1a1dad42f50572161b41a75933daaf
Author: Volkan Yazıcı <vo...@yazi.ci>
AuthorDate: Thu Mar 23 14:41:14 2023 +0100
Make `HierarchicalCollections` thread-safe
---
.../log4j/plugins/internal/util/HierarchicalCollections.java | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/internal/util/HierarchicalCollections.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/internal/util/HierarchicalCollections.java
index ad47c27427..18d0093b88 100644
--- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/internal/util/HierarchicalCollections.java
+++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/internal/util/HierarchicalCollections.java
@@ -16,13 +16,8 @@
*/
package org.apache.logging.log4j.plugins.internal.util;
-import java.util.AbstractMap;
-import java.util.AbstractSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.NoSuchElementException;
-import java.util.Set;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
class HierarchicalCollections {
static <K, V> HierarchicalMap<K, V> newRootMap() {
@@ -30,7 +25,7 @@ class HierarchicalCollections {
}
private static class RootMap<K, V> extends AbstractMap<K, V> implements HierarchicalMap<K, V> {
- private final Map<K, V> map = new LinkedHashMap<>();
+ private final Map<K, V> map = new ConcurrentHashMap<>();
@Override
public Set<Entry<K, V>> entrySet() {
Re: [logging-log4j2] branch main updated: Make `HierarchicalCollections` thread-safe
Posted by Matt Sicker <ma...@musigma.org>.
That only seems to help in the case where you’re only manipulating local bindings. Keep in mind that proper thread safety here would likely entail using locks or modifying a class similar to ConcurrentHashMap to support hierarchical maps (which probably have a more computer science-like name such as B+trees or similar concepts). Maybe this problem requires some literature review.
> On Mar 23, 2023, at 8:41 AM, vy@apache.org wrote:
>
> This is an automated email from the ASF dual-hosted git repository.
>
> vy pushed a commit to branch main
> in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
>
>
> The following commit(s) were added to refs/heads/main by this push:
> new 64c4bd693b Make `HierarchicalCollections` thread-safe
> 64c4bd693b is described below
>
> commit 64c4bd693b1a1dad42f50572161b41a75933daaf
> Author: Volkan Yazıcı <vo...@yazi.ci>
> AuthorDate: Thu Mar 23 14:41:14 2023 +0100
>
> Make `HierarchicalCollections` thread-safe
> ---
> .../log4j/plugins/internal/util/HierarchicalCollections.java | 11 +++--------
> 1 file changed, 3 insertions(+), 8 deletions(-)
>
> diff --git a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/internal/util/HierarchicalCollections.java b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/internal/util/HierarchicalCollections.java
> index ad47c27427..18d0093b88 100644
> --- a/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/internal/util/HierarchicalCollections.java
> +++ b/log4j-plugins/src/main/java/org/apache/logging/log4j/plugins/internal/util/HierarchicalCollections.java
> @@ -16,13 +16,8 @@
> */
> package org.apache.logging.log4j.plugins.internal.util;
>
> -import java.util.AbstractMap;
> -import java.util.AbstractSet;
> -import java.util.Iterator;
> -import java.util.LinkedHashMap;
> -import java.util.Map;
> -import java.util.NoSuchElementException;
> -import java.util.Set;
> +import java.util.*;
> +import java.util.concurrent.ConcurrentHashMap;
>
> class HierarchicalCollections {
> static <K, V> HierarchicalMap<K, V> newRootMap() {
> @@ -30,7 +25,7 @@ class HierarchicalCollections {
> }
>
> private static class RootMap<K, V> extends AbstractMap<K, V> implements HierarchicalMap<K, V> {
> - private final Map<K, V> map = new LinkedHashMap<>();
> + private final Map<K, V> map = new ConcurrentHashMap<>();
>
> @Override
> public Set<Entry<K, V>> entrySet() {
>