...
NOTE 1: MOUNTED_PATHS
configuration is currently required without modifications to the Python code, since we require direct write access to the data directory. This prevents us from needing to download the file to archive or unarchive it.
NOTE 2: on MacOSX, you may need to run the extractor with the --net=host
option to connect to RabbitMQ.
...
NOTE: on MacOSX, you may need to run the extractor with the --net=host
option to connect to RabbitMQ.
Common Pitfalls
Gotcha: attempting to download an ARCHIVED File via the Clowder API's /api/files/:id
endpoint will result in a 404
This is important for debugging, as it was a little confusing until I realized what was going on.
Perhaps 404 is the wrong error code here, or maybe it just needs a better error message for this edge case.
There may be an implication that there is no model found with that ID, when really the problem is that it's internal state simply prevents it from being downloaded.
My vote is for 418 I'm a teapot, but something like 409 Conflict or 410 Gone would likely get the point across.
412 Precondition Failed and 417 Expectation Failed also look promising, but I'm not sure if these have other underlying implications for the browser.
Gotcha: Communication issues between containers
NOTE: This issue can be tricky to workaround, as it is typically very environment-specific or setup-specific.
For example, this can happen if you're running RabbitMQ and the Extractor in separate containers, where the RabbitMQ container was created with --net=host
and your Extractor was not.
As another example, this can happen on MacOSX if Clowder is running in IntelliJ on the host, with RabbitMQ and the extractor running in Docker containers (without --net=host
).
Since one container is on the host network and the other is on the Docker bridge network, the two containers cannot communicate with each other.
The following configuration snippet can be added to Clowder's custom.conf
to override the hostnames where both expect to find each other:
Code Block | ||
---|---|---|
| ||
clowder.rabbitmq.uri="amqp://guest:guest@<PRIVATE IP>:5672/%2F"
clowder.rabbitmq.exchange="clowder"
clowder.rabbitmq.clowderurl="http://<PRIVATE IP>:9000" |
Gotcha: extractor complains about Python's built-in Thread.isAlive()
, and dies quickly after starting
pyclowder has an open issue here regarding a minor incompatibility with Python 3.9
If you encounter this problem, simply change the Docker base image to build FROM python:3.8