[ 
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)

Reply via email to