Celery failure on monolith

Hello, I would like to know how exactly you performed an update and deployed that. Am having the same problem with Celery.

Hi @Senzenjani the process depends on what you have installed currently. Do you know which build of CommcareHQ you are on?

@erobinson Am running commcare on monolith environment and on python3.10.

I think I've caught this bug!

Have a look at ansible/roles/ecryptfs/tasks/main.yml: the task "Create {{ encrypted_root }}/blobdb directory for setups that do not use NFS" has condition when: not shared_drive_enabled. This is supposed to evaluate to true (since shared_drive_enabled is false on a monolith), however the tasks apparently do not execute.

My hunch is that Ansible is treating shared_drive_enabled as string value "False", rather than boolean false. The solution would be to cast to bool by changing the condition to when: not shared_drive_enabled|bool.

Ansible 2.8+ is supposed to handle this correctly, but mileage varies. Also, grepping for shared_drive_enabled through the CC playbooks shows all of them have that |bool cast.

BTW the task (if it would run) creates the blobdb directory with owner nobody:nfs and mode 0775. I suppose it should just be cchq:cchq and 0755, like it gets when created under the shared drive.

Thank you for raising this @zwets !

This is an interesting one. I can see that there are 10 instances in the commcare_cloud codebase where shared_drive_enabled is cast using "|bool", but there are 8 instances where it is not.

I'll take a closer look.

If you are experiencing this problem in a cluster environment, I think the simplest approach would be for you to set "shared_drive_enabled: False" in your environment's public.yml.

(Regarding the ownership of the NFS blobdb directory: I think that depends on how ID mapping is configured on the clients and server.)