You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@tika.apache.org by Markus Jelsma <ma...@openindex.io> on 2022/10/05 11:22:34 UTC

Strange exif and tesseract exceptions since 2.x

Hello,

We use Tika embedded in our Java programs and recently upgraded from one of
the last 1.x to 2.x, currently 2.4.1.

Since then, with debug logging on, Tika spews out a few pretty bug and
partially repeating exceptions. This is not a real runtime problem, but
just a distracting nuisance as my attention triggers when seeing stack
traces.

Is there something to do about it?

This is the exif related trace:
2022-10-05 13:16:42,136 DEBUG
[TEST-SequenceBlockMarkerTest.testDierenforum-seed#[5F443E2359FE59DA]]
external.ExternalParser (ExternalParser.java:172) - exit
value for ffmpeg: 0
2022-10-05 13:16:42,140 DEBUG
[TEST-SequenceBlockMarkerTest.testDierenforum-seed#[5F443E2359FE59DA]]
external.ExternalParser (ExternalParser.java:180) - exce
ption trying to run  exiftool
java.io.IOException: Cannot run program "exiftool": error=2, No such file
or directory
       at java.lang.ProcessBuilder.start(ProcessBuilder.java:1128) ~[?:?]
       at java.lang.ProcessBuilder.start(ProcessBuilder.java:1071) ~[?:?]
       at java.lang.Runtime.exec(Runtime.java:592) ~[?:?]
       at java.lang.Runtime.exec(Runtime.java:451) ~[?:?]
       at
org.apache.tika.parser.external.ExternalParser.check(ExternalParser.java:161)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.external.ExternalParsersConfigReader.readCheckTagAndCheck(ExternalParsersConfigReader.java:203)
~[tika-core-2.4.1.jar:2.4.1
]
       at
org.apache.tika.parser.external.ExternalParsersConfigReader.readParser(ExternalParsersConfigReader.java:110)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.external.ExternalParsersConfigReader.read(ExternalParsersConfigReader.java:80)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.external.ExternalParsersConfigReader.read(ExternalParsersConfigReader.java:67)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.external.ExternalParsersConfigReader.read(ExternalParsersConfigReader.java:60)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.external.ExternalParsersFactory.create(ExternalParsersFactory.java:67)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.external.ExternalParsersFactory.create(ExternalParsersFactory.java:60)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.external.ExternalParsersFactory.create(ExternalParsersFactory.java:49)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.external.ExternalParsersFactory.create(ExternalParsersFactory.java:44)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.external.CompositeExternalParser.<init>(CompositeExternalParser.java:42)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.external.CompositeExternalParser.<init>(CompositeExternalParser.java:37)
~[tika-core-2.4.1.jar:2.4.1]
       at
jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method) ~[?:?]
       at
jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
~[?:?]
       at
jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
~[?:?]
       at java.lang.reflect.Constructor.newInstance(Constructor.java:490)
~[?:?]
       at java.lang.Class.newInstance(Class.java:584) ~[?:?]
       at
org.apache.tika.utils.ServiceLoaderUtils.newInstance(ServiceLoaderUtils.java:80)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.config.ServiceLoader.loadStaticServiceProviders(ServiceLoader.java:345)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.DefaultParser.getDefaultParsers(DefaultParser.java:105)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.DefaultParser.<init>(DefaultParser.java:52)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.DefaultParser.<init>(DefaultParser.java:66)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.config.TikaConfig.getDefaultParser(TikaConfig.java:291)
~[tika-core-2.4.1.jar:2.4.1]
       at org.apache.tika.config.TikaConfig.access$900(TikaConfig.java:87)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.config.TikaConfig$ParserXmlLoader.createDefault(TikaConfig.java:878)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.config.TikaConfig$ParserXmlLoader.createDefault(TikaConfig.java:824)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.config.TikaConfig$XmlLoader.loadOverall(TikaConfig.java:648)
~[tika-core-2.4.1.jar:2.4.1]
       at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:170)
~[tika-core-2.4.1.jar:2.4.1]
       at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:150)
~[tika-core-2.4.1.jar:2.4.1]
       at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:142)
~[tika-core-2.4.1.jar:2.4.1]
       at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:138)
~[tika-core-2.4.1.jar:2.4.1]
       at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:119)
~[test-classes/:?]
       at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:112)
