Glen Wallace created CURATOR-271:
------------------------------------
Summary: 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
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)