Admin message

Self sign-up has been disabled due to increased spam activity. If you want to get access, please send an email to a project owner (preferred) or at gitlab(at)nic(dot)cz. We apologize for the inconvenience.

cache: sharing across containers requires special options
Version: 5.1.3 originally but any version really Error ===== ``` [cache] LMDB error: Resource temporarily unavailable [cache] LMDB error: Resource temporarily unavailable [cache] incompatible cache database detected, purging [cache] reading version returned: -11 [system] interactive mode [00000.00][plan] plan '.' type 'NS' uid [65536.00] [65536.00][iter] '.' type 'NS' new uid was assigned .01, parent uid .00 [cache] LMDB error: Resource temporarily unavailable [65536.01][cach] => exact hit error: -11 Resource temporarily unavailable ``` Reproducer ========== Attempt to share cache across two or more Docker containers: ``` docker run -P -w /tmp/kresd -v /tmp/shared:/tmp/kresd -ti cznic/knot-resolver:v5.1.3 ``` Minimal reproducer without Docker: Run two processes using command ``` unshare -Up --fork kresd ``` Root cause ========== This is caused by LMDB dependency on unique PID numbers (for reader slots?). This assumption does not hold for Docker containers (because of its use of PID namespaces). LMDB upstream [does not seem to care](https://lists.openldap.org/hyperkitty/list/openldap-technical@openldap.org/thread/TL4XPCHRRGBV6SWBQIARC6E5XZNJ4SDX/). Workaround ========== Disable PID namespace, i.e. run Docker containers using `docker run --pid=host`, which prevents non-unique PIDs among containers. Alternative is to run additional containers with the same PID namespace as the first container using `docker run --pid=container:name_of_the_first_container`, but disadvantage is that exiting the first container will terminate all others as well. I.e. this prevents dynamic instance restarts.
issue