Hi Chris, I added a check to see if this jar file exists (and is readable) both inside the ServletFilter init(...) and destroy(...) methods. Most of the times the check passes. But when I get NoClassDefFoundError, I see that check is passing during invocation of init(...) method but not during destroy(...) method. This is really weird behavior.
https://gist.github.com/hgadre/efd959ad1d0f1793b8b2 Thanks Hrishikesh On Wed, Feb 10, 2016 at 1:26 PM, Hrishikesh Gadre <gadre.s...@gmail.com> wrote: > Hi Chris, > > Thanks for the response. > > >>This looks like a different issue than you originally reported. Has > that other issue gone away? Or is this the root cause of the > originally-reported issue? > > I think it is the root cause for the original issue. As per my > understanding, the FileNotFoundException results in findClass method > (WebappClassLoader.java > line 1647) returning a ClassNotFoundException. After this, I see following > log entries (sorry didn't include them in my previous email). > > Feb 10, 2016 10:00:24 AM org.apache.catalina.loader.WebappClassLoader > loadClass > > FINE: loadClass(org.apache.solr.util.IOUtils, false) > > Feb 10, 2016 10:00:24 AM org.apache.catalina.loader.WebappClassLoader > loadClass > > FINE: Searching local repositories > > Feb 10, 2016 10:00:24 AM org.apache.catalina.loader.WebappClassLoader > findClass > > FINE: findClass(org.apache.solr.util.IOUtils) > > Feb 10, 2016 10:00:24 AM org.apache.catalina.loader.WebappClassLoader > openJARs > > FINE: Failed to open JAR > > java.io.FileNotFoundException: > /var/lib/solr/tomcat-deployment/webapps/solr/WEB-INF/lib/antlr-runtime-3.5.jar > (No such file or directory) > > ... > > Feb 10, 2016 10:00:24 AM org.apache.catalina.loader.WebappClassLoader > loadClass > > FINE: Delegating to parent classloader at end: > org.apache.catalina.loader.StandardClassLoader@65f40964 > > > It looks like the WebappClassLoader delegates the loading to the parent > class loader (WebappClassLoader.java line 1662). Since this jar file is > inside the WEB-INF/lib only, I think the parent class loader also can not > load it resulting in ClassNotFoundException in the end. Since the > FileNotFoundException is logged at the FINE level, it wasn't apparent until > I turned on FINE level logs for Tomcat. > > I also verified that the effective Tomcat user has "execute" permissions > for the entire > path (/var/lib/solr/tomcat-deployment/webapps/solr/WEB-INF/lib/). Here is > the output of namei command, > > namei -l > /var/lib/solr/tomcat-deployment/webapps/solr/WEB-INF/lib/antlr-runtime-3.5.jar > > f: > /var/lib/solr/tomcat-deployment/webapps/solr/WEB-INF/lib/antlr-runtime-3.5.jar > > drwxr-xr-x root root / > > drwxr-xr-x root root var > > drwxr-xr-x root root lib > > drwxr-xr-x solr solr solr > > drwxr-xr-x solr solr tomcat-deployment > > drwxr-xr-x solr solr webapps > > drwxr-xr-x solr solr solr > > drwxr-xr-x solr solr WEB-INF > > drwxr-xr-x solr solr lib > > -rw-r--r-- solr solr antlr-runtime-3.5.jar > > > Thanks > > Hrishikesh > > > > > > > On Wed, Feb 10, 2016 at 12:30 PM, Christopher Schultz < > ch...@christopherschultz.net> wrote: > >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA1 >> >> Hdishikesh, >> >> On 2/10/16 2:12 PM, Hrishikesh Gadre wrote: >> > Hi Chris, >> > >> > I did some more troubleshooting by enabling Tomcat debug logs. It >> > turns out that the class loading is failing due to >> > FileNotFoundException for antlr-runtime.jar file. I am not sure why >> > is that the case since I can see that jar file at the location >> > mentioned. >> > >> > Feb 10, 2016 10:00:24 AM >> > org.apache.catalina.loader.WebappClassLoader loadClass FINE: >> > loadClass(org.apache.solr.util.IOUtils, false) Feb 10, 2016 >> > 10:00:24 AM org.apache.catalina.loader.WebappClassLoader loadClass >> > FINE: Searching local repositories Feb 10, 2016 10:00:24 AM >> > org.apache.catalina.loader.WebappClassLoader findClass FINE: >> > findClass(org.apache.solr.util.IOUtils) Feb 10, 2016 10:00:24 AM >> > org.apache.catalina.loader.WebappClassLoader openJARs FINE: Failed >> > to open JAR java.io.FileNotFoundException: >> > /var/lib/solr/tomcat-deployment/webapps/solr/WEB-INF/lib/antlr-runtime >> - -3.5.jar >> > >> > >> (No such file or directory) >> > at java.util.zip.ZipFile.open(Native Method) at >> > java.util.zip.ZipFile.<init>(ZipFile.java:215) at >> > java.util.zip.ZipFile.<init>(ZipFile.java:145) at >> > java.util.jar.JarFile.<init>(JarFile.java:154) at >> > java.util.jar.JarFile.<init>(JarFile.java:118) at >> > org.apache.catalina.loader.WebappClassLoader.openJARs(WebappClassLoade >> r.java:2754) >> > >> > >> at >> > org.apache.catalina.loader.WebappClassLoader.findResourceInternal(Weba >> ppClassLoader.java:2994) >> > >> > >> at >> > org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappC >> lassLoader.java:2789) >> > >> > >> at >> > org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoad >> er.java:1159) >> > >> > >> at >> > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoad >> er.java:1647) >> > >> > >> at >> > org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoad >> er.java:1526) >> > >> > >> at org.apache.solr.cloud.Overseer.doClose(Overseer.java:1253) >> > at org.apache.solr.cloud.Overseer.close(Overseer.java:1246) at >> > org.apache.solr.cloud.ZkController.close(ZkController.java:500) at >> > org.apache.solr.core.ZkContainer.close(ZkContainer.java:280) at >> > org.apache.solr.core.CoreContainer.shutdown(CoreContainer.java:374) >> > >> > >> at >> > org.apache.solr.servlet.SolrDispatchFilter.destroy(SolrDispatchFilter. >> java:205) >> > >> > >> at >> > org.apache.catalina.core.ApplicationFilterConfig.release(ApplicationFi >> lterConfig.java:360) >> > >> > >> at >> > org.apache.catalina.core.StandardContext.filterStop(StandardContext.ja >> va:4111) >> > >> > >> at org.apache.catalina.core.StandardContext.stop(StandardContext.java:48 >> 80) >> > at >> > org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java: >> 1279) >> > >> > >> at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1385) >> > at >> > org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java: >> 307) >> > >> > >> at >> > org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(Lifecycle >> Support.java:142) >> > >> > >> at >> > org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase >> .java:1392) >> > >> > >> at >> > org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.pr >> ocessChildren(ContainerBase.java:1656) >> > >> > >> at >> > org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.pr >> ocessChildren(ContainerBase.java:1665) >> > >> > >> at >> > org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.ru >> n(ContainerBase.java:1645) >> > >> > >> at java.lang.Thread.run(Thread.java:745) >> > >> > I also verified that this jar file has appropriate permissions >> > set. >> > >> > sudo -u solr ls -all >> > /var/lib/solr/tomcat-deployment/webapps/solr/WEB-INF/lib/antlr-runtime >> - -3.5.jar >> > >> > -rw-r--r-- 1 solr solr 167735 Feb 10 10:00 >> > /var/lib/solr/tomcat-deployment/webapps/solr/WEB-INF/lib/antlr-runtime >> - -3.5.jar >> > >> > >> Please let me have your feedback on this. >> >> You also need to make sure that every directory from the root has >> "execute" privileges for the effective Tomcat user. >> >> This looks like a different issue than you originally reported. Has >> that other issue gone away? Or is this the root cause of the >> originally-reported issue? >> >> - -chris >> -----BEGIN PGP SIGNATURE----- >> Comment: GPGTools - http://gpgtools.org >> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ >> >> iEYEARECAAYFAla7ncsACgkQ9CaO5/Lv0PCZdACePaJi6JBfsd/EvAsSip+FUm3Q >> LMgAn0nuXI0hrbh2mqoh7U8U4x+4+/4X >> =cCGU >> -----END PGP SIGNATURE----- >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >> For additional commands, e-mail: users-h...@tomcat.apache.org >> >> >