Re: Questions About Tomcat Exception Handling
On 21/01/2015 19:14, Felipe Ebert wrote: Hello I'm sorry that this mail is not a development issue itself, it is just a question about Tomcat' exception handling. I was checking some mails at Tomcat dev list and I found two interesting and contrasting responses regarding exception handling: one is from Mark Thomas and another is from Remy Maucherat: Mark Thomas: http://www.mail-archive.com/dev%40tomcat.apache.org/msg45180.html Remy Maucherat: http://www.mail-archive.com/dev%40tomcat.apache.org/msg10280.html The tone might be different but the response is pretty much the same: we don't view the issues reported as bugs. So, I just would like to understand why Tomcat don't care about those generic catches patterns (catch Throwable or catch Exception) as Remmy said in his mail, which contrasts with Mark comments. And also I would really appreciate if anyone could give me some insights in the matter. Again, I don't read the substance of our responses as being that different. Where these patterns are used they are used with good reason. If someone reports one that isn't backed with a good reason we'll fix it. The frustrating thing from our point of view is that most of the reports we receive along these lines are from people who clearly have zero understanding of the Tomcat code and are blindly reporting something some static analysis tool has reported. I'm not going to justify every single time we catch Throwable but a typical pattern is when calling user code that can (and often does) throw some random exception the only viable option when any error in user code needs handling (even if it is to simply ignore it) is to catch Throwable. And lastly, I also would like to hear some comments about how frequent bugs are reported in Tomcat mailing list and not in the Bugzilla. I know the pattern is to use Bugzilla, but I saw some comments from Dr. Justin Erenkrantz (from Apache team) discussing that there are a lot of important bugs fixes only reported in Tomcat mailing list. Take a look at the change log. That will give you an idea of how many things get fixed that aren't in bugzilla. Whether it was originally reported via a mailing list isn't recorded. They will be a mix of mailing list, things committers spot at work and things committers spot while looking at the code for some other reason. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: Tagging Tomcat 7.0.58
2015-01-21 18:20 GMT+02:00 Felix Schumacher felix.schumac...@internetallee.de: Am 21. Januar 2015 15:07:50 MEZ, schrieb Violeta Georgieva violet...@apache.org: Hi, I would like to start preparing Tomcat 7.0.58. If you want to add something to this release please reply here. Should we include the fix for 57420? That one I have in mind. Regards Violeta Regards Felix Thanks, Violeta - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1653562 - /tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java
On 21 January 2015 16:07:21 GMT+00:00, Christopher Schultz ch...@christopherschultz.net wrote: Mark, On 1/21/15 10:45 AM, ma...@apache.org wrote: Author: markt Date: Wed Jan 21 15:45:06 2015 New Revision: 1653562 URL: http://svn.apache.org/r1653562 Log: Fix compilation error Just curious: this compiled fine for me. Why the change? Because the class referenced was removed several weeks ago. Mark -chris Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java?rev=1653562r1=1653561r2=1653562view=diff == --- tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java (original) +++ tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java Wed Jan 21 15:45:06 2015 @@ -37,8 +37,7 @@ public class WarWatcher { /*--Static Variables*/ private static final Log log = LogFactory.getLog(WarWatcher.class); -private static final StringManager sm = -StringManager.getManager(Constants.Package); +private static final StringManager sm = StringManager.getManager(WarWatcher.class); /*--Instance Variables--*/ /** - 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
Questions About Tomcat Exception Handling
Hello I'm sorry that this mail is not a development issue itself, it is just a question about Tomcat' exception handling. I was checking some mails at Tomcat dev list and I found two interesting and contrasting responses regarding exception handling: one is from Mark Thomas and another is from Remy Maucherat: Mark Thomas: http://www.mail-archive.com/dev%40tomcat.apache.org/msg45180.html Remy Maucherat: http://www.mail-archive.com/dev%40tomcat.apache.org/msg10280.html So, I just would like to understand why Tomcat don't care about those generic catches patterns (catch Throwable or catch Exception) as Remmy said in his mail, which contrasts with Mark comments. And also I would really appreciate if anyone could give me some insights in the matter. And lastly, I also would like to hear some comments about how frequent bugs are reported in Tomcat mailing list and not in the Bugzilla. I know the pattern is to use Bugzilla, but I saw some comments from Dr. Justin Erenkrantz (from Apache team) discussing that there are a lot of important bugs fixes only reported in Tomcat mailing list. I would like to thank you for the time. Any response will be very important to my research. -- Felipe Ebert
svn commit: r1653576 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/catalina/ha/deploy/LocalStrings.properties java/org/apache/catalina/ha/deploy/WarWatcher.java
Author: schultz Date: Wed Jan 21 16:18:22 2015 New Revision: 1653576 URL: http://svn.apache.org/r1653576 Log: Prefer CamelCase in log string keys. Modified: tomcat/tc7.0.x/trunk/ (props changed) tomcat/tc7.0.x/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties tomcat/tc7.0.x/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java Propchange: tomcat/tc7.0.x/trunk/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Jan 21 16:18:22 2015 @@ -1,2 +1,2 @@ /tomcat/tc8.0.x/trunk:1636525,1637336,1637685,1637709,1638726,1640089,1640276,1640349,1640363,1640366,1640642,1640672,1640674,1640689,1640884,1641001,1641065,1641067,1641375,1641638,1641723,1641726,1641729-1641730,1641736,1641988,1642669-1642670,1642698,1642701,1643205,1643215,1643217,1643230,1643232,1643273,1643285,1643329-1643330,1643511,1643513,1643521,1643539,1643571,1643581-1643582,1643635,1643655,1643738,1643964,1644018,1644333,1644954,1644992,1645014,1645360,1645456,1645627,1645642,1645686,1645903-1645904,1645908-1645909,1645913,1645920,1646458,1646460-1646462,1647043,1648816,1651420-1651422,1651844,1652939-1652940,1652973 -/tomcat/trunk:1156115-1157160,1157162-1157859,1157862-1157942,1157945-1160347,1160349-1163716,1163718-1166689,1166691-1174340,1174342-1175596,1175598-1175611,1175613-1175932,1175934-1177783,1177785-1177980,1178006-1180720,1180722-1183094,1183096-1187753,1187755,1187775,1187801,1187806,1187809,1187826-1188312,1188314-1188401,1188646-1188840,1188842-1190176,1190178-1195223,1195225-1195953,1195955,1195957-1201238,1201240-1203345,1203347-1206623,1206625-1208046,1208073,1208096,1208114,1208145,1208772,1209194-1212125,1212127-1220291,1220293,1220295-1221321,1221323-1222329,1222332-1222401,1222405-1222795,1222850-1222950,1222969-1225326,1225328-1225463,1225465,1225627,1225629-1226534,1226536-1228908,1228911-1228923,1228927-1229532,1229534-1230766,1230768-1231625,1231627-1233414,1233419-1235207,1235209-1237425,1237427,1237429-1237977,1237981,1237985,1237995,1238070,1238073,1239024-1239048,1239050-1239062,1239135,1239256,1239258-1239485,1239785-1240046,1240101,1240106,1240109,1240112,1240114 ,1240116,1240118,1240121,1240329,1240474-1240850,1240857,1241087,1241160,1241408-1241822,1241908-1241909,1241912-1242110,1242371-1292130,1292134-1292458,1292464-1292670,1292672-1292776,1292780-1293392,1293397-1297017,1297019-1297963,1297965-1299820,1300108,1300111-1300460,1300520-1300948,1300997,1301006,1301280,1302332,1302348,1302608-1302610,1302649,1302837,1303138,1303163,1303338,1303521,1303587,1303698,1303803,1303852,1304011,1304035,1304037,1304135,1304249,1304253,1304260,1304271,1304275,1304468,1304895,1304930-1304932,1305194,1305943,1305965,1306556,1306579-1306580,1307084,1307310,1307511-1307512,1307579,1307591,1307597,1310636,1310639-1310640,1310642,1310701,1311212,1311995,1327617,1327670,1331766,1333161,1333173,1333827,1334787,1335026,1335257,1335547,1335692,1335711,1335731,1336515,1336813,1336864,1336868,1336884,1337419,1337426,1337546,1337572,1337591-1337595,1337643,1337707,1337719,1337734,1337741,1337745,1338151-1338154,1338178,1342027,1342029,1342315,1342320,1342476,1342 498,1342503,1342717,1342795,1342805,1343044-1343046,1343335,1343394,1343400,1343629,1343708,1343718,1343895,1344063,1344068,1344250,1344266,1344515,1344528,1344612,1344629,1344725,1344868,1344890,1344893,1344896,1344901,1345020,1345029,1345039,1345287-1345290,1345294,1345309,1345325,1345357,1345367,1345579-1345580,1345582,1345688,1345699,1345704,1345731-1345732,1345737,1345744,1345752,1345754,1345779,1345781,1345846,1346107,1346365,1346376,1346404,1346510,1346514,1346519,1346581,1346635,1346644,1346683,1346794,1346885,1346932,1347034,1347047,1347087,1347108-1347109,1347583,1347737,1348105,1348357,1348398,1348425,1348461-1348495,1348498,1348752,1348762,1348772,1348776,1348859,1348968,1348973,1348989,1349007,1349237,1349298,1349317,1349410,1349473,1349539,1349879,1349887,1349893,1349922,1349984,1350124,1350241,1350243,1350294-1350295,1350299,1350864,1350900,1351010,1351054,1351056,1351068,1351134-1351135,1351148,1351259,1351604,1351636-1351640,1351991,1351993,1352011,1352056,1352059,1
[Bug 57476] New: Incomplete html pages
https://issues.apache.org/bugzilla/show_bug.cgi?id=57476 Bug ID: 57476 Summary: Incomplete html pages Product: Tomcat 8 Version: 8.0.17 Hardware: PC Status: NEW Severity: normal Priority: P2 Component: Catalina Assignee: dev@tomcat.apache.org Reporter: alexan...@claet.fr Hello, I upgrade Tomcat from 8.0.15 to 8.0.17. I'm using SSL on tomcat server and I disabled port 80. with version 8.0.15 everything is fine with version 8.0.17 for my applications a lot of html pages are incomplete, and some applications stop responding after using them some minutes. I downgrade to 8.0.15 to have no problem. Nothing in tomcat logs. I don't know where is the problem (tomcat, my applications, ...), just want to give you this information. Thank you, Kind regards, Alexandre. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1653574 - in /tomcat/trunk/java/org/apache/catalina/ha/deploy: LocalStrings.properties WarWatcher.java
Author: schultz Date: Wed Jan 21 16:15:56 2015 New Revision: 1653574 URL: http://svn.apache.org/r1653574 Log: Prefer CamelCase for localized log strings. Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties?rev=1653574r1=1653573r2=1653574view=diff == --- tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties Wed Jan 21 16:15:56 2015 @@ -46,8 +46,8 @@ farmWarDeployer.undeployEnd=Undeployment farmWarDeployer.undeployLocal=Undeploy local context [{0}] farmWarDeployer.watchDir=Cluster deployment is watching [{0}] for changes. -warWatcher.checking-wars=Checking WARs in {0} -warWatcher.listed-file-does-not-exist={0} was detected in {1} but does not exist. Check directory permissions on {1}? -warWatcher.checking-war=Checking WAR file {0} -warWatcher.check-war.result=WarInfo.check() returned {0} for {1} -warWatcher.cant-list-watchDir=Cannot list files in WatchDir {0}: check to see if it is a directory and has read permissions. +warWatcher.checkingWars=Checking WARs in {0} +warWatcher.listedFileDoesNotExist={0} was detected in {1} but does not exist. Check directory permissions on {1}? +warWatcher.checkingWar=Checking WAR file {0} +warWatcher.checkWarResult=WarInfo.check() returned {0} for {1} +warWatcher.cantListWatchDir=Cannot list files in WatchDir {0}: check to see if it is a directory and has read permissions. Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java?rev=1653574r1=1653573r2=1653574view=diff == --- tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java (original) +++ tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java Wed Jan 21 16:15:56 2015 @@ -69,10 +69,10 @@ public class WarWatcher { */ public void check() { if (log.isDebugEnabled()) -log.debug(sm.getString(warWatcher.checking-wars, watchDir)); +log.debug(sm.getString(warWatcher.checkingWars, watchDir)); File[] list = watchDir.listFiles(new WarFilter()); if (list == null) { -log.warn(sm.getString(warWatcher.cant-list-watchDir, +log.warn(sm.getString(warWatcher.cantListWatchDir, watchDir)); list = new File[0]; @@ -80,7 +80,7 @@ public class WarWatcher { //first make sure all the files are listed in our current status for (int i = 0; i list.length; i++) { if(!list[i].exists()) -log.warn(sm.getString(warWatcher.listed-file-does-not-exist, +log.warn(sm.getString(warWatcher.listedFileDoesNotExist, list[i], watchDir)); addWarInfo(list[i]); @@ -92,7 +92,7 @@ public class WarWatcher { Map.EntryString,WarInfo entry = i.next(); WarInfo info = entry.getValue(); if(log.isTraceEnabled()) -log.trace(sm.getString(warWatcher.checking-war, +log.trace(sm.getString(warWatcher.checkingWar, info.getWar())); int check = info.check(); if (check == 1) { @@ -103,7 +103,7 @@ public class WarWatcher { i.remove(); } if(log.isTraceEnabled()) -log.trace(sm.getString(warWatcher.check-war.result, +log.trace(sm.getString(warWatcher.checkWarResult, Integer.valueOf(check), info.getWar())); } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1653550 - in /tomcat/trunk/java/org/apache/catalina/ha/deploy: LocalStrings.properties WarWatcher.java
On 21/01/2015 15:07, schu...@apache.org wrote: Author: schultz Date: Wed Jan 21 15:07:12 2015 New Revision: 1653550 URL: http://svn.apache.org/r1653550 Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=57473 Add more logging to WarWatcher, specifically checking for odd states like non-existent files that were just listed by the filesystem, which suggests a permissions problem. Moved log strings into LocalStrings.properties Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties?rev=1653550r1=1653549r2=1653550view=diff == --- tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties Wed Jan 21 15:07:12 2015 @@ -45,3 +45,9 @@ farmWarDeployer.stopped=Cluster FarmWarD farmWarDeployer.undeployEnd=Undeployment from [{0}] finished. farmWarDeployer.undeployLocal=Undeploy local context [{0}] farmWarDeployer.watchDir=Cluster deployment is watching [{0}] for changes. + +warWatcher.checking-wars=Checking WARs in {0} +warWatcher.listed-file-does-not-exist={0} was detected in {1} but does not exist. Check directory permissions on {1}? +warWatcher.checking-war=Checking WAR file {0} +warWatcher.check-war.result=WarInfo.check() returned {0} for {1} +warWatcher.cant-list-watchDir=Cannot list files in WatchDir {0}: check to see if it is a directory and has read permissions. It would have been better to stick to CamelCase format for property names as in the vast majority of these files - including elsewhere in this one. Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java?rev=1653550r1=1653549r2=1653550view=diff == --- tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java (original) +++ tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java Wed Jan 21 15:07:12 2015 @@ -23,6 +23,7 @@ import java.util.Map; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; +import org.apache.tomcat.util.res.StringManager; /** * The bWarWatcher /b watches the deployDir for changes made to the @@ -36,6 +37,8 @@ public class WarWatcher { /*--Static Variables*/ private static final Log log = LogFactory.getLog(WarWatcher.class); +private static final StringManager sm = +StringManager.getManager(Constants.Package); Coding style is now for up 100 chars in a code line. You probably don't need to wrap here. Note there is the option to use the class name directly in getManager(), removing the need for the package name constant (that usually causes issues when refactoring in IDEs). /*--Instance Variables--*/ /** @@ -67,20 +70,31 @@ public class WarWatcher { */ public void check() { if (log.isDebugEnabled()) -log.debug(check cluster wars at + watchDir); +log.debug(sm.getString(warWatcher.checking-wars, watchDir)); File[] list = watchDir.listFiles(new WarFilter()); -if (list == null) +if (list == null) { +log.warn(sm.getString(warWatcher.cant-list-watchDir, + watchDir)); Probably no need to wrap here either. Maybe a few other places below but I can't tell just by looking at the code - it looks to be close to 100 in a few places. + list = new File[0]; +} I was wondering about the usefulness of a debug message here saying how many files were found. Not sure though. Mark //first make sure all the files are listed in our current status for (int i = 0; i list.length; i++) { +if(!list[i].exists()) + log.warn(sm.getString(warWatcher.listed-file-does-not-exist, + list[i], watchDir)); + addWarInfo(list[i]); } -//check all the status codes and update the FarmDeployer +// Check all the status codes and update the FarmDeployer for (IteratorMap.EntryString,WarInfo i = currentStatus.entrySet().iterator(); i.hasNext();) { Map.EntryString,WarInfo entry = i.next(); WarInfo info = entry.getValue(); +if(log.isTraceEnabled()) +log.trace(sm.getString(warWatcher.checking-war, +
Re: svn commit: r1653562 - /tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java
Mark, On 1/21/15 10:45 AM, ma...@apache.org wrote: Author: markt Date: Wed Jan 21 15:45:06 2015 New Revision: 1653562 URL: http://svn.apache.org/r1653562 Log: Fix compilation error Just curious: this compiled fine for me. Why the change? -chris Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java?rev=1653562r1=1653561r2=1653562view=diff == --- tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java (original) +++ tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java Wed Jan 21 15:45:06 2015 @@ -37,8 +37,7 @@ public class WarWatcher { /*--Static Variables*/ private static final Log log = LogFactory.getLog(WarWatcher.class); -private static final StringManager sm = -StringManager.getManager(Constants.Package); +private static final StringManager sm = StringManager.getManager(WarWatcher.class); /*--Instance Variables--*/ /** - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org signature.asc Description: OpenPGP digital signature
Re: Tagging Tomcat 7.0.58
Am 21. Januar 2015 15:07:50 MEZ, schrieb Violeta Georgieva violet...@apache.org: Hi, I would like to start preparing Tomcat 7.0.58. If you want to add something to this release please reply here. Should we include the fix for 57420? Regards Felix Thanks, Violeta - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57476] Incomplete html pages
https://issues.apache.org/bugzilla/show_bug.cgi?id=57476 Mark Thomas ma...@apache.org changed: What|Removed |Added OS||All --- Comment #1 from Mark Thomas ma...@apache.org --- Which connector are you using? Does the problem stop if you switch connectors? Is sendFile enabled? If yes, does the problem stop if sendFile is disabled? Thread dump (ideally 3, ~10s apart) when the application stops responding? Please provide the logs from the time the issue occurs. They may tell us something they don't tell you. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1653562 - /tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java
Author: markt Date: Wed Jan 21 15:45:06 2015 New Revision: 1653562 URL: http://svn.apache.org/r1653562 Log: Fix compilation error Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java?rev=1653562r1=1653561r2=1653562view=diff == --- tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java (original) +++ tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java Wed Jan 21 15:45:06 2015 @@ -37,8 +37,7 @@ public class WarWatcher { /*--Static Variables*/ private static final Log log = LogFactory.getLog(WarWatcher.class); -private static final StringManager sm = -StringManager.getManager(Constants.Package); +private static final StringManager sm = StringManager.getManager(WarWatcher.class); /*--Instance Variables--*/ /** - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1653564 - /tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
Author: kkolinko Date: Wed Jan 21 15:45:32 2015 New Revision: 1653564 URL: http://svn.apache.org/r1653564 Log: Fix broken XML markup Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1653564r1=1653563r2=1653564view=diff == --- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Wed Jan 21 15:45:32 2015 @@ -193,13 +193,14 @@ codecontextInitialized()/code and codecontextDestroyed()/code. (markt) /fix - fix + fix bug57461/bug: When an instance of codeorg.apache.catalina.startup.VersionLoggerListener/code logs the result of codeSystem.getProperty(java.home)/code don't report it in a manner that makes it look like the codeJAVA_HOME/code environment variable. (markt) /fix +/changelog /subsection subsection name=Coyote changelog - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1653550 - in /tomcat/trunk/java/org/apache/catalina/ha/deploy: LocalStrings.properties WarWatcher.java
Mark, On 1/21/15 10:37 AM, Mark Thomas wrote: On 21/01/2015 15:07, schu...@apache.org wrote: Author: schultz Date: Wed Jan 21 15:07:12 2015 New Revision: 1653550 URL: http://svn.apache.org/r1653550 Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=57473 Add more logging to WarWatcher, specifically checking for odd states like non-existent files that were just listed by the filesystem, which suggests a permissions problem. Moved log strings into LocalStrings.properties Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties?rev=1653550r1=1653549r2=1653550view=diff == --- tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties Wed Jan 21 15:07:12 2015 @@ -45,3 +45,9 @@ farmWarDeployer.stopped=Cluster FarmWarD farmWarDeployer.undeployEnd=Undeployment from [{0}] finished. farmWarDeployer.undeployLocal=Undeploy local context [{0}] farmWarDeployer.watchDir=Cluster deployment is watching [{0}] for changes. + +warWatcher.checking-wars=Checking WARs in {0} +warWatcher.listed-file-does-not-exist={0} was detected in {1} but does not exist. Check directory permissions on {1}? +warWatcher.checking-war=Checking WAR file {0} +warWatcher.check-war.result=WarInfo.check() returned {0} for {1} +warWatcher.cant-list-watchDir=Cannot list files in WatchDir {0}: check to see if it is a directory and has read permissions. It would have been better to stick to CamelCase format for property names as in the vast majority of these files - including elsewhere in this one. Okay, I can change those. Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java?rev=1653550r1=1653549r2=1653550view=diff == --- tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java (original) +++ tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java Wed Jan 21 15:07:12 2015 @@ -23,6 +23,7 @@ import java.util.Map; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; +import org.apache.tomcat.util.res.StringManager; /** * The bWarWatcher /b watches the deployDir for changes made to the @@ -36,6 +37,8 @@ public class WarWatcher { /*--Static Variables*/ private static final Log log = LogFactory.getLog(WarWatcher.class); +private static final StringManager sm = +StringManager.getManager(Constants.Package); Coding style is now for up 100 chars in a code line. You probably don't need to wrap here. ACK Note there is the option to use the class name directly in getManager(), removing the need for the package name constant (that usually causes issues when refactoring in IDEs). Okay. Honestly, when I added the StringManager to the class I was a little iffy about the use of Constants.Package, but that's the way it's done in FarmWarDeployer in the same package, so I decided to leave it. Should we completely remove o.a.c.ha.deploy.Constants entirely, then? It's such a small package, it wouldn't be a big change to remove that one. /*--Instance Variables--*/ /** @@ -67,20 +70,31 @@ public class WarWatcher { */ public void check() { if (log.isDebugEnabled()) -log.debug(check cluster wars at + watchDir); +log.debug(sm.getString(warWatcher.checking-wars, watchDir)); File[] list = watchDir.listFiles(new WarFilter()); -if (list == null) +if (list == null) { +log.warn(sm.getString(warWatcher.cant-list-watchDir, + watchDir)); Probably no need to wrap here either. Maybe a few other places below but I can't tell just by looking at the code - it looks to be close to 100 in a few places. I usually don't aggressively wrap to 80 columns, but when method calls have tons of arguments in them, I tend to wrap mostly to avoid endless scrolling to see the end of the line. Looks like my default Eclipse view can see out to 102 columns without scrolling, so I'll use that at my metric in the future. + list = new File[0]; +} I was wondering about the usefulness of a debug message here saying how many files were found. Not sure though. With trace logging enabled, you'll see the name of every WAR file processed. If you don't see
svn commit: r1653575 - in /tomcat/tc8.0.x/trunk: ./ java/org/apache/catalina/ha/deploy/LocalStrings.properties java/org/apache/catalina/ha/deploy/WarWatcher.java
Author: schultz Date: Wed Jan 21 16:16:40 2015 New Revision: 1653575 URL: http://svn.apache.org/r1653575 Log: Prefer CamelCase for log string keys. Modified: tomcat/tc8.0.x/trunk/ (props changed) tomcat/tc8.0.x/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties tomcat/tc8.0.x/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java Propchange: tomcat/tc8.0.x/trunk/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Jan 21 16:16:40 2015 @@ -1 +1 @@ -/tomcat/trunk:1636524,1637156,1637176,1637188,1637331,1637684,1637695,1638720-1638725,1639653,1640010,1640083-1640084,1640088,1640275,1640322,1640347,1640361,1640365,1640403,1640410,1640652,1640655-1640658,1640688,1640700-1640883,1640903,1640976,1640978,1641000,1641026,1641038-1641039,1641051-1641052,1641058,1641064,1641300,1641369,1641374,1641380,1641486,1641634,1641656-1641692,1641704,1641707-1641718,1641720-1641722,1641735,1641981,1642233,1642280,1642554,1642564,1642595,1642606,1642668,1642679,1642697,1642699,1642766,1643002,1643045,1643054-1643055,1643066,1643121,1643128,1643206,1643209-1643210,1643216,1643249,1643270,1643283,1643309-1643310,1643323,1643365-1643366,1643370-1643371,1643465,1643474,1643536,1643570,1643634,1643649,1643651,1643654,1643675,1643731,1643733-1643734,1643761,1643766,1643814,1643937,1643963,1644017,1644169,1644201-1644203,1644321,1644323,1644516,1644523,1644529,1644535,1644730,1644768,1644784-1644785,1644790,1644793,1644815,1644884,1644886,1644890,1644892 ,1644910,1644924,1644929-1644930,1644935,1644989,1645011,1645247,1645355,1645357-1645358,1645455,1645465,1645469,1645471,1645473,1645475,1645486-1645488,1645626,1645641,1645685,1645743,1645763,1645951-1645953,1645955,1645993,1646098-1646106,1646178,1646220,1646302,1646304,1646420,1646470-1646471,1646476,1646559,1646717-1646723,1646773,1647026,1647042,1647530,1647655,1648304,1648815,1648907,1650081,1650365,1651116,1651120,1651280,1651470,1652938,1652970,1653041,1653471,1653550 +/tomcat/trunk:1636524,1637156,1637176,1637188,1637331,1637684,1637695,1638720-1638725,1639653,1640010,1640083-1640084,1640088,1640275,1640322,1640347,1640361,1640365,1640403,1640410,1640652,1640655-1640658,1640688,1640700-1640883,1640903,1640976,1640978,1641000,1641026,1641038-1641039,1641051-1641052,1641058,1641064,1641300,1641369,1641374,1641380,1641486,1641634,1641656-1641692,1641704,1641707-1641718,1641720-1641722,1641735,1641981,1642233,1642280,1642554,1642564,1642595,1642606,1642668,1642679,1642697,1642699,1642766,1643002,1643045,1643054-1643055,1643066,1643121,1643128,1643206,1643209-1643210,1643216,1643249,1643270,1643283,1643309-1643310,1643323,1643365-1643366,1643370-1643371,1643465,1643474,1643536,1643570,1643634,1643649,1643651,1643654,1643675,1643731,1643733-1643734,1643761,1643766,1643814,1643937,1643963,1644017,1644169,1644201-1644203,1644321,1644323,1644516,1644523,1644529,1644535,1644730,1644768,1644784-1644785,1644790,1644793,1644815,1644884,1644886,1644890,1644892 ,1644910,1644924,1644929-1644930,1644935,1644989,1645011,1645247,1645355,1645357-1645358,1645455,1645465,1645469,1645471,1645473,1645475,1645486-1645488,1645626,1645641,1645685,1645743,1645763,1645951-1645953,1645955,1645993,1646098-1646106,1646178,1646220,1646302,1646304,1646420,1646470-1646471,1646476,1646559,1646717-1646723,1646773,1647026,1647042,1647530,1647655,1648304,1648815,1648907,1650081,1650365,1651116,1651120,1651280,1651470,1652938,1652970,1653041,1653471,1653550,1653574 Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties?rev=1653575r1=1653574r2=1653575view=diff == --- tomcat/tc8.0.x/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties (original) +++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties Wed Jan 21 16:16:40 2015 @@ -46,8 +46,8 @@ farmWarDeployer.undeployEnd=Undeployment farmWarDeployer.undeployLocal=Undeploy local context [{0}] farmWarDeployer.watchDir=Cluster deployment is watching [{0}] for changes. -warWatcher.checking-wars=Checking WARs in {0} -warWatcher.listed-file-does-not-exist={0} was detected in {1} but does not exist. Check directory permissions on {1}? -warWatcher.checking-war=Checking WAR file {0} -warWatcher.check-war.result=WarInfo.check() returned {0} for {1} -warWatcher.cant-list-watchDir=Cannot list files in WatchDir {0}: check to see if it is a directory and has read permissions. +warWatcher.checkingWars=Checking WARs in {0} +warWatcher.listedFileDoesNotExist={0} was detected in {1} but does not exist. Check directory permissions on {1}? +warWatcher.checkingWar=Checking WAR file {0} +warWatcher.checkWarResult=WarInfo.check() returned {0} for {1} +warWatcher.cantListWatchDir=Cannot list files in
[Tomcat Wiki] Update of HowTo by ChristopherSchultz
Dear Wiki user, You have subscribed to a wiki page or wiki category on Tomcat Wiki for change notification. The HowTo page has been changed by ChristopherSchultz: https://wiki.apache.org/tomcat/HowTo?action=diffrev1=141rev2=142 == How to create native launchers for Tomcat == See [[TomcatCreateNativeLaunchers]] + + == How do I rotate catalina.out? == + + Honestly, the first question is why are you rotating catalina.out? Tomcat logs very little to catalina.out so the usual culprit is web applications that stupidly send output to System.out or System.err. If that's the case, what you ought to do is set swallowOutput=true on the application's Context configuration. That will send the output to a file configured (default) by conf/logging.properties. Once you've done that, get the application fixed to use a real logger, or at least use ServletContext.log(). + + If you've decided that you still absolutely positively need to rotate catalina.out, there is something that you have to understand: catalina.out is created by your shell's output redirection, just like when you type ls -l dir_listing.txt. So rotating the file needs to be done carefully. + + You can't just re-name the file or you'll find that Tomcat will continue logging to the file under the new name. You also can't delete catalina.out and re-create it, or you'll never get anything logged to catalina.out after that, unless you restart Tomcat. + + There are really only two ways to properly rotate catalina.out, and they both have downsides. + + === Rotate catalina.out using logrotate (or similar) === + + To use a tool like [[http://linuxcommand.org/man_pages/logrotate8.html|logrotate]], you'll want to use the copytruncate configuration option. This will copy catalina.out to another file (like catalina.out.[datestamp]) and then truncates catalina.out to zero-bytes. There is a major downside to this if catalina.out is seeing a lot of action: some log messages written to the log file during the copy/truncate procedure may be lost. + + === Rotate catalina.out using rotatelogs or chronolog (or similar) === + + To use a tool like Apache httpd's [[http://httpd.apache.org/docs/2.4/programs/rotatelogs.html|rotatelogs]] or [[http://linux.die.net/man/1/cronolog|chronolog]], you'll have to modify Tomcat's catalina.sh (or catalina.bat) script to change the output redirection from a redirect to a pipe. The existing code in catalina.sh looks like this: + + {{{ + eval \$_RUNJAVA\ \$LOGGING_CONFIG\ $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \ + -Djava.endorsed.dirs=\$JAVA_ENDORSED_DIRS\ -classpath \$CLASSPATH\ \ + -Djava.security.manager \ + -Djava.security.policy==\$CATALINA_BASE/conf/catalina.policy\ \ + -Dcatalina.base=\$CATALINA_BASE\ \ + -Dcatalina.home=\$CATALINA_HOME\ \ + -Djava.io.tmpdir=\$CATALINA_TMPDIR\ \ + org.apache.catalina.startup.Bootstrap $@ start \ +$CATALINA_OUT 21 + }}} + + You'll need to change that to something which looks more like this: + + {{{ + eval \$_RUNJAVA\ \$LOGGING_CONFIG\ $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \ + -Djava.endorsed.dirs=\$JAVA_ENDORSED_DIRS\ -classpath \$CLASSPATH\ \ + -Djava.security.manager \ + -Djava.security.policy==\$CATALINA_BASE/conf/catalina.policy\ \ + -Dcatalina.base=\$CATALINA_BASE\ \ + -Dcatalina.home=\$CATALINA_HOME\ \ + -Djava.io.tmpdir=\$CATALINA_TMPDIR\ \ + org.apache.catalina.startup.Bootstrap $@ start \ + | $PATH_TO_CHRONOLOG $CATALINA_BASE/logs/catalina.out.%Y-%m-%d + }}} + + This will be somewhat similar for catalina.bat, but the actual launch command will look different. + + Also note that there are currently two places in catalina.sh (and catalina.bat) where Tomcat is launched, depending upon whether you are using a security manager or not. You should read the whole catalina.sh (or catalina.bat) file to make sure you have handled every case where Tomcat is launched. = Configuration = == How do I set up multiple sites sharing the same war application/war file? == - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57478] Using non-blocking Future instead of blocking Future.get to improve performance?
https://issues.apache.org/bugzilla/show_bug.cgi?id=57478 Mark Thomas ma...@apache.org changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |INVALID --- Comment #1 from Mark Thomas ma...@apache.org --- Bugzilla is not a discussion for design descisions. This belongs on the dev list. For the record, I think the kind of change you are suggesting is wrong and is based on a superficial understanding of the code. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57478] Using non-blocking Future instead of blocking Future.get to improve performance?
https://issues.apache.org/bugzilla/show_bug.cgi?id=57478 --- Comment #2 from Yu Lin yu.lin...@gmail.com --- Thanks for the reply. Bugzilla is not a discussion for design descisions. This belongs on the dev list. I think this is a performance issue, so I posted it here. Or should I send it to dev@tomcat.apache.org For the record, I think the kind of change you are suggesting is wrong and is based on a superficial understanding of the code. Could you elaborate a bit? Don't you think invoking Future.get() immediately after starting the task has the same effect as sequential execution? Is there any better suggestions? -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57478] Using non-blocking Future instead of blocking Future.get to improve performance?
https://issues.apache.org/bugzilla/show_bug.cgi?id=57478 --- Comment #3 from Chuck Caldarale chuck.caldar...@unisys.com --- What part of belongs on the dev list was not clear? -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57478] New: Using non-blocking Future instead of blocking Future.get to improve performance?
https://issues.apache.org/bugzilla/show_bug.cgi?id=57478 Bug ID: 57478 Summary: Using non-blocking Future instead of blocking Future.get to improve performance? Product: Tomcat 8 Version: trunk Hardware: PC OS: Mac OS X 10.1 Status: NEW Severity: enhancement Priority: P2 Component: Catalina Assignee: dev@tomcat.apache.org Reporter: yu.lin...@gmail.com Hi, I'm doing research on asynchronous programming. I found in many places, the code in Tomcat 8 invokes Future.get() immediately after starting a future task. Because Future.get() is a blocking call, the code will block immediately. For example, in startInternal method of ContainerBase class (line 917), you invoke result.get(), where result is a Future, immediately after starting it, so the code blocks immediately. Such code has the same effect as sequential code (or even worse since you need to use other threads). Why not use Guava ListenableFuture or Java8 CompletableFuture and avoid Future.get()? These two new constructs provide callbacks to listen to the Future's result: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/util/concurrent/ListenableFuture.html https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html For example, in ContainerBase class, you may put the code after result.get() (such as lines 924-937) into CompletableFuture.thenRunAsync. Then make startInternal method return this CompletableFuture, and in the callers (such as LifecycleBase.start() method) you can put more continuations into CompletableFuture.thenRunAsync. And you can also invoke Future.get somewhere in the callers, instead of immediately. Do you think such kind of change is correct and can improve the code? -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: Tagging Tomcat 7.0.58
On 21/01/2015 14:07, Violeta Georgieva wrote: Hi, I would like to start preparing Tomcat 7.0.58. If you want to add something to this release please reply here. I'd recommend holding this off until we get to the bottom of the current issue (BZ 57476) with 8.0.17 and figure out of the offending code was back-ported to 7.0.x. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Using non-blocking Future instead of blocking Future.get
Dear developers, I opened a discussion about the use of blocking Future.get() in Tomcat 8 code on Bugzillar: https://issues.apache.org/bugzilla/show_bug.cgi?id=57478 I was suggested to post it in this list. What's your opinion on this issue? Do you have better suggestions to address this issue?
[Bug 57476] Incomplete html pages
https://issues.apache.org/bugzilla/show_bug.cgi?id=57476 --- Comment #4 from Marco ma...@lordzodiac.de --- I make a little test. I add a %out.flush();% at the end of the jsp file and the html content is correct. Without the %out.flush();% the html content is broken. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57476] Incomplete html pages
https://issues.apache.org/bugzilla/show_bug.cgi?id=57476 --- Comment #2 from Marco ma...@lordzodiac.de --- Hello, same problem. After a last jsp:include in a jsp site the html content is not shown. No errors in tomcat log. Default Tomcat with port 8080. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: [OT] Questions About Tomcat Exception Handling
Mark, On 1/21/15 2:34 PM, Mark Thomas wrote: On 21/01/2015 19:14, Felipe Ebert wrote: Hello I'm sorry that this mail is not a development issue itself, it is just a question about Tomcat' exception handling. I was checking some mails at Tomcat dev list and I found two interesting and contrasting responses regarding exception handling: one is from Mark Thomas and another is from Remy Maucherat: Mark Thomas: http://www.mail-archive.com/dev%40tomcat.apache.org/msg45180.html Remy Maucherat: http://www.mail-archive.com/dev%40tomcat.apache.org/msg10280.html The tone might be different but the response is pretty much the same: we don't view the issues reported as bugs. So, I just would like to understand why Tomcat don't care about those generic catches patterns (catch Throwable or catch Exception) as Remmy said in his mail, which contrasts with Mark comments. And also I would really appreciate if anyone could give me some insights in the matter. Again, I don't read the substance of our responses as being that different. Where these patterns are used they are used with good reason. If someone reports one that isn't backed with a good reason we'll fix it. The frustrating thing from our point of view is that most of the reports we receive along these lines are from people who clearly have zero understanding of the Tomcat code and are blindly reporting something some static analysis tool has reported. I'm not going to justify every single time we catch Throwable but a typical pattern is when calling user code that can (and often does) throw some random exception the only viable option when any error in user code needs handling (even if it is to simply ignore it) is to catch Throwable. And lastly, I also would like to hear some comments about how frequent bugs are reported in Tomcat mailing list and not in the Bugzilla. I know the pattern is to use Bugzilla, but I saw some comments from Dr. Justin Erenkrantz (from Apache team) discussing that there are a lot of important bugs fixes only reported in Tomcat mailing list. Take a look at the change log. That will give you an idea of how many things get fixed that aren't in bugzilla. Whether it was originally reported via a mailing list isn't recorded. They will be a mix of mailing list, things committers spot at work and things committers spot while looking at the code for some other reason. I read a post from 8 years ago from some guy who had a collection of bad days until his whole collection of web sites went dead. Anyhow, here's the link: http://www.jroller.com/fate/entry/why_i_hate_tomcat He basically defecates all over the DefaultServlet, and claims it's representative of all of Tomcat's code. Granted, it was way back in Tomcat 5.5 days and his form of invective is, as usual, neither constructive nor completely coherent. But he does have a few points, and I took a few minutes looking at the DefaultServlet in the current trunk, and I think he made some fair points about things that still exist. To wit: 1. org.apache.catalina.servlets.DefaultServlet.Range.validate modifies the value of the end member. That seems ... odd. 2. copyRange(InputStream, ServletOutputStream) returns IOException instead of throwing it. There is one call to copyRange() that always ignores this return value, even if it is a non-null IOException object. 3. executePartialPut(HttpServletRequest, Range, String) has a potential resource leak of bufOldRevStream. I'm not well-versed in the DefaultServlet to know if 1 and 2 are legitimate, but they definitely smell funny. The resource issue in #3 should probably be fixed, and I'm happy to provide a fix for it. The Coverity scan has been great at finding likely bugs and stuff... the list is just enormous and it's tough to get through it all. I suspect #3 above is in that report, buried somewhere in the million potential issues it has found. -chris signature.asc Description: OpenPGP digital signature
Re: Tagging Tomcat 7.0.58
2015-01-21 23:15 GMT+01:00 Mark Thomas ma...@apache.org: I'd recommend holding this off until we get to the bottom of the current issue (BZ 57476) with 8.0.17 and figure out of the offending code was back-ported to 7.0.x. Good idea. I haven't found anything interesting yet, I looked at the error page processing change and I don't see anything else really relevant and suspicious. But I am not convinced by this issue yet, usually when people fail to tell what connector they're using, it's not looking good. Rémy
[Bug 57476] Incomplete html pages
https://issues.apache.org/bugzilla/show_bug.cgi?id=57476 --- Comment #3 from Christopher Schultz ch...@christopherschultz.net --- I have a single JSP running on 8.0.17 with 4 includes, and the page works just fine. Can you give more information about your environment? There's also a thread on the dev list if you want to discuss. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: [OT] Questions About Tomcat Exception Handling
2015-01-21 23:47 GMT+01:00 Christopher Schultz ch...@christopherschultz.net : To wit: 1. org.apache.catalina.servlets.DefaultServlet.Range.validate modifies the value of the end member. That seems ... odd. 2. copyRange(InputStream, ServletOutputStream) returns IOException instead of throwing it. There is one call to copyRange() that always ignores this return value, even if it is a non-null IOException object. 3. executePartialPut(HttpServletRequest, Range, String) has a potential resource leak of bufOldRevStream. I'm not well-versed in the DefaultServlet to know if 1 and 2 are legitimate, but they definitely smell funny. The resource issue in #3 should probably be fixed, and I'm happy to provide a fix for it. Yes, it would be a good idea to be careful with 1 and 2. I don't remember reading that article, but maybe I forgot. Rémy
[Bug 57178] Add CorsFilter configuration option to allow requests with Origin null
https://issues.apache.org/bugzilla/show_bug.cgi?id=57178 --- Comment #6 from Gregor Zurowski gzurow...@apache.org --- That is correct, the only use case would be really just supporting the current behavior. I would also prefer considering this behavior a bug and handle null as a valid origin (for both the default * case and when explicitly configured with null using the cors.allowed.origins parameter). I will follow up with a simplified patch without any new configuration options shortly. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57178] Add CorsFilter configuration option to allow requests with Origin null
https://issues.apache.org/bugzilla/show_bug.cgi?id=57178 Gregor Zurowski gzurow...@apache.org changed: What|Removed |Added Attachment #32185|0 |1 is obsolete|| --- Comment #7 from Gregor Zurowski gzurow...@apache.org --- Created attachment 32389 -- https://issues.apache.org/bugzilla/attachment.cgi?id=32389action=edit Simplified patch for Bug#57178 Simplified patch to handle null as a valid origin. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57476] Incomplete html pages
https://issues.apache.org/bugzilla/show_bug.cgi?id=57476 --- Comment #5 from reibitto reibi...@gmail.com --- I'm seeing similar issues with version 8.0.17 as well. Downgrading back to 8.0.15 made the problems go away for me, so it seems like something introduced between these versions is causing this. So far I've only noticed this problem with JSP files. Static content seems unaffected. Also, I'm seeing this happen through both HTTP and HTTPS. When the response is being truncated, the resulting size is always multiples of 8192 bytes. But this seems to only happen only if the resulting size is anything greater than 16KB. Examples of what I'm seeing: Expected size / Actual response size anything less than 16 KB - the response is fine 17 KB - 8 KB 25 KB - 16 KB 39 KB - 24 KB 44 KB - 32 KB 50 KB - 40 KB So it seems like the last remaining block (or 2?) isn't being written out... assuming the buffer size is 8 KB. And yes, when I call out.flush(), this problem goes away for me too. Here's some information about my environment: Java(TM) SE Runtime Environment (build 1.8.0_25-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode) OS X Yosemite 10.10.1 -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[GitHub] tomcat pull request: #57178: Allow CORS requests with Origin value...
Github user gzurowski closed the pull request at: https://github.com/apache/tomcat/pull/14 --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. --- - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[GitHub] tomcat pull request: #57178: Allow CORS requests with Origin heade...
GitHub user gzurowski opened a pull request: https://github.com/apache/tomcat/pull/16 #57178: Allow CORS requests with Origin header value null See also: https://issues.apache.org/bugzilla/show_bug.cgi?id=57178 Signed-off-by: Gregor Zurowski gre...@zurowski.org You can merge this pull request into a Git repository by running: $ git pull https://github.com/gzurowski/tomcat CorsAllowNullOriginSimplified Alternatively you can review and apply these changes as the patch at: https://github.com/apache/tomcat/pull/16.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #16 commit 017943fe31eb397c729fccc47d1c8659285eabd7 Author: Gregor Zurowski gregor.zurow...@sothebys.com Date: 2015-01-21T21:57:51Z #57178: Allow CORS requests with Origin header value null Signed-off-by: Gregor Zurowski gre...@zurowski.org --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. --- - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: Coverity Scan
Am 22. Januar 2015 08:02:47 MEZ, schrieb Violeta Georgieva violet...@apache.org: Hi, I would like to update the coverity scan report. As the previous one was based on Tomcat 8 (back in the time it was trunk) I think to base the scan again on Tomcat 8. Wdyt? +1 Felix Regards, Violeta - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Coverity Scan
Hi, I would like to update the coverity scan report. As the previous one was based on Tomcat 8 (back in the time it was trunk) I think to base the scan again on Tomcat 8. Wdyt? Regards, Violeta
Re: Tagging Tomcat 7.0.58
2015-01-22 0:15 GMT+02:00 Mark Thomas ma...@apache.org: On 21/01/2015 14:07, Violeta Georgieva wrote: Hi, I would like to start preparing Tomcat 7.0.58. If you want to add something to this release please reply here. I'd recommend holding this off until we get to the bottom of the current issue (BZ 57476) with 8.0.17 and figure out of the offending code was back-ported to 7.0.x. Ok Regards, Violeta Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57476] Incomplete html pages
https://issues.apache.org/bugzilla/show_bug.cgi?id=57476 --- Comment #6 from Leandro iilean...@gmail.com --- I'm facing exactly the same issue. I've noticed that putting % out.flush() % at the end of the JSP file, everything was OK, but It's not good to assume that it's the goal to solve that. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1653475 - in /tomcat/trunk: ./ bin/ res/ webapps/docs/
On 21/01/2015 10:40, ma...@apache.org wrote: Author: markt Date: Wed Jan 21 10:39:59 2015 New Revision: 1653475 URL: http://svn.apache.org/r1653475 Log: Remove use of java.endorsed.dirs since causes errors when starting with Java 9. Users that need to can still use this via setenv.sh Thoughts on back-porting this? java.endorsed.dirs isn't widely used these days so there should be little risk there. On the other hand, there is no rush until Java 9 is formally released (it is possible things might still change). My current thinking is wait until Java 9 is released or we see a demand from the users (which ever happens first). Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1653471 - in /tomcat/trunk: conf/catalina.properties java/org/apache/catalina/startup/Bootstrap.java test/org/apache/catalina/startup/TestBootstrap.java
Author: markt Date: Wed Jan 21 10:08:15 2015 New Revision: 1653471 URL: http://svn.apache.org/r1653471 Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=57455 Add a note that may not appear in a path value and throw an IAE if once does. Modified: tomcat/trunk/conf/catalina.properties tomcat/trunk/java/org/apache/catalina/startup/Bootstrap.java tomcat/trunk/test/org/apache/catalina/startup/TestBootstrap.java Modified: tomcat/trunk/conf/catalina.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/conf/catalina.properties?rev=1653471r1=1653470r2=1653471view=diff == --- tomcat/trunk/conf/catalina.properties (original) +++ tomcat/trunk/conf/catalina.properties Wed Jan 21 10:08:15 2015 @@ -48,6 +48,8 @@ org.apache.jasper.,org.apache.naming.,or # # Note: Values are enclosed in double quotes (...) in case either the # ${catalina.base} path or the ${catalina.home} path contains a comma. +# Because double quotes are used for quoting, the double quote character +# may not appear in a path. common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar # @@ -61,6 +63,11 @@ common.loader=${catalina.base}/lib,${ # foo/*.jar: Add all the JARs of the specified folder as class # repositories # foo/bar.jar: Add bar.jar as a class repository +# +# Note: Values may be enclosed in double quotes (...) in case either the +# ${catalina.base} path or the ${catalina.home} path contains a comma. +# Because double quotes are used for quoting, the double quote character +# may not appear in a path. server.loader= # @@ -75,6 +82,11 @@ server.loader= # foo/bar.jar: Add bar.jar as a class repository # Please note that for single jars, e.g. bar.jar, you need the URL form # starting with file:. +# +# Note: Values may be enclosed in double quotes (...) in case either the +# ${catalina.base} path or the ${catalina.home} path contains a comma. +# Because double quotes are used for quoting, the double quote character +# may not appear in a path. shared.loader= # Default list of JAR files that should not be scanned using the JarScanner Modified: tomcat/trunk/java/org/apache/catalina/startup/Bootstrap.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/Bootstrap.java?rev=1653471r1=1653470r2=1653471view=diff == --- tomcat/trunk/java/org/apache/catalina/startup/Bootstrap.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/Bootstrap.java Wed Jan 21 10:08:15 2015 @@ -568,14 +568,28 @@ public final class Bootstrap { String path = value.substring(matcher.start(), matcher.end()); path = path.trim(); +if (path.length() == 0) { +continue; +} + +char first = path.charAt(0); +char last = path.charAt(path.length() - 1); -if (path.startsWith(\) path.length() 1) { +if (first == '' last == '' path.length() 1) { path = path.substring(1, path.length() - 1); path = path.trim(); -} - -if (path.length() == 0) { -continue; +if (path.length() == 0) { +continue; +} +} else if (path.contains(\)) { +// Unbalanced quotes +// Too early to use standard i18n support. The class path hasn't +// been configured. +throw new IllegalArgumentException( +The double quote [\] character only be used to quote paths. It must + +not appear in a path. This loader path is not valid: [ + value + ]); +} else { +// Not quoted - NO-OP } result.add(path); Modified: tomcat/trunk/test/org/apache/catalina/startup/TestBootstrap.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/startup/TestBootstrap.java?rev=1653471r1=1653470r2=1653471view=diff == --- tomcat/trunk/test/org/apache/catalina/startup/TestBootstrap.java (original) +++ tomcat/trunk/test/org/apache/catalina/startup/TestBootstrap.java Wed Jan 21 10:08:15 2015 @@ -113,6 +113,66 @@ public class TestBootstrap { doTest(aaa,\bbb,\, aaa, bbb,); } +@Test(expected=IllegalArgumentException.class) +public void testUnbalancedQuotes01() { +doTest(\, ignored); +} + +@Test(expected=IllegalArgumentException.class) +public void testUnbalancedQuotes02() { +doTest(\aaa, ignored); +} + +@Test(expected=IllegalArgumentException.class) +public void testUnbalancedQuotes03() { +
svn commit: r1653472 - in /tomcat/tc8.0.x/trunk: ./ conf/catalina.properties java/org/apache/catalina/startup/Bootstrap.java test/org/apache/catalina/startup/TestBootstrap.java webapps/docs/changelog.
Author: markt Date: Wed Jan 21 10:12:27 2015 New Revision: 1653472 URL: http://svn.apache.org/r1653472 Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=57455 Add a note that may not appear in a path value and throw an IAE if once does. Modified: tomcat/tc8.0.x/trunk/ (props changed) tomcat/tc8.0.x/trunk/conf/catalina.properties tomcat/tc8.0.x/trunk/java/org/apache/catalina/startup/Bootstrap.java tomcat/tc8.0.x/trunk/test/org/apache/catalina/startup/TestBootstrap.java tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml Propchange: tomcat/tc8.0.x/trunk/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Jan 21 10:12:27 2015 @@ -1 +1 @@ -/tomcat/trunk:1636524,1637156,1637176,1637188,1637331,1637684,1637695,1638720-1638725,1639653,1640010,1640083-1640084,1640088,1640275,1640322,1640347,1640361,1640365,1640403,1640410,1640652,1640655-1640658,1640688,1640700-1640883,1640903,1640976,1640978,1641000,1641026,1641038-1641039,1641051-1641052,1641058,1641064,1641300,1641369,1641374,1641380,1641486,1641634,1641656-1641692,1641704,1641707-1641718,1641720-1641722,1641735,1641981,1642233,1642280,1642554,1642564,1642595,1642606,1642668,1642679,1642697,1642699,1642766,1643002,1643045,1643054-1643055,1643066,1643121,1643128,1643206,1643209-1643210,1643216,1643249,1643270,1643283,1643309-1643310,1643323,1643365-1643366,1643370-1643371,1643465,1643474,1643536,1643570,1643634,1643649,1643651,1643654,1643675,1643731,1643733-1643734,1643761,1643766,1643814,1643937,1643963,1644017,1644169,1644201-1644203,1644321,1644323,1644516,1644523,1644529,1644535,1644730,1644768,1644784-1644785,1644790,1644793,1644815,1644884,1644886,1644890,1644892 ,1644910,1644924,1644929-1644930,1644935,1644989,1645011,1645247,1645355,1645357-1645358,1645455,1645465,1645469,1645471,1645473,1645475,1645486-1645488,1645626,1645641,1645685,1645743,1645763,1645951-1645953,1645955,1645993,1646098-1646106,1646178,1646220,1646302,1646304,1646420,1646470-1646471,1646476,1646559,1646717-1646723,1646773,1647026,1647042,1647530,1647655,1648304,1648815,1648907,1650081,1650365,1651116,1651120,1651280,1651470,1652938,1652970,1653041 +/tomcat/trunk:1636524,1637156,1637176,1637188,1637331,1637684,1637695,1638720-1638725,1639653,1640010,1640083-1640084,1640088,1640275,1640322,1640347,1640361,1640365,1640403,1640410,1640652,1640655-1640658,1640688,1640700-1640883,1640903,1640976,1640978,1641000,1641026,1641038-1641039,1641051-1641052,1641058,1641064,1641300,1641369,1641374,1641380,1641486,1641634,1641656-1641692,1641704,1641707-1641718,1641720-1641722,1641735,1641981,1642233,1642280,1642554,1642564,1642595,1642606,1642668,1642679,1642697,1642699,1642766,1643002,1643045,1643054-1643055,1643066,1643121,1643128,1643206,1643209-1643210,1643216,1643249,1643270,1643283,1643309-1643310,1643323,1643365-1643366,1643370-1643371,1643465,1643474,1643536,1643570,1643634,1643649,1643651,1643654,1643675,1643731,1643733-1643734,1643761,1643766,1643814,1643937,1643963,1644017,1644169,1644201-1644203,1644321,1644323,1644516,1644523,1644529,1644535,1644730,1644768,1644784-1644785,1644790,1644793,1644815,1644884,1644886,1644890,1644892 ,1644910,1644924,1644929-1644930,1644935,1644989,1645011,1645247,1645355,1645357-1645358,1645455,1645465,1645469,1645471,1645473,1645475,1645486-1645488,1645626,1645641,1645685,1645743,1645763,1645951-1645953,1645955,1645993,1646098-1646106,1646178,1646220,1646302,1646304,1646420,1646470-1646471,1646476,1646559,1646717-1646723,1646773,1647026,1647042,1647530,1647655,1648304,1648815,1648907,1650081,1650365,1651116,1651120,1651280,1651470,1652938,1652970,1653041,1653471 Modified: tomcat/tc8.0.x/trunk/conf/catalina.properties URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/conf/catalina.properties?rev=1653472r1=1653471r2=1653472view=diff == --- tomcat/tc8.0.x/trunk/conf/catalina.properties (original) +++ tomcat/tc8.0.x/trunk/conf/catalina.properties Wed Jan 21 10:12:27 2015 @@ -48,6 +48,8 @@ org.apache.jasper.,org.apache.naming.,or # # Note: Values are enclosed in double quotes (...) in case either the # ${catalina.base} path or the ${catalina.home} path contains a comma. +# Because double quotes are used for quoting, the double quote character +# may not appear in a path. common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar # @@ -61,6 +63,11 @@ common.loader=${catalina.base}/lib,${ # foo/*.jar: Add all the JARs of the specified folder as class # repositories # foo/bar.jar: Add bar.jar as a class repository +# +# Note: Values may be enclosed in double quotes (...) in case either the +# ${catalina.base} path or the ${catalina.home} path contains a comma. +# Because double quotes are used for quoting, the double quote character +# may not
[Bug 57455] Bootstrap doesn't handle paths with one quote
https://issues.apache.org/bugzilla/show_bug.cgi?id=57455 Mark Thomas ma...@apache.org changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #4 from Mark Thomas ma...@apache.org --- Fixed in trunk and 8.0.x and will be included in 8.0.18 onwards. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1653475 - in /tomcat/trunk: ./ bin/ res/ webapps/docs/
Author: markt Date: Wed Jan 21 10:39:59 2015 New Revision: 1653475 URL: http://svn.apache.org/r1653475 Log: Remove use of java.endorsed.dirs since causes errors when starting with Java 9. Users that need to can still use this via setenv.sh Modified: tomcat/trunk/RELEASE-NOTES tomcat/trunk/RUNNING.txt tomcat/trunk/bin/catalina.bat tomcat/trunk/bin/catalina.sh tomcat/trunk/bin/daemon.sh tomcat/trunk/bin/service.bat tomcat/trunk/bin/setclasspath.bat tomcat/trunk/bin/setclasspath.sh tomcat/trunk/bin/tool-wrapper.bat tomcat/trunk/bin/tool-wrapper.sh tomcat/trunk/res/tomcat.nsi tomcat/trunk/webapps/docs/class-loader-howto.xml Modified: tomcat/trunk/RELEASE-NOTES URL: http://svn.apache.org/viewvc/tomcat/trunk/RELEASE-NOTES?rev=1653475r1=1653474r2=1653475view=diff == --- tomcat/trunk/RELEASE-NOTES (original) +++ tomcat/trunk/RELEASE-NOTES Wed Jan 21 10:39:59 2015 @@ -92,9 +92,9 @@ You can make additional APIs available t putting unpacked classes into a classes directory (not created by default), or by placing them in JAR files in the lib directory. -To override the XML parser implementation or interfaces, use the endorsed -mechanism of the JVM. The default configuration defines JARs located in -endorsed as endorsed. +To override the XML parser implementation or interfaces, use the appropriate +feature for your JVM. For Java = 8 use the endorsed standards override +feature. For Java 9+ use the upgradeable modules feature. Modified: tomcat/trunk/RUNNING.txt URL: http://svn.apache.org/viewvc/tomcat/trunk/RUNNING.txt?rev=1653475r1=1653474r2=1653475view=diff == --- tomcat/trunk/RUNNING.txt (original) +++ tomcat/trunk/RUNNING.txt Wed Jan 21 10:39:59 2015 @@ -274,12 +274,6 @@ In CATALINA_HOME: * lib - Libraries and classes, as explained below - * endorsed - Libraries that override standard Endorsed Standards - libraries provided by JRE. See Classloading documentation - in the User Guide for details. - - By default this endorsed directory is absent. - In the default configuration the JAR libraries and classes both in CATALINA_BASE/lib and in CATALINA_HOME/lib will be added to the common classpath, but the ones in CATALINA_BASE will be added first and thus will Modified: tomcat/trunk/bin/catalina.bat URL: http://svn.apache.org/viewvc/tomcat/trunk/bin/catalina.bat?rev=1653475r1=1653474r2=1653475view=diff == --- tomcat/trunk/bin/catalina.bat (original) +++ tomcat/trunk/bin/catalina.bat Wed Jan 21 10:39:59 2015 @@ -53,12 +53,6 @@ rem should be used by rem the version command etc. rem Most options should go into CATALINA_OPTS. rem -rem JAVA_ENDORSED_DIRS (Optional) Lists of of semi-colon separated directories -rem containing some jars in order to allow replacement of APIs -rem created outside of the JCP (i.e. DOM and SAX from W3C). -rem It can also be used to update the XML parser implementation. -rem Defaults to $CATALINA_HOME/endorsed. -rem rem JPDA_TRANSPORT (Optional) JPDA transport used when the jpda start rem command is executed. The default is dt_socket. rem @@ -316,17 +310,17 @@ goto setArgs rem Execute Java with the applicable properties if not %JPDA% == goto doJpda if not %SECURITY_POLICY_FILE% == goto doSecurity -%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs=%JAVA_ENDORSED_DIRS% -classpath %CLASSPATH% -Dcatalina.base=%CATALINA_BASE% -Dcatalina.home=%CATALINA_HOME% -Djava.io.tmpdir=%CATALINA_TMPDIR% %MAINCLASS% %CMD_LINE_ARGS% %ACTION% +%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -classpath %CLASSPATH% -Dcatalina.base=%CATALINA_BASE% -Dcatalina.home=%CATALINA_HOME% -Djava.io.tmpdir=%CATALINA_TMPDIR% %MAINCLASS% %CMD_LINE_ARGS% %ACTION% goto end :doSecurity -%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs=%JAVA_ENDORSED_DIRS% -classpath %CLASSPATH% -Djava.security.manager -Djava.security.policy==%SECURITY_POLICY_FILE% -Dcatalina.base=%CATALINA_BASE% -Dcatalina.home=%CATALINA_HOME% -Djava.io.tmpdir=%CATALINA_TMPDIR% %MAINCLASS% %CMD_LINE_ARGS% %ACTION% +%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -classpath %CLASSPATH% -Djava.security.manager -Djava.security.policy==%SECURITY_POLICY_FILE% -Dcatalina.base=%CATALINA_BASE% -Dcatalina.home=%CATALINA_HOME% -Djava.io.tmpdir=%CATALINA_TMPDIR% %MAINCLASS% %CMD_LINE_ARGS% %ACTION% goto end :doJpda if not %SECURITY_POLICY_FILE% == goto doSecurityJpda -%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS%
[Bug 57472] New: performance (classloader?) problems with signed jars in WEB-INF/lib
https://issues.apache.org/bugzilla/show_bug.cgi?id=57472 Bug ID: 57472 Summary: performance (classloader?) problems with signed jars in WEB-INF/lib Product: Tomcat 8 Version: 8.0.17 Hardware: PC OS: Linux Status: NEW Severity: normal Priority: P2 Component: Catalina Assignee: dev@tomcat.apache.org Reporter: ole.schulz-hildebra...@ppimedia.de cf. http://mail-archives.apache.org/mod_mbox/tomcat-users/201501.mbox/%3CADA7A9443C47CC4E9C065E9C84C6891D6B3994A3B7%40ex01.ppinet.de%3E After moving one of our web applications from Tomcat 7 to Tomcat 8 (8.0.17, Java 1.8.0_25, CentOS 6) the time for deploying and initializing the webapp increased by a factor of 30 (6s vs. 180s). Analyzing the problem we found out that it had to do with a signed jar in the WEB-INF/lib of the webapp. It is a 8mb self-signed jar of the jython-library from which many classes are used in the initializing process of our webapp. When using a non-signed version of the jar the time for deploying and initializing is the same in Tomcat 8 as in Tomcat 7. Profiling and debugging the webapp it turned out that loading a class (and its depending classes) from the signed jar took extremely long with Tomcat 8 in comparison to Tomcat 7. The following is just a hypothesis of a Tomcat source newbie: Could it be that (at least some parts of) the verification process for the whole signed jar is done again and again each time a class from a signed jar is loaded? Looking at org.apache.catalina.webresources.JarResource:47 (http://svn.apache.org/repos/asf/tomcat/tc8.0.x/trunk/java/org/apache/catalina/webresources/JarResource.java) a new instance of java.util.jar.JarFile is created each time a single class-file is read from the jar. Thus the following call of jarFile.getInputStream(jarEntry) in JarResource:50 causes a call of JarFile.initializeVerifier() (cf. JarFile:442ff in http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/jar/JarFile.java). JarFile.initializeVerifier() seems to do some precalculations (hashing?) for all files listed in the manifest of the signed jar (cf. JarFile:365ff). Thus each time a single class is loaded from a signed jar precalculations for all class files in the signed jar seem to be done. Could this be the reason for our performance problems (especially in connection with a 8mb signed jar ;-))? If neccessary I can provide the mentioned 8mb self-signed jar of the jython-library and/or create a simple sample web application that demonstrates the issue. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1653531 - in /tomcat/trunk/java/org/apache/tomcat/util/collections: ManagedConcurrentWeakHashMap.java SynchronizedQueue.java SynchronizedStack.java
Author: markt Date: Wed Jan 21 13:08:06 2015 New Revision: 1653531 URL: http://svn.apache.org/r1653531 Log: Java8 Javadoc fixes Modified: tomcat/trunk/java/org/apache/tomcat/util/collections/ManagedConcurrentWeakHashMap.java tomcat/trunk/java/org/apache/tomcat/util/collections/SynchronizedQueue.java tomcat/trunk/java/org/apache/tomcat/util/collections/SynchronizedStack.java Modified: tomcat/trunk/java/org/apache/tomcat/util/collections/ManagedConcurrentWeakHashMap.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/collections/ManagedConcurrentWeakHashMap.java?rev=1653531r1=1653530r2=1653531view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/collections/ManagedConcurrentWeakHashMap.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/collections/ManagedConcurrentWeakHashMap.java Wed Jan 21 13:08:06 2015 @@ -33,6 +33,9 @@ import java.util.concurrent.ConcurrentMa * codeWeakHashMap/code this class does not handle dead keys during common * access operations, but expects you to call its {@link #maintain()} method * periodically. Both keys and values are expected to be not-codenull/code. + * + * @param K The type of keys used with the Map instance + * @param V The type of values used with the Map instance */ public class ManagedConcurrentWeakHashMapK, V extends AbstractMapK, V implements ConcurrentMapK, V { Modified: tomcat/trunk/java/org/apache/tomcat/util/collections/SynchronizedQueue.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/collections/SynchronizedQueue.java?rev=1653531r1=1653530r2=1653531view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/collections/SynchronizedQueue.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/collections/SynchronizedQueue.java Wed Jan 21 13:08:06 2015 @@ -22,6 +22,8 @@ package org.apache.tomcat.util.collectio * create an unbounded queue with no requirement to shrink the queue. The aim is * to provide the bare minimum of required functionality as quickly as possible * with minimum garbage. + * + * @param T The type of object managed by this queue */ public class SynchronizedQueueT { Modified: tomcat/trunk/java/org/apache/tomcat/util/collections/SynchronizedStack.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/collections/SynchronizedStack.java?rev=1653531r1=1653530r2=1653531view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/collections/SynchronizedStack.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/collections/SynchronizedStack.java Wed Jan 21 13:08:06 2015 @@ -22,6 +22,8 @@ package org.apache.tomcat.util.collectio * create a pool of re-usable objects with no requirement to shrink the pool. * The aim is to provide the bare minimum of required functionality as quickly * as possible with minimum garbage. + * + * @param T The type of object managed by this stack */ public class SynchronizedStackT { - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57420] Wrong class names generated since URL_ENCODER in DirContextURLConnection is not thread safe
https://issues.apache.org/bugzilla/show_bug.cgi?id=57420 --- Comment #11 from Violeta Georgieva violet...@apache.org --- (In reply to Felix Schumacher from comment #9) Created attachment 32382 [details] Make UEncoder a local variable and introduce a default safe charset enum This patch uses a local variable for the UEncoder in DirContextURLConnection and enables the safeChars in UEncoder to be immutable. That way all Response and DirContextURLConnection instances can share one safeChars BitSet while having their own UEncoder instance which remains unsafe for multithreaded usage. +1 -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57473] New: WarWatcher does not throw any warning if permissions are broken
https://issues.apache.org/bugzilla/show_bug.cgi?id=57473 Bug ID: 57473 Summary: WarWatcher does not throw any warning if permissions are broken Product: Tomcat 8 Version: trunk Hardware: All OS: All Status: NEW Severity: enhancement Priority: P2 Component: Cluster Assignee: dev@tomcat.apache.org Reporter: theo...@mley.fr Created attachment 32386 -- https://issues.apache.org/bugzilla/attachment.cgi?id=32386action=edit WarWatcher patch for improved checks and logging This is a follow-up to the FarmWarDeployer not checking watchDir thread on tomcat-users. In the FarmWarDelpoyer and WarWatcher components, if the permissions of the watchDir are broken (i.e 644 instead of 755), Tomcat does not inform the user that something is wrong, with no log whatsoever after putting a war file in the watchDir. A patch by Christopher Schultz is attached that adds some checking and logging to WarWatcher to allow an easier debugging. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57473] WarWatcher does not throw any warning if permissions are broken
https://issues.apache.org/bugzilla/show_bug.cgi?id=57473 Théo Chamley theo...@mley.fr changed: What|Removed |Added CC||theo...@mley.fr -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1653535 - /tomcat/trunk/test/org/apache/el/parser/TestELParser.java
Author: markt Date: Wed Jan 21 13:31:30 2015 New Revision: 1653535 URL: http://svn.apache.org/r1653535 Log: Add a test case I have been using to explore possible performance gains in the EL parser. This is in preparation for the fix for BZ 57441. Modified: tomcat/trunk/test/org/apache/el/parser/TestELParser.java Modified: tomcat/trunk/test/org/apache/el/parser/TestELParser.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/parser/TestELParser.java?rev=1653535r1=1653534r2=1653535view=diff == --- tomcat/trunk/test/org/apache/el/parser/TestELParser.java (original) +++ tomcat/trunk/test/org/apache/el/parser/TestELParser.java Wed Jan 21 13:31:30 2015 @@ -17,6 +17,8 @@ package org.apache.el.parser; +import java.io.StringReader; + import javax.el.ELContext; import javax.el.ELException; import javax.el.ExpressionFactory; @@ -25,9 +27,11 @@ import javax.el.ValueExpression; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import org.junit.Ignore; import org.junit.Test; import org.apache.jasper.el.ELContextImpl; +import org.apache.tomcat.util.collections.SynchronizedStack; public class TestELParser { @@ -229,4 +233,61 @@ public class TestELParser { String result = (String) ve.getValue(context); assertEquals(expected, result); } + +/* + * Test to explore if re-using Parser instances is faster. + * + * Tests on my laptop show: + * - overhead by introducing the stack is in the noise for parsing even the + * simplest expression + * - efficiency from re-using the ELParser is measurable for even a single + * reuse of the parser + * - with large numbers of parses (~10k) performance for a trivial parse is + * three times faster + * - around the 100 iterations mark GC overhead adds significant noise to + * the results - for consistent results you either need fewer parses to + * avoid triggering GC or more parses so the GC effects are evenly + * distributed between the runs + * + * Note that the test is single threaded. + */ +@Ignore +@Test +public void testParserPerformance() throws ParseException { +final int runs = 20; +final int parseIterations = 1; + + +for (int j = 0; j runs; j ++) { +long start = System.nanoTime(); +SynchronizedStackELParser stack = new SynchronizedStack(); + +for (int i = 0; i parseIterations; i ++) { +ELParser parser = stack.pop(); +if (parser == null) { +parser = new ELParser(new StringReader(${'foo'})); +} else { +parser.ReInit(new StringReader(${'foo'})); +} +parser.CompositeExpression(); +stack.push(parser); +} +long end = System.nanoTime(); + +System.out.println(parseIterations + + iterations using ELParser.ReInit(...) took + (end - start) + ns); +} + +for (int j = 0; j runs; j ++) { +long start = System.nanoTime(); +for (int i = 0; i parseIterations; i ++) { +ELParser parser = new ELParser(new StringReader(${'foo'})); +parser.CompositeExpression(); +} +long end = System.nanoTime(); + +System.out.println(parseIterations + + iterations usingnew ELParser(...) took + (end - start) + ns); +} +} } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57420] Wrong class names generated since URL_ENCODER in DirContextURLConnection is not thread safe
https://issues.apache.org/bugzilla/show_bug.cgi?id=57420 --- Comment #10 from Violeta Georgieva violet...@apache.org --- (In reply to Konstantin Kolinko from comment #7) (In reply to Violeta Georgieva from comment #6) (In reply to Konstantin Kolinko from comment #4) UEncoder is used in list(). While it is possible to call list() multiple times, I think that in practice it is called only once. list() is called many times by org.apache.catalina.startup.ContextConfig.processAnnotationsJndi(URL, WebXml, boolean) As we add a save char to UEncoder I do not think that it will be OK to do this every time when list() is called. Wdyt? As far as I see, it opens a new DirContextURLConnection each time. While the method is called many times, a connection is not reused. Thus a class-level field provides no benefit. You are right - +1 -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1653550 - in /tomcat/trunk/java/org/apache/catalina/ha/deploy: LocalStrings.properties WarWatcher.java
Author: schultz Date: Wed Jan 21 15:07:12 2015 New Revision: 1653550 URL: http://svn.apache.org/r1653550 Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=57473 Add more logging to WarWatcher, specifically checking for odd states like non-existent files that were just listed by the filesystem, which suggests a permissions problem. Moved log strings into LocalStrings.properties Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties?rev=1653550r1=1653549r2=1653550view=diff == --- tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties Wed Jan 21 15:07:12 2015 @@ -45,3 +45,9 @@ farmWarDeployer.stopped=Cluster FarmWarD farmWarDeployer.undeployEnd=Undeployment from [{0}] finished. farmWarDeployer.undeployLocal=Undeploy local context [{0}] farmWarDeployer.watchDir=Cluster deployment is watching [{0}] for changes. + +warWatcher.checking-wars=Checking WARs in {0} +warWatcher.listed-file-does-not-exist={0} was detected in {1} but does not exist. Check directory permissions on {1}? +warWatcher.checking-war=Checking WAR file {0} +warWatcher.check-war.result=WarInfo.check() returned {0} for {1} +warWatcher.cant-list-watchDir=Cannot list files in WatchDir {0}: check to see if it is a directory and has read permissions. Modified: tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java?rev=1653550r1=1653549r2=1653550view=diff == --- tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java (original) +++ tomcat/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java Wed Jan 21 15:07:12 2015 @@ -23,6 +23,7 @@ import java.util.Map; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; +import org.apache.tomcat.util.res.StringManager; /** * The bWarWatcher /b watches the deployDir for changes made to the @@ -36,6 +37,8 @@ public class WarWatcher { /*--Static Variables*/ private static final Log log = LogFactory.getLog(WarWatcher.class); +private static final StringManager sm = +StringManager.getManager(Constants.Package); /*--Instance Variables--*/ /** @@ -67,20 +70,31 @@ public class WarWatcher { */ public void check() { if (log.isDebugEnabled()) -log.debug(check cluster wars at + watchDir); +log.debug(sm.getString(warWatcher.checking-wars, watchDir)); File[] list = watchDir.listFiles(new WarFilter()); -if (list == null) +if (list == null) { +log.warn(sm.getString(warWatcher.cant-list-watchDir, + watchDir)); + list = new File[0]; +} //first make sure all the files are listed in our current status for (int i = 0; i list.length; i++) { +if(!list[i].exists()) +log.warn(sm.getString(warWatcher.listed-file-does-not-exist, + list[i], watchDir)); + addWarInfo(list[i]); } -//check all the status codes and update the FarmDeployer +// Check all the status codes and update the FarmDeployer for (IteratorMap.EntryString,WarInfo i = currentStatus.entrySet().iterator(); i.hasNext();) { Map.EntryString,WarInfo entry = i.next(); WarInfo info = entry.getValue(); +if(log.isTraceEnabled()) +log.trace(sm.getString(warWatcher.checking-war, + info.getWar())); int check = info.check(); if (check == 1) { listener.fileModified(info.getWar()); @@ -89,6 +103,10 @@ public class WarWatcher { //no need to keep in memory i.remove(); } +if(log.isTraceEnabled()) +log.trace(sm.getString(warWatcher.check-war.result, + Integer.valueOf(check), + info.getWar())); } } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1653552 - in /tomcat/tc8.0.x/trunk: ./ java/org/apache/catalina/ha/deploy/LocalStrings.properties java/org/apache/catalina/ha/deploy/WarWatcher.java webapps/docs/changelog.xml
Author: schultz Date: Wed Jan 21 15:13:18 2015 New Revision: 1653552 URL: http://svn.apache.org/r1653552 Log: Back-port r1653550 to fix https://issues.apache.org/bugzilla/show_bug.cgi?id=57473 Add more logging to WarWatcher, specifically checking for odd states like non-existent files that were just listed by the filesystem, which suggests a permissions problem. Moved log strings into LocalStrings.properties Modified: tomcat/tc8.0.x/trunk/ (props changed) tomcat/tc8.0.x/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties tomcat/tc8.0.x/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml Propchange: tomcat/tc8.0.x/trunk/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Jan 21 15:13:18 2015 @@ -1 +1 @@ -/tomcat/trunk:1636524,1637156,1637176,1637188,1637331,1637684,1637695,1638720-1638725,1639653,1640010,1640083-1640084,1640088,1640275,1640322,1640347,1640361,1640365,1640403,1640410,1640652,1640655-1640658,1640688,1640700-1640883,1640903,1640976,1640978,1641000,1641026,1641038-1641039,1641051-1641052,1641058,1641064,1641300,1641369,1641374,1641380,1641486,1641634,1641656-1641692,1641704,1641707-1641718,1641720-1641722,1641735,1641981,1642233,1642280,1642554,1642564,1642595,1642606,1642668,1642679,1642697,1642699,1642766,1643002,1643045,1643054-1643055,1643066,1643121,1643128,1643206,1643209-1643210,1643216,1643249,1643270,1643283,1643309-1643310,1643323,1643365-1643366,1643370-1643371,1643465,1643474,1643536,1643570,1643634,1643649,1643651,1643654,1643675,1643731,1643733-1643734,1643761,1643766,1643814,1643937,1643963,1644017,1644169,1644201-1644203,1644321,1644323,1644516,1644523,1644529,1644535,1644730,1644768,1644784-1644785,1644790,1644793,1644815,1644884,1644886,1644890,1644892 ,1644910,1644924,1644929-1644930,1644935,1644989,1645011,1645247,1645355,1645357-1645358,1645455,1645465,1645469,1645471,1645473,1645475,1645486-1645488,1645626,1645641,1645685,1645743,1645763,1645951-1645953,1645955,1645993,1646098-1646106,1646178,1646220,1646302,1646304,1646420,1646470-1646471,1646476,1646559,1646717-1646723,1646773,1647026,1647042,1647530,1647655,1648304,1648815,1648907,1650081,1650365,1651116,1651120,1651280,1651470,1652938,1652970,1653041,1653471 +/tomcat/trunk:1636524,1637156,1637176,1637188,1637331,1637684,1637695,1638720-1638725,1639653,1640010,1640083-1640084,1640088,1640275,1640322,1640347,1640361,1640365,1640403,1640410,1640652,1640655-1640658,1640688,1640700-1640883,1640903,1640976,1640978,1641000,1641026,1641038-1641039,1641051-1641052,1641058,1641064,1641300,1641369,1641374,1641380,1641486,1641634,1641656-1641692,1641704,1641707-1641718,1641720-1641722,1641735,1641981,1642233,1642280,1642554,1642564,1642595,1642606,1642668,1642679,1642697,1642699,1642766,1643002,1643045,1643054-1643055,1643066,1643121,1643128,1643206,1643209-1643210,1643216,1643249,1643270,1643283,1643309-1643310,1643323,1643365-1643366,1643370-1643371,1643465,1643474,1643536,1643570,1643634,1643649,1643651,1643654,1643675,1643731,1643733-1643734,1643761,1643766,1643814,1643937,1643963,1644017,1644169,1644201-1644203,1644321,1644323,1644516,1644523,1644529,1644535,1644730,1644768,1644784-1644785,1644790,1644793,1644815,1644884,1644886,1644890,1644892 ,1644910,1644924,1644929-1644930,1644935,1644989,1645011,1645247,1645355,1645357-1645358,1645455,1645465,1645469,1645471,1645473,1645475,1645486-1645488,1645626,1645641,1645685,1645743,1645763,1645951-1645953,1645955,1645993,1646098-1646106,1646178,1646220,1646302,1646304,1646420,1646470-1646471,1646476,1646559,1646717-1646723,1646773,1647026,1647042,1647530,1647655,1648304,1648815,1648907,1650081,1650365,1651116,1651120,1651280,1651470,1652938,1652970,1653041,1653471,1653550 Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties?rev=1653552r1=1653551r2=1653552view=diff == --- tomcat/tc8.0.x/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties (original) +++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties Wed Jan 21 15:13:18 2015 @@ -45,3 +45,9 @@ farmWarDeployer.stopped=Cluster FarmWarD farmWarDeployer.undeployEnd=Undeployment from [{0}] finished. farmWarDeployer.undeployLocal=Undeploy local context [{0}] farmWarDeployer.watchDir=Cluster deployment is watching [{0}] for changes. + +warWatcher.checking-wars=Checking WARs in {0} +warWatcher.listed-file-does-not-exist={0} was detected in {1} but does not exist. Check directory permissions on {1}? +warWatcher.checking-war=Checking WAR file {0} +warWatcher.check-war.result=WarInfo.check() returned {0} for {1} +warWatcher.cant-list-watchDir=Cannot list files in WatchDir {0}: check to see if
svn commit: r1653546 - /tomcat/trunk/java/org/apache/el/lang/ExpressionBuilder.java
Author: markt Date: Wed Jan 21 14:49:25 2015 New Revision: 1653546 URL: http://svn.apache.org/r1653546 Log: Add an ELParser cache to the ExpressionBuilder. Re-using ELParser instances is measureably more efficient. Modified: tomcat/trunk/java/org/apache/el/lang/ExpressionBuilder.java Modified: tomcat/trunk/java/org/apache/el/lang/ExpressionBuilder.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/lang/ExpressionBuilder.java?rev=1653546r1=1653545r2=1653546view=diff == --- tomcat/trunk/java/org/apache/el/lang/ExpressionBuilder.java (original) +++ tomcat/trunk/java/org/apache/el/lang/ExpressionBuilder.java Wed Jan 21 14:49:25 2015 @@ -14,7 +14,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.el.lang; import java.io.StringReader; @@ -49,6 +48,8 @@ import org.apache.el.util.MessageFactory */ public final class ExpressionBuilder implements NodeVisitor { +private static final SynchronizedStackELParser parserCache = new SynchronizedStack(); + private static final int CACHE_SIZE; private static final String CACHE_SIZE_PROP = org.apache.el.ExpressionBuilder.CACHE_SIZE; @@ -70,7 +71,7 @@ public final class ExpressionBuilder imp } } -private static final ConcurrentCacheString, Node cache = +private static final ConcurrentCacheString, Node expressionCache = new ConcurrentCache(CACHE_SIZE); private FunctionMapper fnMapper; @@ -105,11 +106,16 @@ public final class ExpressionBuilder imp throw new ELException(MessageFactory.get(error.null)); } -Node n = cache.get(expr); +Node n = expressionCache.get(expr); if (n == null) { +ELParser parser = parserCache.pop(); try { -n = (new ELParser(new StringReader(expr))) -.CompositeExpression(); +if (parser == null) { +parser = new ELParser(new StringReader(expr)); +} else { +parser.ReInit(new StringReader(expr)); +} +n = parser.CompositeExpression(); // validate composite expression int numChildren = n.jjtGetNumChildren(); @@ -137,10 +143,14 @@ public final class ExpressionBuilder imp || n instanceof AstDynamicExpression) { n = n.jjtGetChild(0); } -cache.put(expr, n); +expressionCache.put(expr, n); } catch (Exception e) { throw new ELException( MessageFactory.get(error.parseFail, expr), e); +} finally { +if (parser != null) { +parserCache.push(parser); +} } } return n; @@ -252,4 +262,76 @@ public final class ExpressionBuilder imp + expression); } } + +/* + * Copied from org.apache.tomcat.util.collections.SynchronizedStack since + * we don't want the EL implementation to depend on the JAR where that + * class resides. + */ +private static class SynchronizedStackT { + +public static final int DEFAULT_SIZE = 128; +private static final int DEFAULT_LIMIT = -1; + +private int size; +private final int limit; + +/* + * Points to the next available object in the stack + */ +private int index = -1; + +private Object[] stack; + + +public SynchronizedStack() { +this(DEFAULT_SIZE, DEFAULT_LIMIT); +} + +public SynchronizedStack(int size, int limit) { +this.size = size; +this.limit = limit; +stack = new Object[size]; +} + + +public synchronized boolean push(T obj) { +index++; +if (index == size) { +if (limit == -1 || size limit) { +expand(); +} else { +index--; +return false; +} +} +stack[index] = obj; +return true; +} + +@SuppressWarnings(unchecked) +public synchronized T pop() { +if (index == -1) { +return null; +} +T result = (T) stack[index]; +stack[index--] = null; +return result; +} + +private void expand() { +int newSize = size * 2; +if (limit != -1 newSize limit) { +newSize = limit; +} +Object[] newStack = new Object[newSize]; +System.arraycopy(stack, 0, newStack, 0, size); +// This is the only point where garbage is created by throwing away the +
Tagging Tomcat 7.0.58
Hi, I would like to start preparing Tomcat 7.0.58. If you want to add something to this release please reply here. Thanks, Violeta
Re: svn commit: r1653367 - /tomcat/trunk/webapps/docs/changelog.xml
2015-01-20 23:52 GMT+03:00 fschumac...@apache.org: Author: fschumacher Date: Tue Jan 20 20:52:18 2015 New Revision: 1653367 URL: http://svn.apache.org/r1653367 Log: Fix formatting: - ':' after bug/ - max width 80 chars Modified: tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1653367r1=1653366r2=1653367view=diff == --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Tue Jan 20 20:52:18 2015 @@ -63,10 +63,12 @@ subsection name=Catalina changelog fix -bug57425/bug Don't add attributes with null value or name to the replicated context. (fschumacher) +bug57425/bug: Don't add attributes with null value or name to the +replicated context. (fschumacher) /fix add -bug57431/bug Enable usage of custom class for context creation when using embedded tomcat. (fschumacher) +bug57431/bug: Enable usage of custom class for context creation +when using embedded tomcat. (fschumacher) /add /changelog /subsection Hi! The usual practice is that until the first release from trunk its changelog file lists only changes that have not been backported to stable versions. The BZ 57425 and 57431 fixes have been backported to Tomcat 8 and thus do not belong here. Best regards, Konstantin Kolinko - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57108] Implement multiple sslcontext SNI (server name indication) dispatch
https://issues.apache.org/bugzilla/show_bug.cgi?id=57108 Unlogic unlo...@unlogic.se changed: What|Removed |Added CC||unlo...@unlogic.se -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1653367 - /tomcat/trunk/webapps/docs/changelog.xml
Am 21. Januar 2015 14:34:41 MEZ, schrieb Konstantin Kolinko knst.koli...@gmail.com: 2015-01-20 23:52 GMT+03:00 fschumac...@apache.org: Author: fschumacher Date: Tue Jan 20 20:52:18 2015 New Revision: 1653367 URL: http://svn.apache.org/r1653367 Log: Fix formatting: - ':' after bug/ - max width 80 chars Modified: tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1653367r1=1653366r2=1653367view=diff == --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Tue Jan 20 20:52:18 2015 @@ -63,10 +63,12 @@ subsection name=Catalina changelog fix -bug57425/bug Don't add attributes with null value or name to the replicated context. (fschumacher) +bug57425/bug: Don't add attributes with null value or name to the +replicated context. (fschumacher) /fix add -bug57431/bug Enable usage of custom class for context creation when using embedded tomcat. (fschumacher) +bug57431/bug: Enable usage of custom class for context creation +when using embedded tomcat. (fschumacher) /add /changelog /subsection Hi! The usual practice is that until the first release from trunk its changelog file lists only changes that have not been backported to stable versions. The BZ 57425 and 57431 fixes have been backported to Tomcat 8 and thus do not belong here. OK. I will remove the entries. Thanks for the info Felix Best regards, Konstantin Kolinko - 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
svn commit: r1653558 - /tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml
Author: schultz Date: Wed Jan 21 15:31:15 2015 New Revision: 1653558 URL: http://svn.apache.org/r1653558 Log: Moved bugfix to correct subsection. Modified: tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml Modified: tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml?rev=1653558r1=1653557r2=1653558view=diff == --- tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml Wed Jan 21 15:31:15 2015 @@ -74,10 +74,6 @@ in a manner that makes it look like the codeJAVA_HOME/code environment variable. (markt) /fix - fix -bug57473/bug: Add sanity check to FarmWebDeployer's WarWatcher to -detect suspected incorrect permissions on the watch directory. (schultz) - /fix /changelog /subsection subsection name=Cluster @@ -85,6 +81,10 @@ fix Fix mbean descriptor of codeClusterSingleSignOn/code. (kfujino) /fix + fix +bug57473/bug: Add sanity check to FarmWebDeployer's WarWatcher to +detect suspected incorrect permissions on the watch directory. (schultz) + /fix /changelog /subsection subsection name=Tribes - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1653559 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/catalina/ha/deploy/LocalStrings.properties java/org/apache/catalina/ha/deploy/WarWatcher.java webapps/docs/changelog.xml
Author: schultz Date: Wed Jan 21 15:32:08 2015 New Revision: 1653559 URL: http://svn.apache.org/r1653559 Log: Back-port r1653550 to fix https://issues.apache.org/bugzilla/show_bug.cgi?id=57473 Add more logging to WarWatcher, specifically checking for odd states like non-existent files that were just listed by the filesystem, which suggests a permissions problem. Moved log strings into LocalStrings.properties Modified: tomcat/tc7.0.x/trunk/ (props changed) tomcat/tc7.0.x/trunk/java/org/apache/catalina/ha/deploy/LocalStrings.properties tomcat/tc7.0.x/trunk/java/org/apache/catalina/ha/deploy/WarWatcher.java tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Propchange: tomcat/tc7.0.x/trunk/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Jan 21 15:32:08 2015 @@ -1,2 +1,2 @@ /tomcat/tc8.0.x/trunk:1636525,1637336,1637685,1637709,1638726,1640089,1640276,1640349,1640363,1640366,1640642,1640672,1640674,1640689,1640884,1641001,1641065,1641067,1641375,1641638,1641723,1641726,1641729-1641730,1641736,1641988,1642669-1642670,1642698,1642701,1643205,1643215,1643217,1643230,1643232,1643273,1643285,1643329-1643330,1643511,1643513,1643521,1643539,1643571,1643581-1643582,1643635,1643655,1643738,1643964,1644018,1644333,1644954,1644992,1645014,1645360,1645456,1645627,1645642,1645686,1645903-1645904,1645908-1645909,1645913,1645920,1646458,1646460-1646462,1647043,1648816,1651420-1651422,1651844,1652939-1652940,1652973 -/tomcat/trunk:1156115-1157160,1157162-1157859,1157862-1157942,1157945-1160347,1160349-1163716,1163718-1166689,1166691-1174340,1174342-1175596,1175598-1175611,1175613-1175932,1175934-1177783,1177785-1177980,1178006-1180720,1180722-1183094,1183096-1187753,1187755,1187775,1187801,1187806,1187809,1187826-1188312,1188314-1188401,1188646-1188840,1188842-1190176,1190178-1195223,1195225-1195953,1195955,1195957-1201238,1201240-1203345,1203347-1206623,1206625-1208046,1208073,1208096,1208114,1208145,1208772,1209194-1212125,1212127-1220291,1220293,1220295-1221321,1221323-1222329,1222332-1222401,1222405-1222795,1222850-1222950,1222969-1225326,1225328-1225463,1225465,1225627,1225629-1226534,1226536-1228908,1228911-1228923,1228927-1229532,1229534-1230766,1230768-1231625,1231627-1233414,1233419-1235207,1235209-1237425,1237427,1237429-1237977,1237981,1237985,1237995,1238070,1238073,1239024-1239048,1239050-1239062,1239135,1239256,1239258-1239485,1239785-1240046,1240101,1240106,1240109,1240112,1240114 ,1240116,1240118,1240121,1240329,1240474-1240850,1240857,1241087,1241160,1241408-1241822,1241908-1241909,1241912-1242110,1242371-1292130,1292134-1292458,1292464-1292670,1292672-1292776,1292780-1293392,1293397-1297017,1297019-1297963,1297965-1299820,1300108,1300111-1300460,1300520-1300948,1300997,1301006,1301280,1302332,1302348,1302608-1302610,1302649,1302837,1303138,1303163,1303338,1303521,1303587,1303698,1303803,1303852,1304011,1304035,1304037,1304135,1304249,1304253,1304260,1304271,1304275,1304468,1304895,1304930-1304932,1305194,1305943,1305965,1306556,1306579-1306580,1307084,1307310,1307511-1307512,1307579,1307591,1307597,1310636,1310639-1310640,1310642,1310701,1311212,1311995,1327617,1327670,1331766,1333161,1333173,1333827,1334787,1335026,1335257,1335547,1335692,1335711,1335731,1336515,1336813,1336864,1336868,1336884,1337419,1337426,1337546,1337572,1337591-1337595,1337643,1337707,1337719,1337734,1337741,1337745,1338151-1338154,1338178,1342027,1342029,1342315,1342320,1342476,1342 498,1342503,1342717,1342795,1342805,1343044-1343046,1343335,1343394,1343400,1343629,1343708,1343718,1343895,1344063,1344068,1344250,1344266,1344515,1344528,1344612,1344629,1344725,1344868,1344890,1344893,1344896,1344901,1345020,1345029,1345039,1345287-1345290,1345294,1345309,1345325,1345357,1345367,1345579-1345580,1345582,1345688,1345699,1345704,1345731-1345732,1345737,1345744,1345752,1345754,1345779,1345781,1345846,1346107,1346365,1346376,1346404,1346510,1346514,1346519,1346581,1346635,1346644,1346683,1346794,1346885,1346932,1347034,1347047,1347087,1347108-1347109,1347583,1347737,1348105,1348357,1348398,1348425,1348461-1348495,1348498,1348752,1348762,1348772,1348776,1348859,1348968,1348973,1348989,1349007,1349237,1349298,1349317,1349410,1349473,1349539,1349879,1349887,1349893,1349922,1349984,1350124,1350241,1350243,1350294-1350295,1350299,1350864,1350900,1351010,1351054,1351056,1351068,1351134-1351135,1351148,1351259,1351604,1351636-1351640,1351991,1351993,1352011,1352056,1352059,1
[Bug 57473] WarWatcher does not throw any warning if permissions are broken
https://issues.apache.org/bugzilla/show_bug.cgi?id=57473 Christopher Schultz ch...@christopherschultz.net changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #1 from Christopher Schultz ch...@christopherschultz.net --- Fixed in trunk in r1653550. Back-ported to Tomcat 8 in r1653552. Will be in Tomcat 8.0.18. Back-ported to Tomcat 7 in r1653559. Will be in Tomcat 7.0.58. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org