~[test-classes/:?]
       at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:106)
~[test-classes/:?]
       at
io.openindex.sax.readable.marker.block.SequenceBlockMarkerTest.testDierenforum(SequenceBlockMarkerTest.java:91)
~[test-classes/:?]
       at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method) ~[?:?]
       at
jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
~[?:?]
       at
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
~[?:?]
       at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1758)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:946)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:955)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:840)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:891)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:902)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.ThreadLeakControl$2.evaluate(ThreadLeakControl.java:426)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner.runSuite(RandomizedRunner.java:716)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner.access$200(RandomizedRunner.java:138)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:637)
~[randomizedtesting-runner-2.8.0.jar:?]
Caused by: java.io.IOException: error=2, No such file or directory
       at java.lang.ProcessImpl.forkAndExec(Native Method) ~[?:?]
       at java.lang.ProcessImpl.<init>(ProcessImpl.java:340) ~[?:?]
       at java.lang.ProcessImpl.start(ProcessImpl.java:271) ~[?:?]
       at java.lang.ProcessBuilder.start(ProcessBuilder.java:1107) ~[?:?]
       ... 59 more

And here the Tesseract related trace:
2022-10-05 13:16:42,331 DEBUG
[TEST-SequenceBlockMarkerTest.testDierenforum-seed#[5F443E2359FE59DA]]
external.ExternalParser (ExternalParser.java:180) - exce
ption trying to run  tesseract
java.io.IOException: Cannot run program "tesseract": error=2, No such file
or directory
       at java.lang.ProcessBuilder.start(ProcessBuilder.java:1128) ~[?:?]
       at java.lang.ProcessBuilder.start(ProcessBuilder.java:1071) ~[?:?]
       at java.lang.Runtime.exec(Runtime.java:592) ~[?:?]
       at java.lang.Runtime.exec(Runtime.java:451) ~[?:?]
       at
org.apache.tika.parser.external.ExternalParser.check(ExternalParser.java:161)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.ocr.TesseractOCRParser.hasTesseract(TesseractOCRParser.java:187)
~[tika-parsers-standard-package-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.ocr.TesseractOCRParser.initialize(TesseractOCRParser.java:529)
~[tika-parsers-standard-package-2.4.1.jar:2.4.1]
       at
org.apache.tika.config.ServiceLoader.loadStaticServiceProviders(ServiceLoader.java:347)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.DefaultParser.getDefaultParsers(DefaultParser.java:105)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.DefaultParser.<init>(DefaultParser.java:52)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.parser.DefaultParser.<init>(DefaultParser.java:66)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.config.TikaConfig.getDefaultParser(TikaConfig.java:291)
~[tika-core-2.4.1.jar:2.4.1]
       at org.apache.tika.config.TikaConfig.access$900(TikaConfig.java:87)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.config.TikaConfig$ParserXmlLoader.createDefault(TikaConfig.java:878)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.config.TikaConfig$ParserXmlLoader.createDefault(TikaConfig.java:824)
~[tika-core-2.4.1.jar:2.4.1]
       at
org.apache.tika.config.TikaConfig$XmlLoader.loadOverall(TikaConfig.java:648)
~[tika-core-2.4.1.jar:2.4.1]
       at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:170)
~[tika-core-2.4.1.jar:2.4.1]
       at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:150)
~[tika-core-2.4.1.jar:2.4.1]
       at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:142)
~[tika-core-2.4.1.jar:2.4.1]
       at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:138)
~[tika-core-2.4.1.jar:2.4.1]
       at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:119)
~[test-classes/:?]
       at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:112)
~[test-classes/:?]
       at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:106)
~[test-classes/:?]
       at
io.openindex.sax.readable.marker.block.SequenceBlockMarkerTest.testDierenforum(SequenceBlockMarkerTest.java:91)
~[test-classes/:?]
       at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method) ~[?:?]
       at
jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
~[?:?]
       at
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
~[?:?]
       at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1758)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:946)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:955)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:840)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:891)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:902)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.ThreadLeakControl$2.evaluate(ThreadLeakControl.java:426)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner.runSuite(RandomizedRunner.java:716)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner.access$200(RandomizedRunner.java:138)
~[randomizedtesting-runner-2.8.0.jar:?]
       at
