Reputation: 1246
This is a problem we were facing when converting docx to pdf's using jodconverter in 4 parallel streams (and 4 instances of Libreoffice, running on a docker container) and the processing failed after some iterations. Error was:
java.lang.NullPointerException: Could not open document: tempfile_39.docx
at org.apache.commons.lang3.Validate.notNull(Validate.java:225)
at org.jodconverter.local.task.AbstractLocalOfficeTask.loadDocument(AbstractLocalOfficeTask.java:118)
at org.jodconverter.local.task.LocalConversionTask.execute(LocalConversionTask.java:117)
at org.jodconverter.local.office.OfficeProcessManagerPoolEntry.doExecute(OfficeProcessManagerPoolEntry.java:187)
at org.jodconverter.core.office.AbstractOfficeManagerPoolEntry.lambda$execute$0(AbstractOfficeManagerPoolEntry.java:83)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Could not find anything related to this, so created a question.
Upvotes: 1
Views: 1790
Reputation: 1246
We tried reducing max conversions per process (https://github.com/sbraconnier/jodconverter/issues/124) but it did not work. As far as i understand, it is due to how jodconverter's abstract office manager names file. It uses an atomic counter (tempfile_{count}.docx} (Source) to name temp files which can lead to conflicts in parallel processing.
Workaround that worked for us was let it do parallel processing, if it fails fallback to sequential processing. Sequential processing was far robust for us.
Upvotes: 1