svn commit: r1701170 - /tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/JreCompat.java
Author: markt Date: Fri Sep 4 08:20:01 2015 New Revision: 1701170 URL: http://svn.apache.org/r1701170 Log: Add method to determine if JRE 7 features are available. (Prep for https://bz.apache.org/bugzilla/show_bug.cgi?id=57681) Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/JreCompat.java Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/JreCompat.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/JreCompat.java?rev=1701170&r1=1701169&r2=1701170&view=diff == --- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/JreCompat.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/JreCompat.java Fri Sep 4 08:20:01 2015 @@ -33,6 +33,7 @@ public class JreCompat { private static final JreCompat instance; private static StringManager sm = StringManager.getManager(JreCompat.class.getPackage().getName()); +private static final boolean jre7Available; private static final boolean jre8Available; @@ -42,12 +43,15 @@ public class JreCompat { // Look for the highest supported JVM first if (Jre8Compat.isSupported()) { instance = new Jre8Compat(); +jre7Available = true; jre8Available = true; } else if (Jre7Compat.isSupported()) { instance = new Jre7Compat(); +jre7Available = true; jre8Available = false; } else { instance = new JreCompat(); +jre7Available = false; jre8Available = false; } } @@ -58,7 +62,12 @@ public class JreCompat { } -// Java 7 methods +// Java 6 implementation of Java 7 methods + +public static boolean isJre7Available() { +return jre7Available; +} + public Locale forLanguageTag(String languageTag) { // Extract the language and country for this entry @@ -101,7 +110,7 @@ public class JreCompat { } -// Java 8 methods +// Java 6 implementation of Java 8 methods public static boolean isJre8Available() { return jre8Available; - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57681] Allow parallel class loading in web application class loader by synchronizing on class specific object
https://bz.apache.org/bugzilla/show_bug.cgi?id=57681 --- Comment #14 from Mark Thomas --- Removing deprecated code is not an option since it may break existing code. That is why it was deprecated rather than deleted in the first place. The patch needs to be re-worked not to do this. I've started to add some of the external plumbing required by this feature so the patch should be a little smaller. -- 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: r1701202 - /tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
Author: remm Date: Fri Sep 4 10:11:08 2015 New Revision: 1701202 URL: http://svn.apache.org/r1701202 Log: Fix incorrect return value (although it doesn't seem to have any real consequences). Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1701202&r1=1701201&r2=1701202&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Fri Sep 4 10:11:08 2015 @@ -949,7 +949,7 @@ public class Nio2Endpoint extends Abstra if (log.isDebugEnabled()) { log.debug("Socket: [" + this + "], Read: [" + nRead + "]"); } -return nRead; +return (nRead > len) ? len : nRead; } } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 58327] New: ValueExpressionLiteral should cache the string value
https://bz.apache.org/bugzilla/show_bug.cgi?id=58327 Bug ID: 58327 Summary: ValueExpressionLiteral should cache the string value Product: Tomcat 8 Version: 8.0.26 Hardware: PC OS: Linux Status: NEW Severity: normal Priority: P2 Component: EL Assignee: dev@tomcat.apache.org Reporter: andreas.k...@gmail.com Created attachment 33061 --> https://bz.apache.org/bugzilla/attachment.cgi?id=33061&action=edit Proposed patch ValueExpressionLiteral invokes #getExpressionString() twice for many methods to notify the context. Calculating the string value can be expensive, for example in my case my values are rather "big" JSON wrapper objects. For a literal value this string value should be cacheable - the thing is read-only and a literal value, after all. Attached a proposed patch to implement that - but I'm not sure whether there might be specific tests to run or spec issues preventing this. For the time being I worked around the issue in our own code by using a different ValueExpression that has this caching behavior. -- 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
buildbot success in ASF Buildbot on tomcat-trunk
The Buildbot has detected a restored build on builder tomcat-trunk while building ASF Buildbot. Full details are available at: http://ci.apache.org/builders/tomcat-trunk/builds/207 Buildbot URL: http://ci.apache.org/ Buildslave for this Build: silvanus_ubuntu Build Reason: The AnyBranchScheduler scheduler named 'on-tomcat-commit' triggered this build Build Source Stamp: [branch tomcat/trunk] 1701202 Blamelist: remm Build succeeded! Sincerely, -The Buildbot - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57681] Allow parallel class loading in web application class loader by synchronizing on class specific object
https://bz.apache.org/bugzilla/show_bug.cgi?id=57681 --- Comment #15 from Huxing Zhang --- To make StandardClassLoader parallel capable, we can simply add JRECompact to the Bootstrap class loader's class path, and then apply the static initialization of WebappClassLoaderBase's to it. If we don't want to JreCompat to be in the Bootstrap ClassLoader's class path, I think adding the following code should work for StandardClassLoader: public class StandardClassLoader { ... static { try { // parallel class loading capable final Method registerParallel = ClassLoader.class.getDeclaredMethod("registerAsParallelCapable"); AccessController.doPrivileged(new PrivilegedAction() { public Object run() { registerParallel.setAccessible(true); return null; } }); registerParallel.invoke(null); } catch (NoSuchMethodException e) { // expect java 6 or lower } catch (Exception e) { // ignore } } ... } If there is anything else I can help, please feel free to let me know. -- 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 58327] ValueExpressionLiteral should cache the string value
https://bz.apache.org/bugzilla/show_bug.cgi?id=58327 --- Comment #1 from Mark Thomas --- The only risk I can see is that even though the ValueExpression is read-only, the object it wraps is not and that object may change over time. That may change the result of its toString() method which in turn would impact the result of #getExpressionString(). However, the use of toString() here is an implementation detail internal to Tomcat. The spec has no expectations of what should be produced for #getExpressionString() in this case. On balance I think the potential performance benefits outweigh the possible confusion that might be caused by caching the toString() value if getExpressionString() is used for debugging. I'll look at getting this patch applied. -- 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: r1701213 - /tomcat/trunk/java/org/apache/el/ValueExpressionLiteral.java
Author: markt Date: Fri Sep 4 11:21:53 2015 New Revision: 1701213 URL: http://svn.apache.org/r1701213 Log: Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=58327 Cache the calculated expression string as it is frequently used and may be expensive to evaluate. Patch provided by Andreas Kohn. Modified: tomcat/trunk/java/org/apache/el/ValueExpressionLiteral.java Modified: tomcat/trunk/java/org/apache/el/ValueExpressionLiteral.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/ValueExpressionLiteral.java?rev=1701213&r1=1701212&r2=1701213&view=diff == --- tomcat/trunk/java/org/apache/el/ValueExpressionLiteral.java (original) +++ tomcat/trunk/java/org/apache/el/ValueExpressionLiteral.java Fri Sep 4 11:21:53 2015 @@ -35,6 +35,7 @@ public final class ValueExpressionLitera private static final long serialVersionUID = 1L; private Object value; +private String valueString; private Class expectedType; @@ -89,7 +90,10 @@ public final class ValueExpressionLitera @Override public String getExpressionString() { -return (this.value != null) ? this.value.toString() : null; +if (this.valueString == null) { +this.valueString = (this.value != null) ? this.value.toString() : null; +} +return this.valueString; } @Override - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1701220 - in /tomcat/tc8.0.x/trunk: ./ java/org/apache/el/ValueExpressionLiteral.java webapps/docs/changelog.xml
Author: markt Date: Fri Sep 4 11:29:27 2015 New Revision: 1701220 URL: http://svn.apache.org/r1701220 Log: Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=58327 Cache the calculated expression string as it is frequently used and may be expensive to evaluate. Patch provided by Andreas Kohn. Modified: tomcat/tc8.0.x/trunk/ (props changed) tomcat/tc8.0.x/trunk/java/org/apache/el/ValueExpressionLiteral.java tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml Propchange: tomcat/tc8.0.x/trunk/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Fri Sep 4 11:29: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,1653471,1653550,1653574,1653797,1653815-1653816,1653819,1653840,1653857,1653888,1653972,1654013,1654030,1654050,1654123,1654148,1654159,1654513,1654515,1654517,1654522,1654524,1654725,1654735,1654766,1654785,1654851-1654852,1654978,1655122-1655124,1655126-1655127,1655129-1655130,1655132-1655133,1655312,1655438,1655441,1655454,168,1656087,1656299,1656319,1656331,1656345,1656350,1656590,1656648-1656650,1656657,1657041,1657054,1657374,1657492,1657510,1657565,1657580,1657584,1657586,1657589,1657592,1657607,1657609,1657682,1657 907,1658207,1658734,1658781,1658790,1658799,1658802,1658804,1658833,1658840,1658966,1659043,1659053,1659059,1659188-1659189,1659216,1659263,1659293,1659304,1659306-1659307,1659382,1659384,1659428,1659471,1659486,1659505,1659516,1659521,1659524,1659559,1659562,1659803,1659806,1659814,1659833,1659862,1659905,1659919,1659948,1659967,1659983-1659984,1660060,1660074,1660077,1660133,1660168,1660331-1660332,1660353,1660358,1660924,1661386,1661867,1661972,1661990,1662200,1662308-1662309,1662548,1662614,1662736,1662985,1662988-1662989,1663264,1663277,1663298,1663534,1663562,1663676,1663715,1663754,1663768,1663772,1663781,1663893,1663995,1664143,1664163,1664174,1664301,1664317,1664347,1664657,1664659,1664710,1664863-1664864,1664866,1665085,1665292,1665559,1665653,1665661,1665672,1665694,1665697,1665736,1665779,1665976-1665977,1665980-1665981,1665985-1665986,1665989,1665998,1666004,1666008,1666013,1666017,1666024,1666116,1666386-1666387,1666494,1666496,1666552,1666569,1666579,137,149,1 666757,1666966,1666972,1666985,1666995,1666997,1667292,1667402,1667406,1667546,1667615,1667630,1667636,1667688,1667764,1667871,1668026,1668135,1668193,1668593,1668596,1668630,1668639,1668843,1669353,1669370,1669451,1669800,1669838,1669876,1669882,1670394,1670433,1670591,1670598-1670600,1670610,1670631,1670719,1670724,1670726,1670730,1670940,1671112,1672272,1672284,1673754,1674294,1675461,1675486,1675594,1675830,1676231,1676250-1676251,1676364,1676381,1676393,1676479,1676525,1676552,1676615,1676630,1676634,1676721,1676926,1676943,1677140,1677802,1678011,1678162,1678174,1678339,1678426-1678427,1678694,1678701,1679534,1679708,1679710,1679716,1680034,1680246,1681056,1681123,1681138,1681280,1681283,1681286,1681450,1681697,1681701,1681729,1681770,1681779,1681793,1681807,1681837-1681838,1681854,1681862,1681958,1682028,1682033,1682311,1682315,1682317,1682320,1682324,1682330,1682842,1684172,1684366,1684383,1684526-1684527,1684549-1684550,1685556,1685591,1685739,1685744,1685772,1685816,168582 6,1685891,1687242,1687261,1687268,1687340,1688563,1688841,1688878,165,1688896,1688901,1689345-1689346,1689357,1689656,1689675-1689677,1689679,1689687,1689825,1689856,1689918,1690011,1690021,1690054,1690080,1690209,1691134,1691487,1691813,1692744-1692747,1692849,1693088,1693105,1693429,1693461,1694058,1694111,1694290,16
[Bug 58327] ValueExpressionLiteral should cache the string value
https://bz.apache.org/bugzilla/show_bug.cgi?id=58327 Mark Thomas changed: What|Removed |Added Resolution|--- |FIXED Status|NEW |RESOLVED --- Comment #2 from Mark Thomas --- Thanks for the report and the patch. It has been applied to trunk and 8.0.x (for 8.0.27 onwards). I haven't applied it to 7.0.x since getExpressionString() is not used so extensively in 7.0.x. -- 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 58321] Using non-thread-safe javax.net.ssl.SSLEngine inside org.apache.tomcat.util.net.SecureNio2Channel without synchronization
https://bz.apache.org/bugzilla/show_bug.cgi?id=58321 --- Comment #8 from Remy Maucherat --- Yes, I think that's too many questions for BZ. NIO2 does not allow concurrency, and in addition to the SSL engine, concurrency would also corrupt all the buffers used. The socket wrapper ensures that doesn't happen. -- 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 58328] New: Very slow rendering time when there are undefined el variables - no caching in ImportHandler
https://bz.apache.org/bugzilla/show_bug.cgi?id=58328 Bug ID: 58328 Summary: Very slow rendering time when there are undefined el variables - no caching in ImportHandler Product: Tomcat 8 Version: trunk Hardware: PC OS: Linux Status: NEW Severity: regression Priority: P2 Component: EL Assignee: dev@tomcat.apache.org Reporter: janusz.parfien...@gmail.com Created attachment 33062 --> https://bz.apache.org/bugzilla/attachment.cgi?id=33062&action=edit Sample page showing the problem As it says in https://tomcat.apache.org/migration-8.html#JavaServer_Pages_2.3 static fields can be used in expressions. The problem is that every undefined variable in such expression is checked agains configured set of packages due to lack of caching this lookup is performed on every request. Class that performs the lookup is the javax.el.ImportHandler http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/javax/el/ImportHandler.java?view=markup . It has clazzes and statics variables, their initialization suggest that they could be used in multithreaded environment yet ImportHandler is constructed every time new ELContext is created (and if I understand correctly this is done in context of a single page request thus it's executed by single thread). I think that fields clazzes and statics should be static. To reproduce this issue: 1. Get Tomcat, unpack and start it 2. Take attached jsp page and put it on ie to webapps/ROOT 3. Use tool like siege ( https://www.joedog.org/siege-home/ ) to test the performance: siege http://localhost:8080/heavyPage.jsp -c 1 -d 0 -t 10s My results are pasted below (Tomcat7, Tomcat8, and Tomcat8 with ImportHandler.clazzes and ImportHandler.statics changed to static). Apache Tomcat 7.0.64: Transactions:6938 hits Availability: 100.00 % Elapsed time:9.41 secs Data transferred: 16.03 MB Response time:0.00 secs Transaction rate: 737.30 trans/sec Throughput:1.70 MB/sec Concurrency:0.97 Successful transactions:6938 Failed transactions: 0 Longest transaction:0.03 Shortest transaction:0.00 Apache Tomcat 8.0.26: Transactions: 7 hits Availability: 100.00 % Elapsed time:9.14 secs Data transferred:0.02 MB Response time:1.27 secs Transaction rate:0.77 trans/sec Throughput:0.00 MB/sec Concurrency:0.97 Successful transactions: 7 Failed transactions: 0 Longest transaction:1.36 Shortest transaction:1.22 Apache Tomcat - trunk version with suggested fix: Transactions:5786 hits Availability: 100.00 % Elapsed time:9.93 secs Data transferred: 13.36 MB Response time:0.00 secs Transaction rate: 582.68 trans/sec Throughput:1.35 MB/sec Concurrency:0.97 Successful transactions:5786 Failed transactions: 0 Longest transaction:0.02 Shortest transaction:0.00 Best, Janusz -- 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 58328] Very slow rendering time when there are undefined el variables - no caching in ImportHandler
https://bz.apache.org/bugzilla/show_bug.cgi?id=58328 Janusz Parfieniuk changed: What|Removed |Added CC||janusz.parfien...@gmail.com -- 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 57136] EL Parser escaping dollar sign not ${ or ${...}
https://bz.apache.org/bugzilla/show_bug.cgi?id=57136 --- Comment #14 from Mark Thomas --- I've been mulling this over some more and I think - regardless of the feedback from the EG - we are going to have to make the escaping for JSP configurable. The EG feedback is just going to determine what the default is. I'm concerned about the complexity making this configurable will create but the more I think about this the more I think we need to simply so we don't inconvenience one group of users over another. -- 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 58143] The WebppClassLoader doesn't call transformers on cached classes
https://bz.apache.org/bugzilla/show_bug.cgi?id=58143 Bryn changed: What|Removed |Added Severity|normal |enhancement Resolution|WONTFIX |--- Status|RESOLVED|REOPENED Priority|P2 |P3 --- Comment #6 from Bryn --- As suggested by Mark I have reopened this as an enhancement. I have also come across this issue. In short registering a transformer in a ServletContextInitializer was too late for classes that are scanned as part of the @HandlesTypes mechanism, they are already loaded and are therefore not transformed. It would be great if we could have an alternative mechanism to register transformers before scanning takes place. Ideally this would be automatic registration rather than requiring the developer to configure anything, thus allowing them to include the library with the transformer in and benefit without referring to installation instructions. This was my original goal of registering the transformer in a ServletContextInitializer. With this in mind the ServiceLoader mechanism or something similar could be considered. Library developers would create a resource containing the fully qualified class names of their transformers at: META-INF/services/java.lang.instrument.ClassFileTransformer Transformers would be enumerated and registered before scanning takes place. Even if JDK ServiceLoader implementation is not used, perhaps due to performance, then the mechanism is at least well understood by developers. Instead of having custom config specific to Tomcat the docs can just say that ClassFileTransformers are discovered via ServiceLoader. This raises the chances that other servlet containers would adopt the same approach. I note that Jetty have an addTransformer method on their classloader as well, but using ServiceLoader would be container independent. -- 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