FileTransportListender does not initialize zookeeper locks

Issue #39 new
created an issue

If you enable clustering, FileTransportListener services stop working properly in ultraesb 2.0.0. This looks to be the result of something missing in the cluster locking and can be replicated with any file poller proxy service configuration.

Here is the traceback when FileTransportListener tries to process a file:

2013-12-12 19:07:39,775 [-] [file-4] ERROR FileTransportListener Error executing onPoll() for transport : FileTransportListener
    at org.adroitlogic.ultraesb.transport.file.FileTransportListener.processFiles(
    at org.adroitlogic.ultraesb.transport.file.FileTransportListener.onPoll(
    at org.adroitlogic.ultraesb.transport.base.AbstractPollingTransportListener.execute(
    at org.adroitlogic.ultraesb.transport.base.AbstractPollingTransportListener$PollingJob.execute(
    at org.quartz.simpl.SimpleThreadPool$

According to line 384 in FileTransportListener:

        String path = clustered ? clusterManager.getDomainZNodeRoot()
                + ClusteringConstants.ZooKeeperZNodePaths.LOCKS_PATH_NAME + separator + "transport" + separator
                + connector.getScheme() + separator + url.getHostname().replace('.', '_') : null;

There should be more to the locks path than what gets initialized in zookeeper:

ls /ultraesb/esb1/locks
time = 0 msec
/ultraesb/esb1/locks: rc = 0
time = 0 msec

It is always going to cause null pointer exceptions since nothing is under locks in zookeeper.

Comments (5)

  1. mkhpalm reporter

    Not sure if this helps but the TODO at seems interesting in light of this issue.

    EDIT: - Nevermind, it will never make it that far because its already crashed with a NullPointerException. Is this just a chicken and egg situation?

  2. Log in to comment