com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:637)
~[randomizedtesting-runner-2.8.0.jar:?]
Caused by: java.io.IOException: error=2, No such file or directory
       at java.lang.ProcessImpl.forkAndExec(Native Method) ~[?:?]
       at java.lang.ProcessImpl.<init>(ProcessImpl.java:340) ~[?:?]
       at java.lang.ProcessImpl.start(ProcessImpl.java:271) ~[?:?]
       at java.lang.ProcessBuilder.start(ProcessBuilder.java:1107) ~[?:?]
       ... 44 more

Thanks,
Markus

Re: Strange exif and tesseract exceptions since 2.x

Posted by Tim Allison <ta...@apache.org>.
Y, makes sense.  Should we drop those to trace?  Or is there a better option?

On Fri, Oct 7, 2022 at 6:57 AM Markus Jelsma <ma...@openindex.io> wrote:
>
> Hello Tim,
>
> You are right, we can switch that class' level higher. But in general i don't believe it is great to write 4 to 5 big stack traces at the debug logging level as usually that level already has a big number of log lines.
>
> If the trace is not necessary for ExternalParser users to fix a problem, maybe a single log line would suffice instead.
>
> Thanks!
> Markus
>
> Op wo 5 okt. 2022 om 14:53 schreef Tim Allison <ta...@apache.org>:
>>
>> If you need DEBUG elsewhere, can you selectively turn logging for the
>> ExternalParser to ERROR?  Or is there a fix you'd recommend on the
>> Tika side?
>>
>> On Wed, Oct 5, 2022 at 7:22 AM Markus Jelsma <ma...@openindex.io> wrote:
>> >
>> > Hello,
>> >
>> > We use Tika embedded in our Java programs and recently upgraded from one of the last 1.x to 2.x, currently 2.4.1.
>> >
>> > Since then, with debug logging on, Tika spews out a few pretty bug and partially repeating exceptions. This is not a real runtime problem, but just a distracting nuisance as my attention triggers when seeing stack traces.
>> >
>> > Is there something to do about it?
>> >
>> > This is the exif related trace:
>> > 2022-10-05 13:16:42,136 DEBUG [TEST-SequenceBlockMarkerTest.testDierenforum-seed#[5F443E2359FE59DA]] external.ExternalParser (ExternalParser.java:172) - exit
>> > value for ffmpeg: 0
>> > 2022-10-05 13:16:42,140 DEBUG [TEST-SequenceBlockMarkerTest.testDierenforum-seed#[5F443E2359FE59DA]] external.ExternalParser (ExternalParser.java:180) - exce
>> > ption trying to run  exiftool
>> > java.io.IOException: Cannot run program "exiftool": error=2, No such file or directory
>> >        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1128) ~[?:?]
>> >        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1071) ~[?:?]
>> >        at java.lang.Runtime.exec(Runtime.java:592) ~[?:?]
>> >        at java.lang.Runtime.exec(Runtime.java:451) ~[?:?]
>> >        at org.apache.tika.parser.external.ExternalParser.check(ExternalParser.java:161) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.external.ExternalParsersConfigReader.readCheckTagAndCheck(ExternalParsersConfigReader.java:203) ~[tika-core-2.4.1.jar:2.4.1
>> > ]
>> >        at org.apache.tika.parser.external.ExternalParsersConfigReader.readParser(ExternalParsersConfigReader.java:110) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.external.ExternalParsersConfigReader.read(ExternalParsersConfigReader.java:80) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.external.ExternalParsersConfigReader.read(ExternalParsersConfigReader.java:67) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.external.ExternalParsersConfigReader.read(ExternalParsersConfigReader.java:60) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.external.ExternalParsersFactory.create(ExternalParsersFactory.java:67) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.external.ExternalParsersFactory.create(ExternalParsersFactory.java:60) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.external.ExternalParsersFactory.create(ExternalParsersFactory.java:49) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.external.ExternalParsersFactory.create(ExternalParsersFactory.java:44) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.external.CompositeExternalParser.<init>(CompositeExternalParser.java:42) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.external.CompositeExternalParser.<init>(CompositeExternalParser.java:37) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
>> >        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?]
>> >        at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
>> >        at java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[?:?]
>> >        at java.lang.Class.newInstance(Class.java:584) ~[?:?]
>> >        at org.apache.tika.utils.ServiceLoaderUtils.newInstance(ServiceLoaderUtils.java:80) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.ServiceLoader.loadStaticServiceProviders(ServiceLoader.java:345) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.DefaultParser.getDefaultParsers(DefaultParser.java:105) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.DefaultParser.<init>(DefaultParser.java:52) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.DefaultParser.<init>(DefaultParser.java:66) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig.getDefaultParser(TikaConfig.java:291) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig.access$900(TikaConfig.java:87) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig$ParserXmlLoader.createDefault(TikaConfig.java:878) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig$ParserXmlLoader.createDefault(TikaConfig.java:824) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig$XmlLoader.loadOverall(TikaConfig.java:648) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:170) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:150) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:142) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:138) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:119) ~[test-classes/:?]
>> >        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:112) ~[test-classes/:?]
>> >        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:106) ~[test-classes/:?]
>> >        at io.openindex.sax.readable.marker.block.SequenceBlockMarkerTest.testDierenforum(SequenceBlockMarkerTest.java:91) ~[test-classes/:?]
>> >        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
>> >        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
>> >        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
>> >        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1758) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:946) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:955) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:840) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:891) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:902) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.ThreadLeakControl$2.evaluate(ThreadLeakControl.java:426) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner.runSuite(RandomizedRunner.java:716) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner.access$200(RandomizedRunner.java:138) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:637) ~[randomizedtesting-runner-2.8.0.jar:?]
>> > Caused by: java.io.IOException: error=2, No such file or directory
>> >        at java.lang.ProcessImpl.forkAndExec(Native Method) ~[?:?]
>> >        at java.lang.ProcessImpl.<init>(ProcessImpl.java:340) ~[?:?]
>> >        at java.lang.ProcessImpl.start(ProcessImpl.java:271) ~[?:?]
>> >        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1107) ~[?:?]
>> >        ... 59 more
>> >
>> > And here the Tesseract related trace:
>> > 2022-10-05 13:16:42,331 DEBUG [TEST-SequenceBlockMarkerTest.testDierenforum-seed#[5F443E2359FE59DA]] external.ExternalParser (ExternalParser.java:180) - exce
>> > ption trying to run  tesseract
>> > java.io.IOException: Cannot run program "tesseract": error=2, No such file or directory
>> >        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1128) ~[?:?]
>> >        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1071) ~[?:?]
>> >        at java.lang.Runtime.exec(Runtime.java:592) ~[?:?]
>> >        at java.lang.Runtime.exec(Runtime.java:451) ~[?:?]
>> >        at org.apache.tika.parser.external.ExternalParser.check(ExternalParser.java:161) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.ocr.TesseractOCRParser.hasTesseract(TesseractOCRParser.java:187) ~[tika-parsers-standard-package-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.ocr.TesseractOCRParser.initialize(TesseractOCRParser.java:529) ~[tika-parsers-standard-package-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.ServiceLoader.loadStaticServiceProviders(ServiceLoader.java:347) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.DefaultParser.getDefaultParsers(DefaultParser.java:105) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.DefaultParser.<init>(DefaultParser.java:52) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.parser.DefaultParser.<init>(DefaultParser.java:66) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig.getDefaultParser(TikaConfig.java:291) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig.access$900(TikaConfig.java:87) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig$ParserXmlLoader.createDefault(TikaConfig.java:878) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig$ParserXmlLoader.createDefault(TikaConfig.java:824) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig$XmlLoader.loadOverall(TikaConfig.java:648) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:170) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:150) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:142) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:138) ~[tika-core-2.4.1.jar:2.4.1]
>> >        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:119) ~[test-classes/:?]
>> >        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:112) ~[test-classes/:?]
>> >        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:106) ~[test-classes/:?]
>> >        at io.openindex.sax.readable.marker.block.SequenceBlockMarkerTest.testDierenforum(SequenceBlockMarkerTest.java:91) ~[test-classes/:?]
>> >        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
>> >        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
>> >        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
>> >        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1758) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:946) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:955) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:840) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:891) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:902) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.ThreadLeakControl$2.evaluate(ThreadLeakControl.java:426) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner.runSuite(RandomizedRunner.java:716) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner.access$200(RandomizedRunner.java:138) ~[randomizedtesting-runner-2.8.0.jar:?]
>> >        at com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:637) ~[randomizedtesting-runner-2.8.0.jar:?]
>> > Caused by: java.io.IOException: error=2, No such file or directory
>> >        at java.lang.ProcessImpl.forkAndExec(Native Method) ~[?:?]
>> >        at java.lang.ProcessImpl.<init>(ProcessImpl.java:340) ~[?:?]
>> >        at java.lang.ProcessImpl.start(ProcessImpl.java:271) ~[?:?]
>> >        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1107) ~[?:?]
>> >        ... 44 more
>> >
>> > Thanks,
>> > Markus

