You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@curator.apache.org by "Cameron McKenzie (JIRA)" <ji...@apache.org> on 2015/10/15 04:29:05 UTC
[jira] [Updated] (CURATOR-271) Curator does not run sync callback
on supplied Executor
[ 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)