Jodconverter: не удалось открыть документ: tempfile.docx - PullRequest
0 голосов
/ 18 июня 2020

Это проблема, с которой мы столкнулись при преобразовании docx в pdf с помощью jodconverter в 4 параллельных потоках (и 4 экземплярах Libreoffice, работающих в контейнере docker), и обработка не удалась после некоторых итераций. Ошибка была:

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)

Не удалось найти ничего, связанного с этим, поэтому был создан вопрос.

1 Ответ

0 голосов
/ 18 июня 2020

Мы пытались уменьшить максимальное количество конверсий на процесс (https://github.com/sbraconnier/jodconverter/issues/124), но это не сработало. Насколько я понимаю, это связано с тем, как абстрактный офис-менеджер jodconverter называет файл. Он использует счетчик atomi c (tempfile_ {count} .docx} ( Source ) для именования временных файлов, которые могут привести к конфликтам при параллельной обработке.

Обходной путь, который сработал для нас, был позвольте ему выполнять параллельную обработку, если он не сможет вернуться к последовательной обработке . Последовательная обработка была для нас намного надежнее.

...