kermitt2/grobid

jep.JepException: <class 'lmdb.ReadonlyError'>: data/db/glove-840B: Permission denied

Closed this issue · 1 comments

Operating System and architecture (arm64, amd64, x86, etc.)

HPC linux

What is your Java version

JDK17

Log and information

apptainer run --no-home --cleanenv --writable-tmpfs --pwd "/work/ECOTOXKG/grobid_0.8.0" grobid_0.8.0.custom.sif
WARN [2024-10-03 14:43:47,028] org.hibernate.validator.internal.properties.javabean.JavaBeanExecutable: HV000254: Missing parameter metadata for ResponseMeteredLevel(String, int), which declares implicit or synthetic parameters. Automatic resolution of generic type information for method parameters may yield incorrect results if multiple parameters have the same erasure. To solve this, compile your code with the '-parameters' flag.
ERROR [2024-10-03 14:44:05,146] org.grobid.core.jni.DeLFTModel: DeLFT model initialization failed.
! jep.JepException: <class 'lmdb.ReadonlyError'>: data/db/glove-840B: Permission denied
! at /usr/local/lib/python3.8/dist-packages/delft/utilities/Embeddings.make_embeddings_simple(Embeddings.py:276)
! at /usr/local/lib/python3.8/dist-packages/delft/utilities/Embeddings.init(Embeddings.py:72)
! at /usr/local/lib/python3.8/dist-packages/delft/sequenceLabelling/wrapper.load(wrapper.py:591)
! at .(:1)
! at jep.Jep.eval(Native Method)
! at jep.Jep.eval(Jep.java:312)
! at org.grobid.core.jni.DeLFTModel$InitModel.run(DeLFTModel.java:65)
! at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
! at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
! at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
! at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
! at java.base/java.lang.Thread.run(Thread.java:833)
[Wapiti] Loading model: "/work/ECOTOXKG/grobid_0.8.0/opt/grobid/grobid-home/models/name/header/model.wapiti"
Model path: /work/ECOTOXKG/grobid_0.8.0/opt/grobid/grobid-home/models/name/header/model.wapiti
[Wapiti] Loading model: "/work/ECOTOXKG/grobid_0.8.0/opt/grobid/grobid-home/models/name/citation/model.wapiti"
Model path: /work/ECOTOXKG/grobid_0.8.0/opt/grobid/grobid-home/models/name/citation/model.wapiti

Further information

I followed the steps outlined in the issue #1150 by cboulanger. The sandbox runs totally fine:
apptainer run --no-home --cleanenv --writable-tmpfs --pwd "/work/ECOTOXKG/grobid_0.8.0" grobid_0.8.0/

Afterwards, I built a container out of it successfully:
apptainer build grobid_0.8.0.custom.sif grobid_0.8.0/

When running this container though, I got lmdb.ReadonlyError due to permission denied:
apptainer run --no-home --cleanenv --writable-tmpfs --pwd "/work/ECOTOXKG/grobid_0.8.0" grobid_0.8.0.custom.sif

how to open lmdb with write access when running the container using Apptainer? Is there a "writable" option somewhere in apptainer build or run command? I couldn't figure out. Thanks in advance!

well, looks like an easy fix. All I had to do is to add write permissions to /data and its subdirs under grobid_0.8.0 sandbox and rebuild it into a container image. Now all works well.

Please close this issue.