Github user srdo commented on the issue:

    https://github.com/apache/curator/pull/215
  
    Hi @Randgalt. Just to make sure, you're talking about calls to 
BackgroundCallback.processResult, right?
    
    I don't follow how this change causes those to be invoked from a different 
thread than usual. The changed code is only hit if processBackgroundOperation 
is called with a null event (isInitialExecution is true). As far as I can tell, 
the invocations that happen from the Zookeeper callbacks always seem to pass a 
non-null event, and so don't hit the changed code. 
    
    I took a look at the call sites for BackgroundCallback.processResult, and 
the only way I can see that this change has changed the calling thread is if 
CuratorFrameworkImpl.processBackgroundOperation is called with a null 
parameter, and CuratorFrameworkImpl.performBackgroundOperation then hits a 
ConnectionLossException, through checkBackgroundRetry -> 
sendToBackgroundCallback -> BackgroundCallback.processResult. 
https://github.com/apache/curator/blob/master/curator-framework/src/main/java/org/apache/curator/framework/imps/CuratorFrameworkImpl.java#L857.
 The other invocations of sendToBackgroundCallback (the only call site for 
BackgroundCallback.processResult except for the wrapper in Backgrounding) only 
happen through a call to processBackgroundOperation with a non-null event.
    
    I did a quick spot check using the BackgroundCallback in 
CuratorFrameworkBackground.testBasic. Printing the thread executing 
BackgroundCallback.processResult before the change:
    The executing thread Thread[main-EventThread,5,main]
    
    after the change:
    The executing thread Thread[main-EventThread,5,main]


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to