Tag: 蜡染

Docker容器阻塞内部的Apache Batik Transcoder

我们正在Docker容器中运行Spring应用程序。 我们的应用程序可以将SVG文件转换为PDF格式,并将其embedded到PDF中。 该应用程序可以在osx上正确运行,并按预期转码。 然而,当从具有不同文件系统的Docker容器中运行时,代码转换器卡住并在一些奇怪的recursion文件search循环中使CPU崩溃。 java.lang.Thread.State: RUNNABLE at java.io.UnixFileSystem.getBooleanAttributes0(Native Method) at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:242) at java.io.File.isFile(File.java:882) at org.apache.commons.io.filefilter.FileFileFilter.accept(FileFileFilter.java:59) at org.apache.commons.io.filefilter.AndFileFilter.accept(AndFileFilter.java:122) at org.apache.commons.io.filefilter.AndFileFilter.accept(AndFileFilter.java:122) at org.apache.commons.io.filefilter.OrFileFilter.accept(OrFileFilter.java:118) at java.io.File.listFiles(File.java:1291) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:357) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364) at org.apache.commons.io.DirectoryWalker.walk(DirectoryWalker.java:364 下面看一下运行PDFTranscoder的线程的堆栈跟踪。 Walk被recursion地调用一段时间,然后getBooleanAttributes0被调用,并且一切都被阻塞。 经过一番进一步的研究,我们发现我们可以仔细看看strace命令的情况,看到系统本质上是无休止的循环中的垃圾邮件。 STAT(“/./ SYS /设备/ pci0000:00 / […]