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