You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by GitBox <gi...@apache.org> on 2020/03/10 02:28:05 UTC

[GitHub] [hbase] markrmiller commented on issue #1261: HBASE-23952: Address thread safety issue with Map used in BufferCallB…

markrmiller commented on issue #1261: HBASE-23952: Address thread safety issue with Map used in BufferCallB…
URL: https://github.com/apache/hbase/pull/1261#issuecomment-596869131
 
 
   I think the issue is that Netty can use different threads to access this data structure, ie:
   
   `    
   static void invokeUserEventTriggered(final AbstractChannelHandlerContext next, final Object event) {
           ObjectUtil.checkNotNull(event, "event");
           EventExecutor executor = next.executor();
           if (executor.inEventLoop()) {
               next.invokeUserEventTriggered(event);
           } else {
               executor.execute(new Runnable() {
                   @Override
                   public void run() {
                       next.invokeUserEventTriggered(event);
                   }
               });
           }
       }
   `
   
   If more than one thread is going to access a shared field, you have to publish it properly - either with memory barriers or it has to be final or effectively final. It seems very difficult to ensure that this is thread safe or will remain thread safe over time.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services