svn commit: r1701170 - /tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/JreCompat.java

2015-09-04 Thread markt
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

2015-09-04 Thread bugzilla
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

2015-09-04 Thread remm
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

2015-09-04 Thread bugzilla
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

2015-09-04 Thread buildbot
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

2015-09-04 Thread bugzilla
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

2015-09-04 Thread bugzilla
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

2015-09-04 Thread markt
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

2015-09-04 Thread markt
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

2015-09-04 Thread bugzilla
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

2015-09-04 Thread bugzilla
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

2015-09-04 Thread bugzilla
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

2015-09-04 Thread bugzilla
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 ${...}

2015-09-04 Thread bugzilla
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

2015-09-04 Thread bugzilla
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