[ 
https://issues.apache.org/jira/browse/ARTEMIS-1356?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16136697#comment-16136697
 ] 

ASF GitHub Bot commented on ARTEMIS-1356:
-----------------------------------------

Github user franz1981 commented on a diff in the pull request:

    https://github.com/apache/activemq-artemis/pull/1477#discussion_r134461348
  
    --- Diff: 
artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/core/ServerSessionPacketHandler.java
 ---
    @@ -159,7 +158,11 @@
     
        private final boolean direct;
     
    -   private static final ThreadLocal<AtomicBoolean> inHandler = 
ThreadLocal.withInitial(AtomicBoolean::new);
    +   //marker instance used to recognize if a thread is performing a packet 
handling
    +   private static final Object DUMMY = Boolean.TRUE;
    +
    +   //a thread that has its thread-local map populated with DUMMY is 
performing a packet handling
    +   private static final ThreadLocal<Object> inHandler = new 
ThreadLocal<>();
    --- End diff --
    
    Because it is not needed to be a Boolean: it is just a marker, so even a 
DUMMY = new Object() could be used instead of Boolean to make it works.


> Avoid allocations and atomic operations to recognize handler's thread
> ---------------------------------------------------------------------
>
>                 Key: ARTEMIS-1356
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-1356
>             Project: ActiveMQ Artemis
>          Issue Type: Improvement
>          Components: Broker
>            Reporter: Francesco Nigro
>            Assignee: Francesco Nigro
>
> The current way to recognize the handler's thread is using heavyweight 
> operations (allocations + atomic set/get) that limit some compiler 
> optimizations on the (core) packet handling path.
> The same logic can be achieved using only a ThreadLocal map and a cached 
> marker instance.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to