[ 
https://issues.apache.org/jira/browse/CURATOR-271?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Cameron McKenzie updated CURATOR-271:
-------------------------------------
    Fix Version/s: 3.0.1

> Curator does not run sync callback on supplied Executor
> -------------------------------------------------------
>
>                 Key: CURATOR-271
>                 URL: https://issues.apache.org/jira/browse/CURATOR-271
>             Project: Apache Curator
>          Issue Type: Bug
>          Components: Framework
>            Reporter: Glen Wallace
>            Assignee: Cameron McKenzie
>             Fix For: 2.9.1, 3.0.1
>
>
> It appears that Apache Curator does not execute the sync callback on the 
> supplied Executor in at least one case.
> This issue described is currently (2015-10-14) present in master
> Sample code outline:
> {code:java}
> BackgroundCallback myCallback = ...;
> Executor myExecutor = ...;
> String myZkPath = ...;
> CuratorFramework myCurator = ...;
> curator.sync()
>   .inBackground(myCallback, myExecutor)
>   .forPath(myZkPath);
> {code}
> This should execute {{myCallback}} on the {{myExecutor}} executor, it does 
> not and instead executes {{myCallback}} on what is presumeably a ZooKeeper 
> thread.
> Looking at the {{org.apache.curator.framework.imps.SyncBuilderImpl}} code we 
> have
> {code:java}
> public Pathable inBackground(BackgroundCallback callback, Executor executor) {
>   backgrounding = new Backgrounding(callback, executor);
>   return this;
> }
> {code}
> However the only matching constructor in 
> {{org.apache.curator.framework.imps.Backgrounding}} is 
> {{Backgrounding(BackgroundCallback callback, Object context)}}
> It seems that {{SyncBuilderImpl#inBackground(BackgroundCallback,Executor)}} 
> should be using the following Backgrounding constructor 
> {{Backgrounding(CuratorFrameworkImpl, BackgroundCallback, Executor)}}
> A workaround looks to be using the following method and passing a null 
> context object:
> {code:java}
>   public Pathable inBackground(BackgroundCallback callback, Object context, 
> Executor executor)
> {code}
> A very quick skim suggests that it is only {{SyncBuilderImpl}} that has the 
> issue the other {{org.apache.curator.framework.imps.*BuilderImpl}} classes 
> seem to be fine.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to