Closed robsyme closed 6 years ago
Hey Robert,
The kill-switch file thing is a horrendous (though necessary at the time) hack to fit a database into jobTree's model. Basically, there is one job to run the DB, and another to actually wait till it starts up properly: the -1
s are written as a flag to communicate that the ktserver died while starting. So the interesting part is actually the OSError raised earlier.
Sadly the original traceback is swallowed by the re-raise, but I think the most likely source of that OSError is that the 'ktserver' executable is missing or not in the PATH. I'm not exactly sure why that would be the case--everything looks fine to me--but I'll try building from your Dockerfile and see if I can help debug.
Superstar. I'll also try chasing ktserver down from my end.
As long as I source environment
, ktserver is in the $PATH. The problem looks like it's during __validateKtserver
The OSError is actually when trying to run ping
. I don't think it crossed anyone's mind that ping
wouldn't be present, but it actually makes sense that it wouldn't be in a minimal Docker image. If you add iputils-ping
to the your list of packages to install, you should be OK to go.
PS: we are starting to transition over to a Toil version of cactus, available https://github.com/ComparativeGenomicsToolkit/cactus. It unwinds a few (not enough!) of the hacky bits, because Toil supports a bunch of features that jobTree didn't. But if you can get progressiveCactus to work, that's good too!
Gar, you just beat me to it! Nothing like building containers to get a good handle on the dependency assumptions ;)
Thanks for your help
Hilariously, you also need time
installed - not as a shell keyword (the bash default) but as a binary so that sh
can run it. It's getting ridiculous now, and I don't mean to be a pedant, but I thought you (and those that are reading this in the future) might want to know.
Thanks! Yep, there are a lot of hidden assumptions about what we can expect the "minimal" unix install to have--but those are getting broken by how much people are squeezing down these popular base Docker images.
Hi
I'm trying to install and run progressiveCactus in a container to improve the reproducibility of my results and to include the software in a genome annotation pipeline.
Using a fairly minimal Dockerfile:
This installs, but running the example gives the following errors:
Looking at the logs suggests that jobTree is expecting to find a particular file, but runs into a
OSError: [Errno 2] No such file or directory
The exception being raised from
__readStatusFromSwitchFile
. It looks like jobTree reads the file atkillSwitchPath
(something likework/jobTree/jobs/gTD9/tmp_u5ZrcIvgWc/tmp_j5YFSaAXyD_kill.txt
, trying to pull out port, serverPid etc. In all of my failed runs, the file at killSwitchPath looks like:These values, when read raise the exception.
I think that these are being written as a flag when spinning up the runKtserver. Somewhere in here, an exception is being thrown, which is caught by the blanket
except Exception as e
.Does anybody have any ideas why the KtServer isn't being spun up correctly? Any pointers to help me debug?