Hey Brian and Jordan,

I have a similar issue with trying to run pushpull within a cron because
for some reason (i need to sort out) my pushpull daemon will just hang
after running and sleeping successfully using
the org.apache.oodt.cas.protocol.ftp.CommonsNetFtpProtocol.  I haven't
taken the time to find out how many sleep/wake cycles it takes to
eventually hang, but I have seen it happen several times now.

I looked into the code and it seems like updating the runInfo tag so
period="" should short circuit the code from re-running, but when I have
done this in testing I get a message like this:

Nov 30, 2013 10:07:32 AM
org.apache.oodt.cas.pushpull.protocol.ProtocolHandler disconnect
INFO: Disconnecting protocol
org.apache.oodt.cas.protocol.ftp.CommonsNetFtpProtocol
Nov 30, 2013 10:07:32 AM org.apache.oodt.cas.pushpull.daemon.Daemon$1 run
INFO: Daemon with ID = 90111 on RMI registry port 9011 is shutting down

but the process doesn't actually stop.  Looking at Daemon.java I see that:
  Daemon.this.unregister();  is called right after that log message, but it
doesn't seem to quit the process.  That command is run within a Java Thread
object, but nothing seems to stop the Thread, so the daemon will never exit.

If you guys have made any progress on this I would love to hear about it.
 I am also not an expert on Java Threads, so I could have missed something
in the code, but it seems like the Thread is started and never terminated.

Thanks for reading,



Cameron


On Thu, Nov 21, 2013 at 1:43 PM, Brian Foster <[email protected]> wrote:

> Hey Jordan,
>
> Try not specifying the <runInfo> element for your daemons in
> RemoteSpecs.xml file.  It should just run once through for those sites.  I
> believe the pushpull shuts down automatically when all deamons have
> terminated, so after you run one pass it should just terminate.  It's been
> a while since i've worked with push-pull code, if that doesn't work i'll
> have to dig further into the code.
>
> if you looking to do just a on off download a given file, then you might
> consider just using cas-protocol directly.  Take a look at:
> https://svn.apache.org/repos/asf/oodt/trunk/protocol/api/src/main/resources/policy/cmd-line-actions.xml.
>  You can run cas-protocol via this bin script:
> https://svn.apache.org/repos/asf/oodt/trunk/protocol/api/src/main/bin/protocol.
>  Just build and deploy like all other cas products and that script will end
> up in the bin directory.  If you would like to add custom action to
> cas-protocol there is documentation for this at:
> https://svn.apache.org/repos/asf/oodt/trunk/cli/README.txt
>
> -Brian
>
> On Nov 07, 2013, at 05:31 PM, Jordan Padams <[email protected]>
> wrote:
>
> Hello all,
>
> I am trying to develop a pretty simple wrapper for the PushPull where I
> call the DaemonLauncher to run through the daemons in my config once and
> then shut down altogether. We currently don't have a need to have the
> software running at intervals.
>
> On that note, here are a few of the methods I've tried but haven't worked:
>
> 1. DaemonLauncher.main() - The software hangs because of the wait() waiting
> for a notify().
> 2. DaemonLauncher.viewDaemonWaitingList() - I've tried monitoring the
> daemon waiting list, and quit() the DaemonLauncher once it gets to 0, but
> then it misses the last daemon in my config.
>
> Is there a way for me to wait on the DaemonLauncher until all daemons have
> completed, then quit?
>
> I've implemented a quick workaround by creating the following method so I
> can see if daemons are still running:
>
> public boolean hasRunningDaemons() {
>
> return this.dm.hasRunningDaemons();
>
> }
> I don't have a lot of experience with daemon processes so this may just be
> something I'm blatantly missing. Appreciate the help.
>
> Thanks,
> Jordan
>
> --
> Jordan Padams
> Software Engineer
> NASA Jet Propulsion Laboratory
>
>


-- 

Sent from a Tin Can attached to a String

Reply via email to