Re: Strange exif and tesseract exceptions since 2.x

Posted by Markus Jelsma <ma...@openindex.io>.
Hello Tim,

You are right, we can switch that class' level higher. But in general i
don't believe it is great to write 4 to 5 big stack traces at the debug
logging level as usually that level already has a big number of log lines.

If the trace is not necessary for ExternalParser users to fix a problem,
maybe a single log line would suffice instead.

Thanks!
Markus

Op wo 5 okt. 2022 om 14:53 schreef Tim Allison <ta...@apache.org>:

> If you need DEBUG elsewhere, can you selectively turn logging for the
> ExternalParser to ERROR?  Or is there a fix you'd recommend on the
> Tika side?
>
> On Wed, Oct 5, 2022 at 7:22 AM Markus Jelsma <ma...@openindex.io>
> wrote:
> >
> > Hello,
> >
> > We use Tika embedded in our Java programs and recently upgraded from one
> of the last 1.x to 2.x, currently 2.4.1.
> >
> > Since then, with debug logging on, Tika spews out a few pretty bug and
> partially repeating exceptions. This is not a real runtime problem, but
> just a distracting nuisance as my attention triggers when seeing stack
> traces.
> >
> > Is there something to do about it?
> >
> > This is the exif related trace:
> > 2022-10-05 13:16:42,136 DEBUG
> [TEST-SequenceBlockMarkerTest.testDierenforum-seed#[5F443E2359FE59DA]]
> external.ExternalParser (ExternalParser.java:172) - exit
> > value for ffmpeg: 0
> > 2022-10-05 13:16:42,140 DEBUG
> [TEST-SequenceBlockMarkerTest.testDierenforum-seed#[5F443E2359FE59DA]]
> external.ExternalParser (ExternalParser.java:180) - exce
> > ption trying to run  exiftool
> > java.io.IOException: Cannot run program "exiftool": error=2, No such
> file or directory
> >        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1128) ~[?:?]
> >        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1071) ~[?:?]
> >        at java.lang.Runtime.exec(Runtime.java:592) ~[?:?]
> >        at java.lang.Runtime.exec(Runtime.java:451) ~[?:?]
> >        at
> org.apache.tika.parser.external.ExternalParser.check(ExternalParser.java:161)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.external.ExternalParsersConfigReader.readCheckTagAndCheck(ExternalParsersConfigReader.java:203)
> ~[tika-core-2.4.1.jar:2.4.1
> > ]
> >        at
> org.apache.tika.parser.external.ExternalParsersConfigReader.readParser(ExternalParsersConfigReader.java:110)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.external.ExternalParsersConfigReader.read(ExternalParsersConfigReader.java:80)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.external.ExternalParsersConfigReader.read(ExternalParsersConfigReader.java:67)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.external.ExternalParsersConfigReader.read(ExternalParsersConfigReader.java:60)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.external.ExternalParsersFactory.create(ExternalParsersFactory.java:67)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.external.ExternalParsersFactory.create(ExternalParsersFactory.java:60)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.external.ExternalParsersFactory.create(ExternalParsersFactory.java:49)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.external.ExternalParsersFactory.create(ExternalParsersFactory.java:44)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.external.CompositeExternalParser.<init>(CompositeExternalParser.java:42)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.external.CompositeExternalParser.<init>(CompositeExternalParser.java:37)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method) ~[?:?]
> >        at
> jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
> ~[?:?]
> >        at
> jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> ~[?:?]
> >        at
> java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[?:?]
> >        at java.lang.Class.newInstance(Class.java:584) ~[?:?]
> >        at
> org.apache.tika.utils.ServiceLoaderUtils.newInstance(ServiceLoaderUtils.java:80)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.config.ServiceLoader.loadStaticServiceProviders(ServiceLoader.java:345)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.DefaultParser.getDefaultParsers(DefaultParser.java:105)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.DefaultParser.<init>(DefaultParser.java:52)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.DefaultParser.<init>(DefaultParser.java:66)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.config.TikaConfig.getDefaultParser(TikaConfig.java:291)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.config.TikaConfig.access$900(TikaConfig.java:87)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.config.TikaConfig$ParserXmlLoader.createDefault(TikaConfig.java:878)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.config.TikaConfig$ParserXmlLoader.createDefault(TikaConfig.java:824)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.config.TikaConfig$XmlLoader.loadOverall(TikaConfig.java:648)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:170)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:150)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:142)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:138)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:119)
> ~[test-classes/:?]
> >        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:112)
> ~[test-classes/:?]
> >        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:106)
> ~[test-classes/:?]
> >        at
> io.openindex.sax.readable.marker.block.SequenceBlockMarkerTest.testDierenforum(SequenceBlockMarkerTest.java:91)
> ~[test-classes/:?]
> >        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method) ~[?:?]
> >        at
> jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> ~[?:?]
> >        at
> jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[?:?]
> >        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1758)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:946)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:955)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:840)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:891)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:902)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.ThreadLeakControl$2.evaluate(ThreadLeakControl.java:426)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner.runSuite(RandomizedRunner.java:716)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner.access$200(RandomizedRunner.java:138)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:637)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> > Caused by: java.io.IOException: error=2, No such file or directory
> >        at java.lang.ProcessImpl.forkAndExec(Native Method) ~[?:?]
> >        at java.lang.ProcessImpl.<init>(ProcessImpl.java:340) ~[?:?]
> >        at java.lang.ProcessImpl.start(ProcessImpl.java:271) ~[?:?]
> >        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1107) ~[?:?]
> >        ... 59 more
> >
> > And here the Tesseract related trace:
> > 2022-10-05 13:16:42,331 DEBUG
> [TEST-SequenceBlockMarkerTest.testDierenforum-seed#[5F443E2359FE59DA]]
> external.ExternalParser (ExternalParser.java:180) - exce
> > ption trying to run  tesseract
> > java.io.IOException: Cannot run program "tesseract": error=2, No such
> file or directory
> >        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1128) ~[?:?]
> >        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1071) ~[?:?]
> >        at java.lang.Runtime.exec(Runtime.java:592) ~[?:?]
> >        at java.lang.Runtime.exec(Runtime.java:451) ~[?:?]
> >        at
> org.apache.tika.parser.external.ExternalParser.check(ExternalParser.java:161)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.ocr.TesseractOCRParser.hasTesseract(TesseractOCRParser.java:187)
> ~[tika-parsers-standard-package-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.ocr.TesseractOCRParser.initialize(TesseractOCRParser.java:529)
> ~[tika-parsers-standard-package-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.config.ServiceLoader.loadStaticServiceProviders(ServiceLoader.java:347)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.DefaultParser.getDefaultParsers(DefaultParser.java:105)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.DefaultParser.<init>(DefaultParser.java:52)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.parser.DefaultParser.<init>(DefaultParser.java:66)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.config.TikaConfig.getDefaultParser(TikaConfig.java:291)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.config.TikaConfig.access$900(TikaConfig.java:87)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.config.TikaConfig$ParserXmlLoader.createDefault(TikaConfig.java:878)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.config.TikaConfig$ParserXmlLoader.createDefault(TikaConfig.java:824)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at
> org.apache.tika.config.TikaConfig$XmlLoader.loadOverall(TikaConfig.java:648)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:170)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:150)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:142)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:138)
> ~[tika-core-2.4.1.jar:2.4.1]
> >        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:119)
> ~[test-classes/:?]
> >        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:112)
> ~[test-classes/:?]
> >        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:106)
> ~[test-classes/:?]
> >        at
> io.openindex.sax.readable.marker.block.SequenceBlockMarkerTest.testDierenforum(SequenceBlockMarkerTest.java:91)
> ~[test-classes/:?]
> >        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
> Method) ~[?:?]
> >        at
> jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> ~[?:?]
> >        at
> jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> ~[?:?]
> >        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1758)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:946)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:955)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:840)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:891)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:902)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.ThreadLeakControl$2.evaluate(ThreadLeakControl.java:426)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner.runSuite(RandomizedRunner.java:716)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner.access$200(RandomizedRunner.java:138)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> >        at
> com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:637)
> ~[randomizedtesting-runner-2.8.0.jar:?]
> > Caused by: java.io.IOException: error=2, No such file or directory
> >        at java.lang.ProcessImpl.forkAndExec(Native Method) ~[?:?]
> >        at java.lang.ProcessImpl.<init>(ProcessImpl.java:340) ~[?:?]
> >        at java.lang.ProcessImpl.start(ProcessImpl.java:271) ~[?:?]
> >        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1107) ~[?:?]
> >        ... 44 more
> >
> > Thanks,
> > Markus
>

