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 <[email protected]>:

> 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 <[email protected]>
> 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
>

Reply via email to