Hi Mark, can you please review my previous mail and confirm whether i can proceed with the fix or not?
Thanks, Pravallika(VIN) On Thu, Mar 26, 2015 at 6:57 PM, Pravallika Peddi <reachme.va...@gmail.com> wrote: > Hi Mark, > > Sorry, I was on long vacation due to which I could not respond immediately > on bug: https://bz.apache.org/bugzilla/show_bug.cgi?id=56438 > > > > *Below are my further observations on Tomcat7.0 trunk:* > > 1) As mentioned in bug, in Tomcat7.0 catalina.properties file first 4 > default jars(except jdom.jar) are missing: > commons-discovery-*.jar,commons-el-*.jar,commons-net-*.jar > > We can add them under > “tomcat.util.scan.DefaultJarScanner.jarsToSkip” > > > 2) I observed that all the remaining jars are processed for TLDs > and Context configs. > > When I add those jars under > “org.apache.catalina.startup.TldConfig.jarsToSkip” and > “org.apache.catalina.startup.ContextConfig.jarsToSkip” they are getting > skipped from processing. > > > > 3) 3) So I am planning to provide a fix as below for Tomcat > 7.0 TLD scan: > > *org.apache.catalina.startup.TldConfig.java à tldScanJar(JarURLConnection > jarConn) method à** introduce a Boolean variable called isTldFound as > below:* *boolean isTldFound = false;* > > > > *Set this variable to true in below case(when tld found in jar):* > > * if (entryName.startsWith("META-INF/") &&* > > * entryName.endsWith(".tld")) {* > > *isTldFound > = true;* > > > > > > *After the while loop ends(processed all entries of jar), add > below code:* > > *if(!isFound){* > > * if (log.isDebugEnabled()) {* > > * > log.info(sm.getString("tldConfig.noTldInJar",* > > * > jarConn.getURL().toString()));* > > * }* > > * }* > > > > Here tldConfig.noTldInJar = No TLD files were found in [{0}]. Consider > adding the JAR to the org.apache.catalina.startup.TldConfig.jarsToSkip > property in CATALINA_BASE/conf/catalina.properties file. > > > > This message will be printed at FINE level. So unless user enables Debug > mode, he can not see the noTldInJar message. > > > > This message was taken from 8.0 trunk. > > > > > > *In Tomcat 8.0 trunk, we print a info Summary message to warn the user > saying “Atleast one jar was scanned …” Since in 8.0 both TLD and > ContextConfig are having two different approaches we can add that.* > > > > But in Tomcat 7.0, StandardJarScanner.scan method only called from both > TldConfig.java and ContextConfig.java. So I am afraid I cannot add the > Summary message in Tomcat7.0. When User enables FINE level then only they > can see the noTldInJar messages > > > > 4) Tomcat7.0 ContextConfig scan is taking less time, hence I feel we can > ignore it for now. > > > Please let me know your opinion. > > On Thu, Feb 26, 2015 at 12:59 AM, Mark Thomas <ma...@apache.org> wrote: > >> On 25/02/2015 11:46, Pravallika Peddi wrote: >> > Hi Mark, >> > >> > More updates on bug 56438: >> > >> > I have downloaded all the jars mentioned in the issue >> > except(Protomatter.jar, openspml2-toolkit.jar, ha-jdbc.jar, db2jcc4.jar, >> > hazelcast.jar) and added import statements in my web application for >> these >> > jars. >> > >> > I have added couple of more log messages for my research purpose in >> trunk >> > code of 8.0.x and 7.0.x and observed that, >> > >> > With 8.0.x trunk: >> > 1) All Jars got scanned for PLUGGABILITY and TLD's. >> >> Are you sure? Check the metadata-complete setting of the app you are >> using. >> >> > 2) After Pluggability scan, i do not see any log message stating >> "Atleast >> > one jar was scanned having no fragments and it is unnecessary to scan >> this >> > jar". Not sure whether it is expected or not. >> > >> > 3) For TLD scan, i could see a message stating "Atleast one jar was >> > scanned without TLD's. Enable debug logging provides more details on >> which >> > jars got scanned for TLDs.". When i enable "Debug" mode, i could see >> > messages stating "No TLDS were found in file:jar path. Consider adding >> this >> > to the tomcat.util.scan.StandardJarScanFilter.jarsToSkip property in >> > CATALINA_BASE/conf/catalina.properties file". >> > >> > With 7.0.x trunk: >> > 1) All Jars got scanned for TLDs. Seems Pluggability scan was not >> there(I >> > did not find the code for it. Correct me if i am wrong) >> >> The code is there. Look in ContextConfig. >> >> > 2) Afetr TLD scan, I do not see any message stating "No TLDs were found >> in >> > a jar" even with debug mode enabled. >> > >> > >> > My action items based on your confirmation: >> > >> > For 8.0.x trunk: >> > 1) For Pluggability scan, add code in such a way that it prints "No >> > Fragments were found in Jar. Hence add it under some filter in >> > catalina.properties file to avoid future scanning. >> > >> > 2) For TLDs: Nothing is required. >> > >> > For 7.0.x trunk: >> > 1) For TLD scan, add proper log message as in 8.0.x trunk for TLD not >> found >> > jars. >> > >> > Please add your suggestions. >> >> That looks like a good place to start. The tricky bit will be how you >> mark a JAR as 'skippable'. >> >> Mark >> >> >> > >> > Regards, >> > Pravallika(VIN) >> > >> > On Mon, Feb 23, 2015 at 2:46 PM, Pravallika Peddi < >> reachme.va...@gmail.com> >> > wrote: >> > >> >> Sure Mark. I am doing the research. >> >> >> >> On Thu, Feb 19, 2015 at 3:11 PM, Mark Thomas <ma...@apache.org> wrote: >> >> >> >>> On 19/02/2015 07:17, Pravallika Peddi wrote: >> >>>> Hi Mark, >> >>>> Below are my observations during my research on the bug: >> >>>> >> >>>> 1) I downloaded recent trunk and ran the ant command so that the >> >>>> build/bin/lib folders are generated. >> >>>> >> >>>> 2) I created a simple web application and exported to WAR file which >> is >> >>> of >> >>>> 3.4 MB size including 10 required jar files. >> >>>> >> >>>> 3) I enabled debugging as mentioned in bug: >> >>>> org.apache.tomcat.util.scan.StandardJarScanner.level = FINE >> >>>> org.apache.catalina.startup.Catalina.level = INFO >> >>>> >> >>>> 4) I deployed the WAR file using trunk/output/build/bin/catalina.bat >> >>> file. >> >>>> Deployment is successful and i could see my application running. >> >>>> >> >>>> One Log message observed is: >> >>>> 19-Feb-2015 04:30:45.958 INFO [localhost-startStop-1] >> >>>> org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was >> >>> scanned >> >>>> for TLDs yet contained no TLDs. Enable debug logging for this logger >> >>> for a >> >>>> complete list of JARs that were scanned but no TLDs were found in >> them. >> >>>> Skipping unneeded JARs during scanning can improve startup time and >> JSP >> >>>> compilation time. >> >>>> >> >>>> 19-Feb-2015 04:30:47.144 INFO [main] >> >>>> org.apache.catalina.startup.Catalina.start Server startup in 2680 ms >> >>>> >> >>>> Even though i kept 10jars only 5 jars got scanned and don't see the >> >>> issue >> >>>> reproduced. >> >>>> >> >>>> My assumptions on Bug: Deploy simple WAR taking longer time due to >> >>> tomcat >> >>>> 7.0 JAR scanning is taking more time. >> >>> >> >>> Correct. >> >>> >> >>>> Enhancement requested is: If some jar file is missing then add a log >> >>>> message in log file saying "add it under JarsToSkip". >> >>> >> >>> There are multiple reasons a JAR can be scanned and different >> properties >> >>> to control which scans it is included in / excluded from. >> >>> >> >>> The properties that control the scanning process changed between 7.0.x >> >>> and 8.0.x. 8.0.x also introduced the JarScanFilter configuration >> element. >> >>> >> >>>> Please correct me if my understanding about the bug is wrong. >> >>> >> >>> It isn't quite as simple as it looks. There are different views about >> >>> what should appear by default. I'd suggest you aim for the following >> >>> (some of which may already be implemented). >> >>> >> >>> 1) By default, no more than 1 log message per type of JAR scan (TLD, >> >>> Pluggability) per web application stating that one or more JARs were >> >>> scanned unnecessarily and that Tomcat could be configured to skip them >> >>> in future. Include details of how to get the full list of JARs if >> >>> required and what configuration option to change. >> >>> >> >>> 2) A simple way to enable additional logging to log each JAR and scan >> >>> type combination that was unnecessary. This additional logging should >> >>> not 'hide' the JAR/scan details and in a pile of other log messages. >> >>> >> >>> 3) Review the list of JARs in that bug to see which ones should be >> added >> >>> to which JAR scan skip option - if any - by default. >> >>> >> >>> The solution for trunk and 8.0.x is likely to be different than the >> >>> solution for 7.0.x. >> >>> >> >>> A quick look at the code suggests that the TLD scanning is pretty much >> >>> there (but you should check it). The pluggability scanning isn't and >> it >> >>> is harder to determine which JARs can be skipped because there are >> >>> multiple things the JARs are checked for in different places. This >> could >> >>> get messy if you aren't careful. I suggest you come up with a proposal >> >>> and run it past the dev list before you go to far with development of >> >>> this. >> >>> >> >>> Mark >> >>> >> >>> >> >>>> >> >>>> Thanks, >> >>>> Pravallika(VIN) >> >>>> >> >>>> On Wed, Feb 18, 2015 at 12:30 PM, Pravallika Peddi < >> >>> reachme.va...@gmail.com> >> >>>> wrote: >> >>>> >> >>>>> Sure Mark, I will try and let you know. >> >>>>> >> >>>>> >> >>>>> On Tue, Feb 17, 2015 at 4:20 PM, Mark Thomas <ma...@apache.org> >> wrote: >> >>>>> >> >>>>>> On 17/02/2015 06:42, Pravallika Peddi wrote: >> >>>>>>> Hi Mark, >> >>>>>>> Its regarding the another bug that you shared to me: >> >>>>>>> https://bz.apache.org/bugzilla/show_bug.cgi?id=56438 >> >>>>>>> >> >>>>>>> This bug involves migration from 5.5 to 7.0, and i am new to >> >>> migration >> >>>>>> of >> >>>>>>> Tomcat releases. Hence can you assign me some other issues which >> can >> >>>>>> handle >> >>>>>>> with code directly? >> >>>>>>> >> >>>>>>> Or please let me know the search criteria to find out the right >> >>> issues >> >>>>>>> based on my expertise. >> >>>>>> >> >>>>>> Do some more research on that issue. Migration was just the point >> in >> >>>>>> time where the user discovered the issue with the current Tomcat >> >>>>>> behaviour. You should be able to replicate the problem with a very >> >>>>>> simple web application with trunk (or just add JARs to one of the >> web >> >>>>>> applications that ships with Tomcat). >> >>>>>> >> >>>>>> Mark >> >>>>>> >> >>>>>> >> >>>>>> >> --------------------------------------------------------------------- >> >>>>>> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org >> >>>>>> For additional commands, e-mail: dev-h...@tomcat.apache.org >> >>>>>> >> >>>>>> >> >>>>> >> >>>> >> >>> >> >>> >> >>> --------------------------------------------------------------------- >> >>> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org >> >>> For additional commands, e-mail: dev-h...@tomcat.apache.org >> >>> >> >>> >> >> >> > >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org >> For additional commands, e-mail: dev-h...@tomcat.apache.org >> >> >