Re: Strange exif and tesseract exceptions since 2.x

Posted by Tim Allison <ta...@apache.org>.
If you need DEBUG elsewhere, can you selectively turn logging for the
ExternalParser to ERROR?  Or is there a fix you'd recommend on the
Tika side?

On Wed, Oct 5, 2022 at 7:22 AM Markus Jelsma <ma...@openindex.io> wrote:
>
> Hello,
>
> We use Tika embedded in our Java programs and recently upgraded from one of the last 1.x to 2.x, currently 2.4.1.
>
> Since then, with debug logging on, Tika spews out a few pretty bug and partially repeating exceptions. This is not a real runtime problem, but just a distracting nuisance as my attention triggers when seeing stack traces.
>
> Is there something to do about it?
>
> This is the exif related trace:
> 2022-10-05 13:16:42,136 DEBUG [TEST-SequenceBlockMarkerTest.testDierenforum-seed#[5F443E2359FE59DA]] external.ExternalParser (ExternalParser.java:172) - exit
> value for ffmpeg: 0
> 2022-10-05 13:16:42,140 DEBUG [TEST-SequenceBlockMarkerTest.testDierenforum-seed#[5F443E2359FE59DA]] external.ExternalParser (ExternalParser.java:180) - exce
> ption trying to run  exiftool
> java.io.IOException: Cannot run program "exiftool": error=2, No such file or directory
>        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1128) ~[?:?]
>        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1071) ~[?:?]
>        at java.lang.Runtime.exec(Runtime.java:592) ~[?:?]
>        at java.lang.Runtime.exec(Runtime.java:451) ~[?:?]
>        at org.apache.tika.parser.external.ExternalParser.check(ExternalParser.java:161) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.external.ExternalParsersConfigReader.readCheckTagAndCheck(ExternalParsersConfigReader.java:203) ~[tika-core-2.4.1.jar:2.4.1
> ]
>        at org.apache.tika.parser.external.ExternalParsersConfigReader.readParser(ExternalParsersConfigReader.java:110) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.external.ExternalParsersConfigReader.read(ExternalParsersConfigReader.java:80) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.external.ExternalParsersConfigReader.read(ExternalParsersConfigReader.java:67) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.external.ExternalParsersConfigReader.read(ExternalParsersConfigReader.java:60) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.external.ExternalParsersFactory.create(ExternalParsersFactory.java:67) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.external.ExternalParsersFactory.create(ExternalParsersFactory.java:60) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.external.ExternalParsersFactory.create(ExternalParsersFactory.java:49) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.external.ExternalParsersFactory.create(ExternalParsersFactory.java:44) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.external.CompositeExternalParser.<init>(CompositeExternalParser.java:42) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.external.CompositeExternalParser.<init>(CompositeExternalParser.java:37) ~[tika-core-2.4.1.jar:2.4.1]
>        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
>        at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:?]
>        at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:?]
>        at java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[?:?]
>        at java.lang.Class.newInstance(Class.java:584) ~[?:?]
>        at org.apache.tika.utils.ServiceLoaderUtils.newInstance(ServiceLoaderUtils.java:80) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.ServiceLoader.loadStaticServiceProviders(ServiceLoader.java:345) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.DefaultParser.getDefaultParsers(DefaultParser.java:105) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.DefaultParser.<init>(DefaultParser.java:52) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.DefaultParser.<init>(DefaultParser.java:66) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig.getDefaultParser(TikaConfig.java:291) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig.access$900(TikaConfig.java:87) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig$ParserXmlLoader.createDefault(TikaConfig.java:878) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig$ParserXmlLoader.createDefault(TikaConfig.java:824) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig$XmlLoader.loadOverall(TikaConfig.java:648) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:170) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:150) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:142) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:138) ~[tika-core-2.4.1.jar:2.4.1]
>        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:119) ~[test-classes/:?]
>        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:112) ~[test-classes/:?]
>        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:106) ~[test-classes/:?]
>        at io.openindex.sax.readable.marker.block.SequenceBlockMarkerTest.testDierenforum(SequenceBlockMarkerTest.java:91) ~[test-classes/:?]
>        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
>        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
>        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
>        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1758) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:946) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:955) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:840) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:891) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:902) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.ThreadLeakControl$2.evaluate(ThreadLeakControl.java:426) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner.runSuite(RandomizedRunner.java:716) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner.access$200(RandomizedRunner.java:138) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:637) ~[randomizedtesting-runner-2.8.0.jar:?]
> Caused by: java.io.IOException: error=2, No such file or directory
>        at java.lang.ProcessImpl.forkAndExec(Native Method) ~[?:?]
>        at java.lang.ProcessImpl.<init>(ProcessImpl.java:340) ~[?:?]
>        at java.lang.ProcessImpl.start(ProcessImpl.java:271) ~[?:?]
>        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1107) ~[?:?]
>        ... 59 more
>
> And here the Tesseract related trace:
> 2022-10-05 13:16:42,331 DEBUG [TEST-SequenceBlockMarkerTest.testDierenforum-seed#[5F443E2359FE59DA]] external.ExternalParser (ExternalParser.java:180) - exce
> ption trying to run  tesseract
> java.io.IOException: Cannot run program "tesseract": error=2, No such file or directory
>        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1128) ~[?:?]
>        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1071) ~[?:?]
>        at java.lang.Runtime.exec(Runtime.java:592) ~[?:?]
>        at java.lang.Runtime.exec(Runtime.java:451) ~[?:?]
>        at org.apache.tika.parser.external.ExternalParser.check(ExternalParser.java:161) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.ocr.TesseractOCRParser.hasTesseract(TesseractOCRParser.java:187) ~[tika-parsers-standard-package-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.ocr.TesseractOCRParser.initialize(TesseractOCRParser.java:529) ~[tika-parsers-standard-package-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.ServiceLoader.loadStaticServiceProviders(ServiceLoader.java:347) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.DefaultParser.getDefaultParsers(DefaultParser.java:105) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.DefaultParser.<init>(DefaultParser.java:52) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.parser.DefaultParser.<init>(DefaultParser.java:66) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig.getDefaultParser(TikaConfig.java:291) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig.access$900(TikaConfig.java:87) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig$ParserXmlLoader.createDefault(TikaConfig.java:878) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig$ParserXmlLoader.createDefault(TikaConfig.java:824) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig$XmlLoader.loadOverall(TikaConfig.java:648) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:170) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:150) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:142) ~[tika-core-2.4.1.jar:2.4.1]
>        at org.apache.tika.config.TikaConfig.<init>(TikaConfig.java:138) ~[tika-core-2.4.1.jar:2.4.1]
>        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:119) ~[test-classes/:?]
>        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:112) ~[test-classes/:?]
>        at io.openindex.sax.SAXTestCase.getHandler(SAXTestCase.java:106) ~[test-classes/:?]
>        at io.openindex.sax.readable.marker.block.SequenceBlockMarkerTest.testDierenforum(SequenceBlockMarkerTest.java:91) ~[test-classes/:?]
>        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
>        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
>        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
>        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1758) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:946) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:490) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:955) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:840) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:891) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:902) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:390) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:843) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.ThreadLeakControl$2.evaluate(ThreadLeakControl.java:426) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner.runSuite(RandomizedRunner.java:716) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner.access$200(RandomizedRunner.java:138) ~[randomizedtesting-runner-2.8.0.jar:?]
>        at com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:637) ~[randomizedtesting-runner-2.8.0.jar:?]
> Caused by: java.io.IOException: error=2, No such file or directory
>        at java.lang.ProcessImpl.forkAndExec(Native Method) ~[?:?]
>        at java.lang.ProcessImpl.<init>(ProcessImpl.java:340) ~[?:?]
>        at java.lang.ProcessImpl.start(ProcessImpl.java:271) ~[?:?]
>        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1107) ~[?:?]
>        ... 44 more
>
> Thanks,
> Markus