-
Notifications
You must be signed in to change notification settings - Fork 136
Description
I've got an issue with the Document.convert(OutputStream outputLogStream, PdfFormat format, ConvertErrorAction action) method in a concurrency scenario. Using this method in parallel throws the following exception:
com.aspose.pdf.internal.ms.System.l7k: Only 3D and 4D CLUT are supported
at com.aspose.pdf.internal.l59l.l0t.lI(Unknown Source)
at com.aspose.pdf.internal.l59l.l0if.lI(Unknown Source)
at com.aspose.pdf.internal.l59l.l1if.lI(Unknown Source)
at com.aspose.pdf.internal.l59l.l2if.lI(Unknown Source)
at com.aspose.pdf.internal.l59l.l1t.lI(Unknown Source)
at com.aspose.pdf.internal.l59l.l1t.lI(Unknown Source)
at com.aspose.pdf.internal.l59l.l2h.lI(Unknown Source)
at com.aspose.pdf.internal.l59l.l0p.lI(Unknown Source)
at com.aspose.pdf.internal.l59l.l0p.lI(Unknown Source)
at com.aspose.pdf.internal.l59l.l0p.lI(Unknown Source)
at com.aspose.pdf.internal.foundation.rendering.l3u.lI(Unknown Source)
at com.aspose.pdf.internal.foundation.rendering.l3u.(Unknown Source)
at com.aspose.pdf.internal.l2p.lu.(Unknown Source)
at com.aspose.pdf.internal.l9k.l1if.lI(Unknown Source)
at com.aspose.pdf.internal.l9f.l1n.lI(Unknown Source)
at com.aspose.pdf.internal.l9k.l1t.lf(Unknown Source)
at com.aspose.pdf.internal.l9k.l1if.l3n(Unknown Source)
at com.aspose.pdf.internal.l9k.l1t.l5v(Unknown Source)
at com.aspose.pdf.internal.l9k.l1if.lI(Unknown Source)
at com.aspose.pdf.ADocument.lI(Unknown Source)
at com.aspose.pdf.Document.lI(Unknown Source)
at com.aspose.pdf.ADocument.convertInternal(Unknown Source)
at com.aspose.pdf.Document.convertInternal(Unknown Source)
at com.aspose.pdf.ADocument.convert(Unknown Source)
at com.aspose.pdf.Document.convert(Unknown Source)
at de.synaxon.asposetest.AsposeTest.convertPdf(AsposeTest.java:48)
at de.synaxon.asposetest.AsposeTest.lambda$main$0(AsposeTest.java:32)
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)
class com.aspose.pdf.internal.l59l.l0k: Exception of type System.Exception was thrown.
com.aspose.pdf.internal.l59l.l1t.ld(Unknown Source)
com.aspose.pdf.internal.l59l.l1t.lI(Unknown Source)
com.aspose.pdf.internal.l59l.l0p.lI(Unknown Source)
com.aspose.pdf.internal.foundation.rendering.l3u.lI(Unknown Source)
com.aspose.pdf.internal.foundation.rendering.l3u.(Unknown Source)
com.aspose.pdf.internal.l2p.lu.(Unknown Source)
com.aspose.pdf.internal.l9k.l1if.lI(Unknown Source)
com.aspose.pdf.internal.l9f.l1n.lI(Unknown Source)
com.aspose.pdf.internal.l9k.l1t.lf(Unknown Source)
com.aspose.pdf.internal.l9k.l1if.l3n(Unknown Source)
com.aspose.pdf.internal.l9k.l1t.l5v(Unknown Source)
com.aspose.pdf.internal.l9k.l1if.lI(Unknown Source)
com.aspose.pdf.ADocument.lI(Unknown Source)
com.aspose.pdf.Document.lI(Unknown Source)
com.aspose.pdf.ADocument.convertInternal(Unknown Source)
com.aspose.pdf.Document.convertInternal(Unknown Source)
com.aspose.pdf.ADocument.convert(Unknown Source)
com.aspose.pdf.Document.convert(Unknown Source)
de.synaxon.asposetest.AsposeTest.convertPdf(AsposeTest.java:48)
de.synaxon.asposetest.AsposeTest.lambda$main$0(AsposeTest.java:32)
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
java.base/java.lang.Thread.run(Thread.java:833)
at com.aspose.pdf.internal.l59l.l1t.ld(Unknown Source)
at com.aspose.pdf.internal.l59l.l1t.lI(Unknown Source)
at com.aspose.pdf.internal.l59l.l0p.lI(Unknown Source)
at com.aspose.pdf.internal.foundation.rendering.l3u.lI(Unknown Source)
at com.aspose.pdf.internal.foundation.rendering.l3u.(Unknown Source)
at com.aspose.pdf.internal.l2p.lu.(Unknown Source)
at com.aspose.pdf.internal.l9k.l1if.lI(Unknown Source)
at com.aspose.pdf.internal.l9f.l1n.lI(Unknown Source)
at com.aspose.pdf.internal.l9k.l1t.lf(Unknown Source)
at com.aspose.pdf.internal.l9k.l1if.l3n(Unknown Source)
at com.aspose.pdf.internal.l9k.l1t.l5v(Unknown Source)
at com.aspose.pdf.internal.l9k.l1if.lI(Unknown Source)
at com.aspose.pdf.ADocument.lI(Unknown Source)
at com.aspose.pdf.Document.lI(Unknown Source)
at com.aspose.pdf.ADocument.convertInternal(Unknown Source)
at com.aspose.pdf.Document.convertInternal(Unknown Source)
at com.aspose.pdf.ADocument.convert(Unknown Source)
at com.aspose.pdf.Document.convert(Unknown Source)
at de.synaxon.asposetest.AsposeTest.convertPdf(AsposeTest.java:48)
at de.synaxon.asposetest.AsposeTest.lambda$main$0(AsposeTest.java:32)
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)
Use the following code to reproduce the error:
public class AsposeTest {
private static final String PDF_PATH = "/opt/data/testme.pdf";
private static final Object asposePdfLock = new Object();
public static void main(String[] args) throws IOException, InterruptedException {
int numberOfThreads = 100;
ExecutorService executorService = Executors.newFixedThreadPool(numberOfThreads);
for (int i = 0; i < numberOfThreads; i++) {
executorService.submit(() -> {
try {
convertPdf();
} catch (IOException ex) {
ex.printStackTrace();
}
});
}
executorService.shutdown();
}
private static void convertPdf() throws IOException {
try (InputStream inputStream = new FileInputStream(PDF_PATH); ByteArrayOutputStream a3bOut = new ByteArrayOutputStream()) {
// synchronized (asposePdfLock) {
// Convert and save directly to the output stream
try (Document document = new Document(inputStream)) {
document.convert(a3bOut, PdfFormat.PDF_A_3B, ConvertErrorAction.None);
document.save(a3bOut);
document.close();
} catch (Exception ex) {
ex.printStackTrace();
}
// }
System.err.println("Done with conversion!");
}
}
}
Using a synchronized block fixes the behaviour but it is not an option as there is no longer any throughput.
Tested with aspose-pdf 25.4