[
https://issues.apache.org/jira/browse/ARTEMIS-2095?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16628497#comment-16628497
]
ASF GitHub Bot commented on ARTEMIS-2095:
-----------------------------------------
GitHub user michaelandrepearce opened a pull request:
https://github.com/apache/activemq-artemis/pull/2331
ARTEMIS-2095 - Typed Properties ThreadSafety
Add Concurrency Test to expose concurrency errors seen in logs.
Add Fix to ensure TypedProperties to ensure threadsafety
Add forEach and forEachKey to allow for provide a thread safe way of
iterating through keys and values, without needing to duplicate the collection.
Add getMapNames method to remove code duplication and to ensure thread safe
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/michaelandrepearce/activemq-artemis
ARTEMIS-2095
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/activemq-artemis/pull/2331.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #2331
----
commit 18a889e4515459e80ebbc8920958fd26259f13aa
Author: Michael André Pearce <michael.andre.pearce@...>
Date: 2018-09-25T21:57:12Z
ARTEMIS-2095 - Typed Properties ThreadSafety
Add Concurrency Test to expose concurrency errors seen in logs.
Add Fix to ensure TypedProperties to ensure threadsafety
Add forEach and forEachKey to allow for provide a thread safe way of
iterating through keys and values, without needing to duplicate the collection.
Add getMapNames method to remove code duplication and to ensure thread safe
----
> TypedProperties thread safety
> -----------------------------
>
> Key: ARTEMIS-2095
> URL: https://issues.apache.org/jira/browse/ARTEMIS-2095
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Reporter: Michael Andre Pearce
> Assignee: Michael Andre Pearce
> Priority: Major
>
> Whilst TypedProperties is meant to have a single thread acting on it (and
> this is the most typical interaction), there are occurrences where, it can be
> acted on by other threads, when this occurs some concurrent modification
> errors can occur.
> As such TypedProperties must be thread safe, but concurrency tuning should
> factor in to be most performant for single thread.
>
> e.g.
> 2018-09-24 15:01:27,751 WARN
> [org.apache.activemq.artemis.core.message.impl.CoreMessage] Error creating
> String for message: : java.util.ConcurrentModificationException at
> java.util.HashMap$HashIterator.nextNode(HashMap.java:1437) [rt.jar:1.8.0_102]
> at java.util.HashMap$EntryIterator.next(HashMap.java:1471) [rt.jar:1.8.0_102]
> at java.util.HashMap$EntryIterator.next(HashMap.java:1469) [rt.jar:1.8.0_102]
> at
> org.apache.activemq.artemis.utils.collections.TypedProperties.toString(TypedProperties.java:464)
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)