svn commit: r1581778 - in /tomcat/trunk/java/org/apache: coyote/ajp/AjpNio2Processor.java coyote/http11/Http11Nio2Processor.java tomcat/util/net/Nio2Channel.java tomcat/util/net/Nio2Endpoint.java tomc
Author: remm Date: Wed Mar 26 10:11:06 2014 New Revision: 1581778 URL: http://svn.apache.org/r1581778 Log: - Remove useless IOE on flush. - Remove nearly all extra fields from the socket wrapper. Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpNio2Processor.java tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Channel.java tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpNio2Processor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpNio2Processor.java?rev=1581778r1=1581777r2=1581778view=diff == --- tomcat/trunk/java/org/apache/coyote/ajp/AjpNio2Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/ajp/AjpNio2Processor.java Wed Mar 26 10:11:06 2014 @@ -95,17 +95,8 @@ public class AjpNio2Processor extends Ab @Override protected void registerForEvent(boolean read, boolean write) { -final Nio2Endpoint.Nio2SocketWrapper attach = -(Nio2Endpoint.Nio2SocketWrapper) socketWrapper; -if (attach == null) { -return; -} -if (read) { -attach.interestOps(attach.interestOps() | Nio2Endpoint.OP_READ); -} -if (write) { -attach.interestOps(attach.interestOps() | Nio2Endpoint.OP_WRITE); -} +// Nothing to do here, the appropriate operations should +// already be pending } @Override Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java?rev=1581778r1=1581777r2=1581778view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java Wed Mar 26 10:11:06 2014 @@ -144,17 +144,8 @@ public class Http11Nio2Processor extends @Override protected void registerForEvent(boolean read, boolean write) { -final Nio2Endpoint.Nio2SocketWrapper attach = -(Nio2Endpoint.Nio2SocketWrapper) socketWrapper; -if (attach == null) { -return; -} -if (read) { -attach.interestOps(attach.interestOps() | Nio2Endpoint.OP_READ); -} -if (write) { -attach.interestOps(attach.interestOps() | Nio2Endpoint.OP_WRITE); -} +// Nothing to do here, the appropriate operations should +// already be pending } Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Channel.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Channel.java?rev=1581778r1=1581777r2=1581778view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Channel.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Channel.java Wed Mar 26 10:11:06 2014 @@ -212,9 +212,7 @@ public class Nio2Channel implements Asyn } }; -@SuppressWarnings(unused) -public FutureBoolean flush() -throws IOException { +public FutureBoolean flush() { return DONE; } 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=1581778r1=1581777r2=1581778view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Wed Mar 26 10:11:06 2014 @@ -33,7 +33,6 @@ import java.nio.channels.ReadPendingExce import java.nio.file.StandardOpenOption; import java.util.Iterator; import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.RejectedExecutionException; @@ -65,11 +64,6 @@ public class Nio2Endpoint extends Abstra private static final Log log = LogFactory.getLog(Nio2Endpoint.class); -public static final int OP_REGISTER = 0x100; //register interest op -public static final int OP_CALLBACK = 0x200; //callback interest op -public static final int OP_READ = 0x400; //read interest op -public static final int OP_WRITE = 0x800; //write interest op - // - Fields /** @@ -583,7 +577,6 @@ public class Nio2Endpoint extends Abstra protected boolean processSocket0(SocketWrapperNio2Channel
svn commit: r1581785 - in /tomcat/site/trunk: docs/findhelp.html docs/presentations.html xdocs/findhelp.xml xdocs/presentations.xml
Author: markt Date: Wed Mar 26 11:14:49 2014 New Revision: 1581785 URL: http://svn.apache.org/r1581785 Log: Add a page for Tomcat presentations. Added: tomcat/site/trunk/docs/presentations.html (with props) tomcat/site/trunk/xdocs/presentations.xml (with props) Modified: tomcat/site/trunk/docs/findhelp.html tomcat/site/trunk/xdocs/findhelp.xml Modified: tomcat/site/trunk/docs/findhelp.html URL: http://svn.apache.org/viewvc/tomcat/site/trunk/docs/findhelp.html?rev=1581785r1=1581784r2=1581785view=diff == --- tomcat/site/trunk/docs/findhelp.html (original) +++ tomcat/site/trunk/docs/findhelp.html Wed Mar 26 11:14:49 2014 @@ -252,6 +252,10 @@ is not a support forum. If you need help pThere is also an a href=irc.htmlIRC channel/a dedicated to Tomcat./p +pA number of a href=presentations.htmlTomcat presentations/a are +available from past Apache conferences and other sources./p + + pA list of organisations that provide support and training for Apache Tomcat is maintained on the a href=http://wiki.apache.org/tomcat/SupportAndTraining;Tomcat Wiki/a./p Added: tomcat/site/trunk/docs/presentations.html URL: http://svn.apache.org/viewvc/tomcat/site/trunk/docs/presentations.html?rev=1581785view=auto == --- tomcat/site/trunk/docs/presentations.html (added) +++ tomcat/site/trunk/docs/presentations.html Wed Mar 26 11:14:49 2014 @@ -0,0 +1,324 @@ +!DOCTYPE html SYSTEM about:legacy-compat +html lang=en +head +META http-equiv=Content-Type content=text/html; charset=UTF-8 +link href=stylesheets/tomcat.css rel=stylesheet type=text/css +titleApache Tomcat - Presentations/title +/head +body +div id=wrapper +header +div id=header +div +div +div class=logo noPrint +a href=http://tomcat.apache.org/;img alt=Tomcat Home src=./images/tomcat.png/a +/div +div style=height: 1px;/div +div class=asfLogo noPrint +a href=http://www.apache.org/; target=_blankimg src=//www.apache.org/images/feather.png alt=The Apache Software Foundation style=width: 266px; height: 83px;/a +/div +h1 style=margin-top: 35px;Apache Tomcat/h1 +div style=clear: right;/div +div class=searchbox noPrint +form action=https://www.google.com/search; method=get +input value=tomcat.apache.org name=sitesearch type=hiddeninput placeholder=Search the Sitehellip; required=required size=25 name=q id=query type=searchbuttonSearch/button +/form +/div +div style=height: 1px;/div +div style=clear: left;/div +/div +/div +/div +/header +div id=middle +div +div id=mainLeft class=noprint +div +nav +div +h2Apache Tomcat/h2 +ul +li +a href=./index.htmlHome/a +/li +li +a href=./taglibs/Taglibs/a +/li +li +a href=./maven-plugin.htmlMaven Plugin/a +/li +/ul +/div +div +h2Download/h2 +ul +li +a href=./whichversion.htmlWhich version?/a +/li +li +a href=./download-80.cgiTomcat 8.0/a +/li +li +a href=./download-70.cgiTomcat 7.0/a +/li +li +a href=./download-60.cgiTomcat 6.0/a +/li +li +a href=./download-connectors.cgiTomcat Connectors/a +/li +li +a href=./download-native.cgiTomcat Native/a +/li +li +a href=http://archive.apache.org/dist/tomcat/;Archives/a +/li +/ul +/div +div +h2Documentation/h2 +ul +li +a href=./tomcat-8.0-doc/index.htmlTomcat 8.0/a +/li +li +a href=./tomcat-7.0-doc/index.htmlTomcat 7.0/a +/li +li +a href=./tomcat-6.0-doc/index.htmlTomcat 6.0/a +/li +li +a href=./connectors-doc/Tomcat Connectors/a +/li +li +a href=./native-doc/Tomcat Native/a +/li +li +a href=http://wiki.apache.org/tomcat/FrontPage;Wiki/a +/li +li +a href=./migration.htmlMigration Guide/a +/li +/ul +/div +div +h2Problems?/h2 +ul +li +a href=./security.htmlSecurity Reports/a +/li +li +a href=./findhelp.htmlFind help/a +/li +li +a href=http://wiki.apache.org/tomcat/FAQ;FAQ/a +/li +li +a href=./lists.htmlMailing Lists/a +/li +li +a href=./bugreport.htmlBug Database/a +/li +li +a href=./irc.htmlIRC/a +/li +/ul +/div +div +h2Get Involved/h2 +ul +li +a href=./getinvolved.htmlOverview/a +/li +li +a href=./svn.htmlSVN Repositories/a +/li +li +a href=./ci.htmlBuildbot/a +/li +li +a href=https://reviews.apache.org/groups/tomcat/;Reviewboard/a +/li +li +a href=./tools.htmlTools/a +/li +/ul +/div +div +h2Media/h2 +ul +li +a href=http://blogs.apache.org/tomcat/;Blog/a +/li +li +a href=http://twitter.com/theapachetomcat;Twitter/a +/li +/ul +/div +div +h2Misc/h2 +ul +li +a href=./whoweare.htmlWho We Are/a +/li +li +a href=./heritage.htmlHeritage/a +/li +li +a href=http://www.apache.org;Apache Home/a +/li +li +a href=./resources.htmlResources/a +/li +li +a href=./contact.htmlContact/a +/li +li +a href=./legal.htmlLegal/a +/li +li +a href=http://www.apache.org/foundation/sponsorship.html;Sponsorship/a +/li +li +a href=http://www.apache.org/foundation/thanks.html;Thanks/a +/li +/ul +/div +/nav +/div +/div +div id=mainRight +div id=content +h2 style=display: none;Content/h2 +h3 id=PresentationsPresentations/h3 +div class=text + + +pApache
[ANN] ApacheCon NA 2013 Tomcat presentation videos available
All, Most (all?) of the presentations from ApacheCon NA 2013 are now available on YouTube. To help you to navigate to the Tomcat presentations we have created this page: http://tomcat.apache.org/presentations.html As well as the videos, links to the slides for a number of other presentations are also listed. We'll add the ApacheCon 2014 links as soon as they are available. If there are other Tomcat videos, audio recordings, slide-decks etc. you think might be useful to add to that page, do speak up. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1581789 - in /tomcat/trunk: TOMCAT-NEXT.txt java/org/apache/catalina/session/FileStore.java
Author: markt Date: Wed Mar 26 11:36:45 2014 New Revision: 1581789 URL: http://svn.apache.org/r1581789 Log: More try-with-resources Modified: tomcat/trunk/TOMCAT-NEXT.txt tomcat/trunk/java/org/apache/catalina/session/FileStore.java Modified: tomcat/trunk/TOMCAT-NEXT.txt URL: http://svn.apache.org/viewvc/tomcat/trunk/TOMCAT-NEXT.txt?rev=1581789r1=1581788r2=1581789view=diff == --- tomcat/trunk/TOMCAT-NEXT.txt (original) +++ tomcat/trunk/TOMCAT-NEXT.txt Wed Mar 26 11:36:45 2014 @@ -214,7 +214,7 @@ but possibly 7.1.x). - Use of try with resources - Started. - javax.* complete -- o.a.catalina.[ant to security] complete +- o.a.catalina.[ant to servlets] complete - remainder TODO - Catching multiple exceptions - Started Modified: tomcat/trunk/java/org/apache/catalina/session/FileStore.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/FileStore.java?rev=1581789r1=1581788r2=1581789view=diff == --- tomcat/trunk/java/org/apache/catalina/session/FileStore.java (original) +++ tomcat/trunk/java/org/apache/catalina/session/FileStore.java Wed Mar 26 11:36:45 2014 @@ -243,15 +243,12 @@ public final class FileStore extends Sto id, file.getAbsolutePath())); } -FileInputStream fis = null; -BufferedInputStream bis = null; ObjectInputStream ois = null; Loader loader = null; ClassLoader classLoader = null; ClassLoader oldThreadContextCL = Thread.currentThread().getContextClassLoader(); -try { -fis = new FileInputStream(file.getAbsolutePath()); -bis = new BufferedInputStream(fis); +try (FileInputStream fis = new FileInputStream(file.getAbsolutePath()); +BufferedInputStream bis = new BufferedInputStream(fis)) { Context context = manager.getContext(); if (context != null) loader = context.getLoader(); @@ -273,22 +270,6 @@ public final class FileStore extends Sto if (manager.getContext().getLogger().isDebugEnabled()) manager.getContext().getLogger().debug(No persisted data file found); return (null); -} catch (IOException e) { -if (bis != null) { -try { -bis.close(); -} catch (IOException f) { -// Ignore -} -} -if (fis != null) { -try { -fis.close(); -} catch (IOException f) { -// Ignore -} -} -throw e; } finally { if (ois != null) { // Close the input stream @@ -348,28 +329,11 @@ public final class FileStore extends Sto manager.getContext().getLogger().debug(sm.getString(getStoreName()+.saving, session.getIdInternal(), file.getAbsolutePath())); } -FileOutputStream fos = null; -ObjectOutputStream oos = null; -try { -fos = new FileOutputStream(file.getAbsolutePath()); -oos = new ObjectOutputStream(new BufferedOutputStream(fos)); -} catch (IOException e) { -if (fos != null) { -try { -fos.close(); -} catch (IOException f) { -// Ignore -} -} -throw e; -} -try { +try (FileOutputStream fos = new FileOutputStream(file.getAbsolutePath()); +ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(fos))) { ((StandardSession)session).writeObjectData(oos); -} finally { -oos.close(); } - } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 56318] New: Oracle DB cursors are leaking when using org.apache.tomcat.jdbc.pool.DataSourceFactory
https://issues.apache.org/bugzilla/show_bug.cgi?id=56318 Bug ID: 56318 Summary: Oracle DB cursors are leaking when using org.apache.tomcat.jdbc.pool.DataSourceFactory Product: Tomcat 7 Version: 7.0.50 Hardware: PC Status: NEW Severity: major Priority: P2 Component: Catalina Assignee: dev@tomcat.apache.org Reporter: b...@mail.ru I've setup a datasource as Resource auth=Container url=jdbc:oracle:thin:@dgalimov7:1521:DAN2 driverClassName=oracle.jdbc.OracleDriver factory=org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory name=jdbc/IpbDB username=dgalimov_home_new password=dgalimov_home_new type=javax.sql.DataSource timeBetweenEvictionRunsMillis=1 maxActive=25 maxIdle=3 minIdle=0 maxWait=3 testOnBorrow=true testOnReturn=true validationQuery=SELECT 1 FROM DUAL / However, if I change factory from org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory to org.apache.tomcat.jdbc.pool.DataSourceFactory, after a while I'm getting errors like ORA-01000: maximum open cursors exceeded (although I've set 1000 cursors limit). I'm using this query to get the cursors count: select max(a.value) as highest_open_cur, p.value as max_open_cur from v$sesstat a, v$statname b, v$parameter p where a.statistic# = b.statistic# and b.name = 'opened cursors current' and p.name= 'open_cursors' group by p.value; I've tried adding defaultAutoCommit=true when using DataSourceFactory, but it didn't help. -- 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 56318] Oracle DB cursors are leaking when using org.apache.tomcat.jdbc.pool.DataSourceFactory
https://issues.apache.org/bugzilla/show_bug.cgi?id=56318 Mark Thomas ma...@apache.org changed: What|Removed |Added Component|Catalina|jdbc-pool Version|7.0.50 |unspecified Product|Tomcat 7|Tomcat Modules OS||All --- Comment #1 from Mark Thomas ma...@apache.org --- Correct product -- 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: r1581820 - in /tomcat/trunk: ./ java/org/apache/catalina/session/
Author: markt Date: Wed Mar 26 13:09:39 2014 New Revision: 1581820 URL: http://svn.apache.org/r1581820 Log: More try-with-resources Modified: tomcat/trunk/TOMCAT-NEXT.txt tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java tomcat/trunk/java/org/apache/catalina/session/LocalStrings.properties tomcat/trunk/java/org/apache/catalina/session/LocalStrings_es.properties tomcat/trunk/java/org/apache/catalina/session/LocalStrings_fr.properties tomcat/trunk/java/org/apache/catalina/session/LocalStrings_ja.properties tomcat/trunk/java/org/apache/catalina/session/StandardManager.java Modified: tomcat/trunk/TOMCAT-NEXT.txt URL: http://svn.apache.org/viewvc/tomcat/trunk/TOMCAT-NEXT.txt?rev=1581820r1=1581819r2=1581820view=diff == --- tomcat/trunk/TOMCAT-NEXT.txt (original) +++ tomcat/trunk/TOMCAT-NEXT.txt Wed Mar 26 13:09:39 2014 @@ -214,7 +214,7 @@ but possibly 7.1.x). - Use of try with resources - Started. - javax.* complete -- o.a.catalina.[ant to servlets] complete +- o.a.catalina.[ant to session] complete - remainder TODO - Catching multiple exceptions - Started Modified: tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java?rev=1581820r1=1581819r2=1581820view=diff == --- tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java (original) +++ tomcat/trunk/java/org/apache/catalina/session/JDBCStore.java Wed Mar 26 13:09:39 2014 @@ -468,7 +468,6 @@ public class JDBCStore extends StoreBase */ @Override public String[] keys() throws IOException { -ResultSet rst = null; String keys[] = null; synchronized (this) { int numberOfTries = 2; @@ -487,16 +486,17 @@ public class JDBCStore extends StoreBase } preparedKeysSql.setString(1, getName()); -rst = preparedKeysSql.executeQuery(); -ArrayListString tmpkeys = new ArrayList(); -if (rst != null) { -while (rst.next()) { -tmpkeys.add(rst.getString(1)); +try (ResultSet rst = preparedKeysSql.executeQuery()) { +ArrayListString tmpkeys = new ArrayList(); +if (rst != null) { +while (rst.next()) { +tmpkeys.add(rst.getString(1)); +} } +keys = tmpkeys.toArray(new String[tmpkeys.size()]); +// Break out after the finally block +numberOfTries = 0; } -keys = tmpkeys.toArray(new String[tmpkeys.size()]); -// Break out after the finally block -numberOfTries = 0; } catch (SQLException e) { manager.getContext().getLogger().error(sm.getString(getStoreName() + .SQLException, e)); keys = new String[0]; @@ -504,21 +504,12 @@ public class JDBCStore extends StoreBase if (dbConnection != null) close(dbConnection); } finally { -try { -if (rst != null) { -rst.close(); -} -} catch (SQLException e) { -// Ignore -} - release(_conn); } numberOfTries--; } } - -return (keys); +return keys; } /** @@ -531,7 +522,6 @@ public class JDBCStore extends StoreBase @Override public int getSize() throws IOException { int size = 0; -ResultSet rst = null; synchronized (this) { int numberOfTries = 2; @@ -551,30 +541,24 @@ public class JDBCStore extends StoreBase } preparedSizeSql.setString(1, getName()); -rst = preparedSizeSql.executeQuery(); -if (rst.next()) { -size = rst.getInt(1); +try (ResultSet rst = preparedSizeSql.executeQuery()) { +if (rst.next()) { +size = rst.getInt(1); +} +// Break out after the finally block +numberOfTries = 0; } -// Break out after the finally block -numberOfTries = 0; } catch (SQLException e) {
svn commit: r1581821 - /tomcat/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java
Author: markt Date: Wed Mar 26 13:11:34 2014 New Revision: 1581821 URL: http://svn.apache.org/r1581821 Log: Fix Javadoc Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java?rev=1581821r1=1581820r2=1581821view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/SecureNio2Channel.java Wed Mar 26 13:11:34 2014 @@ -174,7 +174,6 @@ public class SecureNio2Channel extends N * * @return codetrue/code if the network buffer has been flushed out and * is empty else codefalse/code (as a future) - * @throws IOException */ @Override public FutureBoolean flush() { - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: [ANN] ApacheCon NA 2013 Tomcat presentation videos available
2014-03-26 12:18 GMT+01:00 Mark Thomas ma...@apache.org: All, Most (all?) of the presentations from ApacheCon NA 2013 are now available on YouTube. To help you to navigate to the Tomcat presentations we have created this page: http://tomcat.apache.org/presentations.html Nice, I just went and read them. In the most recent presentation, one quick comment on the problem areas of Websockets on Servlets. Actually, I found after the EG discussion that autoblocking works fine as a solution with no deadlock, if it is really an internal autoblocking mechanism (like the semaphore use in NIO2). It is not perfect though, the timeout is different. Rémy
Re: [ANN] ApacheCon NA 2013 Tomcat presentation videos available
On 26/03/2014 13:22, Rémy Maucherat wrote: 2014-03-26 12:18 GMT+01:00 Mark Thomas ma...@apache.org: All, Most (all?) of the presentations from ApacheCon NA 2013 are now available on YouTube. To help you to navigate to the Tomcat presentations we have created this page: http://tomcat.apache.org/presentations.html Nice, I just went and read them. In the most recent presentation, one quick comment on the problem areas of Websockets on Servlets. Actually, I found after the EG discussion that autoblocking works fine as a solution with no deadlock, if it is really an internal autoblocking mechanism (like the semaphore use in NIO2). It is not perfect though, the timeout is different. Yes, it is a solvable problem as long as you drop the self-imposed requirement to run on top of the Servlet API. Now the difficulties are understood, I'm beginning to think about dropping that requirement and using some of the Tomcat internals directly. The blocking/non-blocking gets a whole lot easier very quickly if you do that. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: [ANN] ApacheCon NA 2013 Tomcat presentation videos available
2014-03-26 14:52 GMT+01:00 Mark Thomas ma...@apache.org: Yes, it is a solvable problem as long as you drop the self-imposed requirement to run on top of the Servlet API. Now the difficulties are understood, I'm beginning to think about dropping that requirement and using some of the Tomcat internals directly. The blocking/non-blocking gets a whole lot easier very quickly if you do that. Ok. I don't think it would make much difference in the container code since the upgrade mode is light already and all it needs is to pass down a block flag, but your websocket impl would be able to shed its simulated blocking. Rémy
Re: [ANN] ApacheCon NA 2013 Tomcat presentation videos available
On 26/03/2014 14:08, Rémy Maucherat wrote: 2014-03-26 14:52 GMT+01:00 Mark Thomas ma...@apache.org: Yes, it is a solvable problem as long as you drop the self-imposed requirement to run on top of the Servlet API. Now the difficulties are understood, I'm beginning to think about dropping that requirement and using some of the Tomcat internals directly. The blocking/non-blocking gets a whole lot easier very quickly if you do that. Ok. I don't think it would make much difference in the container code since the upgrade mode is light already and all it needs is to pass down a block flag, but your websocket impl would be able to shed its simulated blocking. I agree completely. I'm becoming less convinced that benefit of running on any container is worth the price of the complexity that the simulated blocking introduced. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1581864 - in /tomcat/trunk: ./ java/org/apache/catalina/startup/
Author: markt Date: Wed Mar 26 14:33:44 2014 New Revision: 1581864 URL: http://svn.apache.org/r1581864 Log: More try-with-resources Modified: tomcat/trunk/TOMCAT-NEXT.txt tomcat/trunk/java/org/apache/catalina/startup/Catalina.java tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java tomcat/trunk/java/org/apache/catalina/startup/ExpandWar.java tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java tomcat/trunk/java/org/apache/catalina/startup/Tomcat.java Modified: tomcat/trunk/TOMCAT-NEXT.txt URL: http://svn.apache.org/viewvc/tomcat/trunk/TOMCAT-NEXT.txt?rev=1581864r1=1581863r2=1581864view=diff == --- tomcat/trunk/TOMCAT-NEXT.txt (original) +++ tomcat/trunk/TOMCAT-NEXT.txt Wed Mar 26 14:33:44 2014 @@ -214,7 +214,7 @@ but possibly 7.1.x). - Use of try with resources - Started. - javax.* complete -- o.a.catalina.[ant to session] complete +- o.a.catalina.[ant to startup] complete - remainder TODO - Catching multiple exceptions - Started Modified: tomcat/trunk/java/org/apache/catalina/startup/Catalina.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/Catalina.java?rev=1581864r1=1581863r2=1581864view=diff == --- tomcat/trunk/java/org/apache/catalina/startup/Catalina.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/Catalina.java Wed Mar 26 14:33:44 2014 @@ -420,29 +420,19 @@ public class Catalina { } Server s = getServer(); -if( s == null ) { +if (s == null) { // Create and execute our Digester Digester digester = createStopDigester(); File file = configFile(); -FileInputStream fis = null; -try { +try (FileInputStream fis = new FileInputStream(file)) { InputSource is = new InputSource(file.toURI().toURL().toString()); -fis = new FileInputStream(file); is.setByteStream(fis); digester.push(this); digester.parse(is); } catch (Exception e) { log.error(Catalina.stop: , e); System.exit(1); -} finally { -if (fis != null) { -try { -fis.close(); -} catch (IOException e) { -// Ignore -} -} } } else { // Server object already present. Must be running as a service @@ -457,11 +447,8 @@ public class Catalina { // Stop the existing server s = getServer(); if (s.getPort()0) { -Socket socket = null; -OutputStream stream = null; -try { -socket = new Socket(s.getAddress(), s.getPort()); -stream = socket.getOutputStream(); +try (Socket socket = new Socket(s.getAddress(), s.getPort()); +OutputStream stream = socket.getOutputStream()) { String shutdown = s.getShutdown(); for (int i = 0; i shutdown.length(); i++) { stream.write(shutdown.charAt(i)); @@ -476,21 +463,6 @@ public class Catalina { } catch (IOException e) { log.error(Catalina.stop: , e); System.exit(1); -} finally { -if (stream != null) { -try { -stream.close(); -} catch (IOException e) { -// Ignore -} -} -if (socket != null) { -try { -socket.close(); -} catch (IOException e) { -// Ignore -} -} } } else { log.error(sm.getString(catalina.stopServer)); @@ -509,7 +481,6 @@ public class Catalina { initDirs(); // Before digester - it may be needed - initNaming(); // Create and execute our Digester @@ -544,7 +515,7 @@ public class Catalina { // This should be included in catalina.jar // Alternative: don't bother with xml, just create it manually. -if( inputStream==null ) { +if (inputStream == null) { try { inputStream = getClass().getClassLoader() .getResourceAsStream(server-embed.xml); @@ -609,14 +580,12 @@ public class Catalina { } else { log.error(Catalina.start, e); } - } long t2 = System.nanoTime(); if(log.isInfoEnabled()) { log.info(Initialization processed in + ((t2
svn commit: r1581867 - in /tomcat/trunk: TOMCAT-NEXT.txt java/org/apache/catalina/storeconfig/StandardContextSF.java java/org/apache/catalina/storeconfig/StoreConfig.java
Author: markt Date: Wed Mar 26 14:40:03 2014 New Revision: 1581867 URL: http://svn.apache.org/r1581867 Log: More try-with-resources Modified: tomcat/trunk/TOMCAT-NEXT.txt tomcat/trunk/java/org/apache/catalina/storeconfig/StandardContextSF.java tomcat/trunk/java/org/apache/catalina/storeconfig/StoreConfig.java Modified: tomcat/trunk/TOMCAT-NEXT.txt URL: http://svn.apache.org/viewvc/tomcat/trunk/TOMCAT-NEXT.txt?rev=1581867r1=1581866r2=1581867view=diff == --- tomcat/trunk/TOMCAT-NEXT.txt (original) +++ tomcat/trunk/TOMCAT-NEXT.txt Wed Mar 26 14:40:03 2014 @@ -214,7 +214,7 @@ but possibly 7.1.x). - Use of try with resources - Started. - javax.* complete -- o.a.catalina.[ant to startup] complete +- o.a.catalina.[ant to storeconfig] complete - remainder TODO - Catching multiple exceptions - Started Modified: tomcat/trunk/java/org/apache/catalina/storeconfig/StandardContextSF.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/storeconfig/StandardContextSF.java?rev=1581867r1=1581866r2=1581867view=diff == --- tomcat/trunk/java/org/apache/catalina/storeconfig/StandardContextSF.java (original) +++ tomcat/trunk/java/org/apache/catalina/storeconfig/StandardContextSF.java Wed Mar 26 14:40:03 2014 @@ -116,7 +116,6 @@ public class StandardContextSF extends S protected void storeContextSeparate(PrintWriter aWriter, int indent, StandardContext aContext) throws Exception { URL configFile = aContext.getConfigFile(); -PrintWriter writer = null; if (configFile != null) { File config = new File(configFile.toURI()); if (!config.isAbsolute()) { @@ -133,25 +132,11 @@ public class StandardContextSF extends S if (log.isInfoEnabled()) log.info(Store Context + aContext.getPath() + separate at file + config); -try { -writer = new PrintWriter(new OutputStreamWriter( -new FileOutputStream(config), getRegistry() -.getEncoding())); +try (FileOutputStream fos = new FileOutputStream(config); +PrintWriter writer = new PrintWriter(new OutputStreamWriter( +fos , getRegistry().getEncoding( { storeXMLHead(writer); super.store(writer, -2, aContext); -} finally { -if (writer != null) { -try { -writer.flush(); -} catch (Exception e) { -// Ignore -} -try { -writer.close(); -} catch (Throwable t) { -// Ignore -} -} } } else { super.store(aWriter, indent, aContext); @@ -190,25 +175,9 @@ public class StandardContextSF extends S + separate with backup (at file + mover.getConfigSave() + )); -PrintWriter writer = null; -try { -writer = mover.getWriter(); +try (PrintWriter writer = mover.getWriter()) { storeXMLHead(writer); super.store(writer, -2, aContext); -} finally { -if (writer != null) { -// Flush and close the output file -try { -writer.flush(); -} catch (Exception e) { -log.error(e); -} -try { -writer.close(); -} catch (Exception e) { -throw (e); -} -} } mover.move(); } Modified: tomcat/trunk/java/org/apache/catalina/storeconfig/StoreConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/storeconfig/StoreConfig.java?rev=1581867r1=1581866r2=1581867view=diff == --- tomcat/trunk/java/org/apache/catalina/storeconfig/StoreConfig.java (original) +++ tomcat/trunk/java/org/apache/catalina/storeconfig/StoreConfig.java Wed Mar 26 14:40:03 2014 @@ -230,24 +230,8 @@ public class StoreConfig implements ISto getRegistry().getEncoding()); // Open an output writer for the new configuration file try { -PrintWriter writer = null; -try { -writer = mover.getWriter(); +try (PrintWriter writer = mover.getWriter()) { store(writer, -2, aServer); -} finally {
svn commit: r1581871 - /tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java
Author: markt Date: Wed Mar 26 14:45:13 2014 New Revision: 1581871 URL: http://svn.apache.org/r1581871 Log: Locks should be outside try/finally Modified: tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java Modified: tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java?rev=1581871r1=1581870r2=1581871view=diff == --- tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java (original) +++ tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java Wed Mar 26 14:45:13 2014 @@ -73,8 +73,8 @@ public class OrderInterceptor extends Ch for (int i=0; idestination.length; i++ ) { try { int nr = 0; +outLock.writeLock().lock(); try { -outLock.writeLock().lock(); nr = incCounter(destination[i]); } finally { outLock.writeLock().unlock(); @@ -103,10 +103,10 @@ public class OrderInterceptor extends Ch int msgnr = XByteBuffer.toInt(msg.getMessage().getBytesDirect(),msg.getMessage().getLength()-4); msg.getMessage().trim(4); MessageOrder order = new MessageOrder(msgnr,(ChannelMessage)msg.deepclone()); +inLock.writeLock().lock(); try { -inLock.writeLock().lock(); if ( processIncoming(order) ) processLeftOvers(msg.getAddress(),false); -}finally { +} finally { inLock.writeLock().unlock(); } } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1581872 - /tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
Author: markt Date: Wed Mar 26 14:48:32 2014 New Revision: 1581872 URL: http://svn.apache.org/r1581872 Log: Locks should be outside try/finally Modified: tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java Modified: tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java?rev=1581872r1=1581871r2=1581872view=diff == --- tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java (original) +++ tomcat/trunk/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java Wed Mar 26 14:48:32 2014 @@ -416,10 +416,9 @@ public abstract class AbstractReplicated } //check to see if the message is diffable MapMessage msg = null; -if (rentry != null rentry.isDiffable() -(isDirty || complete)) { +if (rentry != null rentry.isDiffable() (isDirty || complete)) { +rentry.lock(); try { -rentry.lock(); //construct a diff message msg = new MapMessage(mapContextName, MapMessage.MSG_BACKUP, true, (Serializable) entry.getKey(), null, @@ -432,7 +431,6 @@ public abstract class AbstractReplicated } finally { rentry.unlock(); } - } if (msg == null complete) { //construct a complete @@ -440,7 +438,6 @@ public abstract class AbstractReplicated false, (Serializable) entry.getKey(), (Serializable) entry.getValue(), null, entry.getPrimary(),entry.getBackupNodes()); - } if (msg == null) { //construct a access message @@ -656,8 +653,8 @@ public abstract class AbstractReplicated if (entry.getValue() instanceof ReplicatedMapEntry) { ReplicatedMapEntry diff = (ReplicatedMapEntry) entry.getValue(); if (mapmsg.isDiff()) { +diff.lock(); try { -diff.lock(); diff.applyDiff(mapmsg.getDiffValue(), 0, mapmsg.getDiffValue().length); } catch (Exception x) { log.error(Unable to apply diff to key: + entry.getKey(), x); @@ -1259,8 +1256,8 @@ public abstract class AbstractReplicated public void apply(byte[] data, int offset, int length, boolean diff) throws IOException, ClassNotFoundException { if (isDiffable() diff) { ReplicatedMapEntry rentry = (ReplicatedMapEntry) value; +rentry.lock(); try { -rentry.lock(); rentry.applyDiff(data, offset, length); } finally { rentry.unlock(); - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1581875 - in /tomcat/trunk: ./ java/org/apache/catalina/tribes/group/ java/org/apache/catalina/tribes/group/interceptors/ java/org/apache/catalina/tribes/transport/nio/ java/org/apache/ca
Author: markt Date: Wed Mar 26 14:52:31 2014 New Revision: 1581875 URL: http://svn.apache.org/r1581875 Log: More try-with-resources Modified: tomcat/trunk/TOMCAT-NEXT.txt tomcat/trunk/java/org/apache/catalina/tribes/group/ChannelCoordinator.java tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/NioReplicationTask.java tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/NioSender.java tomcat/trunk/java/org/apache/catalina/users/MemoryUserDatabase.java tomcat/trunk/java/org/apache/catalina/util/ExtensionValidator.java Modified: tomcat/trunk/TOMCAT-NEXT.txt URL: http://svn.apache.org/viewvc/tomcat/trunk/TOMCAT-NEXT.txt?rev=1581875r1=1581874r2=1581875view=diff == --- tomcat/trunk/TOMCAT-NEXT.txt (original) +++ tomcat/trunk/TOMCAT-NEXT.txt Wed Mar 26 14:52:31 2014 @@ -214,7 +214,7 @@ but possibly 7.1.x). - Use of try with resources - Started. - javax.* complete -- o.a.catalina.[ant to storeconfig] complete +- o.a.catalina.[ant to util] complete - remainder TODO - Catching multiple exceptions - Started Modified: tomcat/trunk/java/org/apache/catalina/tribes/group/ChannelCoordinator.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/group/ChannelCoordinator.java?rev=1581875r1=1581874r2=1581875view=diff == --- tomcat/trunk/java/org/apache/catalina/tribes/group/ChannelCoordinator.java (original) +++ tomcat/trunk/java/org/apache/catalina/tribes/group/ChannelCoordinator.java Wed Mar 26 14:52:31 2014 @@ -232,12 +232,9 @@ public class ChannelCoordinator extends startLevel = (startLevel (~svc)); -}catch ( Exception x ) { +} catch (Exception x) { throw new ChannelException(x); -} finally { - } - } @Override Modified: tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java?rev=1581875r1=1581874r2=1581875view=diff == --- tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java (original) +++ tomcat/trunk/java/org/apache/catalina/tribes/group/interceptors/NonBlockingCoordinator.java Wed Mar 26 14:52:31 2014 @@ -507,34 +507,26 @@ public class NonBlockingCoordinator exte } public void memberAdded(Member member,boolean elect) { +if (membership == null) setupMembership(); +if (membership.memberAlive(member)) super.memberAdded(member); try { -if ( membership == null ) setupMembership(); -if ( membership.memberAlive(member) ) super.memberAdded(member); -try { -fireInterceptorEvent(new CoordinationEvent(CoordinationEvent.EVT_MBR_ADD,this,Member add(+member.getName()+))); -if (started elect) startElection(false); -}catch ( ChannelException x ) { -log.error(Unable to start election when member was added.,x); -} -}finally { +fireInterceptorEvent(new CoordinationEvent(CoordinationEvent.EVT_MBR_ADD,this,Member add(+member.getName()+))); +if (started elect) startElection(false); +} catch (ChannelException x) { +log.error(Unable to start election when member was added.,x); } - } @Override public void memberDisappeared(Member member) { +membership.removeMember(member); +super.memberDisappeared(member); try { - -membership.removeMember(member); -super.memberDisappeared(member); -try { -fireInterceptorEvent(new CoordinationEvent(CoordinationEvent.EVT_MBR_DEL,this,Member remove(+member.getName()+))); -if ( started (isCoordinator() || isHighest()) ) -startElection(true); //to do, if a member disappears, only the coordinator can start -}catch ( ChannelException x ) { -log.error(Unable to start election when member was removed.,x); -} -}finally { +fireInterceptorEvent(new CoordinationEvent(CoordinationEvent.EVT_MBR_DEL,this,Member remove(+member.getName()+))); +if (started (isCoordinator() || isHighest())) +startElection(true); //to do, if a member disappears, only the coordinator can start +} catch (ChannelException x) { +log.error(Unable to start election when member
svn commit: r1581888 - /tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java
Author: markt Date: Wed Mar 26 15:31:00 2014 New Revision: 1581888 URL: http://svn.apache.org/r1581888 Log: Locks should be outside try/finally Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java?rev=1581888r1=1581887r2=1581888view=diff == --- tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java (original) +++ tomcat/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java Wed Mar 26 15:31:00 2014 @@ -140,8 +140,8 @@ public class AjpAprProcessor extends Abs boolean writeDone = false; int result = 0; +readLock.lock(); try { -readLock.lock(); if (socketWrapper.getBlockingStatus() == block) { result = Socket.sendbb(socket, pos, len); writeDone = true; @@ -151,14 +151,14 @@ public class AjpAprProcessor extends Abs } if (!writeDone) { +writeLock.lock(); try { -writeLock.lock(); socketWrapper.setBlockingStatus(block); // Set the current settings for this socket Socket.optSet(socket, Socket.APR_SO_NONBLOCK, (block ? 0 : 1)); // Downgrade the lock +readLock.lock(); try { -readLock.lock(); writeLock.unlock(); result = Socket.sendbb(socket, pos, len); } finally { @@ -237,8 +237,8 @@ public class AjpAprProcessor extends Abs boolean readDone = false; int result = 0; +readLock.lock(); try { -readLock.lock(); if (socketWrapper.getBlockingStatus() == block) { result = Socket.recvbb(socket, pos, len); readDone = true; @@ -248,14 +248,14 @@ public class AjpAprProcessor extends Abs } if (!readDone) { +writeLock.lock(); try { -writeLock.lock(); socketWrapper.setBlockingStatus(block); // Set the current settings for this socket Socket.optSet(socket, Socket.APR_SO_NONBLOCK, (block ? 0 : 1)); // Downgrade the lock +readLock.lock(); try { -readLock.lock(); writeLock.unlock(); result = Socket.recvbb(socket, pos, len); } finally { - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1581889 - in /tomcat/trunk/java/org/apache/coyote/http11: InternalAprInputBuffer.java InternalAprOutputBuffer.java InternalNioOutputBuffer.java upgrade/AprServletInputStream.java upgrade/
Author: markt Date: Wed Mar 26 15:36:31 2014 New Revision: 1581889 URL: http://svn.apache.org/r1581889 Log: Locks should be outside try/finally Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletOutputStream.java Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java?rev=1581889r1=1581888r2=1581889view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalAprInputBuffer.java Wed Mar 26 15:36:31 2014 @@ -623,8 +623,8 @@ public class InternalAprInputBuffer exte boolean readDone = false; int result = 0; +readLock.lock(); try { -readLock.lock(); if (wrapper.getBlockingStatus() == block) { result = Socket.recvbb(socket, 0, buf.length - lastValid); readDone = true; @@ -634,8 +634,8 @@ public class InternalAprInputBuffer exte } if (!readDone) { +writeLock.lock(); try { -writeLock.lock(); wrapper.setBlockingStatus(block); // Set the current settings for this socket if (block) { @@ -645,8 +645,8 @@ public class InternalAprInputBuffer exte Socket.timeoutSet(socket, 0); } // Downgrade the lock +readLock.lock(); try { -readLock.lock(); writeLock.unlock(); result = Socket.recvbb(socket, 0, buf.length - lastValid); } finally { Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java?rev=1581889r1=1581888r2=1581889view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java Wed Mar 26 15:36:31 2014 @@ -239,8 +239,8 @@ public class InternalAprOutputBuffer ext Lock readLock = wrapper.getBlockingStatusReadLock(); WriteLock writeLock = wrapper.getBlockingStatusWriteLock(); +readLock.lock(); try { -readLock.lock(); if (wrapper.getBlockingStatus() == block) { writeToSocket(); return; @@ -249,8 +249,8 @@ public class InternalAprOutputBuffer ext readLock.unlock(); } +writeLock.lock(); try { -writeLock.lock(); // Set the current settings for this socket wrapper.setBlockingStatus(block); if (block) { @@ -260,8 +260,8 @@ public class InternalAprOutputBuffer ext } // Downgrade the lock +readLock.lock(); try { -readLock.lock(); writeLock.unlock(); writeToSocket(); } finally { Modified: tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java?rev=1581889r1=1581888r2=1581889view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/InternalNioOutputBuffer.java Wed Mar 26 15:36:31 2014 @@ -141,7 +141,7 @@ public class InternalNioOutputBuffer ext do { if (socket.flush(true,selector,writeTimeout)) break; }while ( true ); -}finally { +} finally { if ( selector != null ) pool.put(selector); } if ( block || bytebuffer.remaining()==0) { Modified: tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java?rev=1581889r1=1581888r2=1581889view=diff == --- tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/upgrade/AprServletInputStream.java Wed Mar 26 15:36:31
svn commit: r1581890 - in /tomcat/trunk: TOMCAT-NEXT.txt java/org/apache/catalina/valves/rewrite/RewriteValve.java
Author: markt Date: Wed Mar 26 15:36:47 2014 New Revision: 1581890 URL: http://svn.apache.org/r1581890 Log: More try-with-resources Modified: tomcat/trunk/TOMCAT-NEXT.txt tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java Modified: tomcat/trunk/TOMCAT-NEXT.txt URL: http://svn.apache.org/viewvc/tomcat/trunk/TOMCAT-NEXT.txt?rev=1581890r1=1581889r2=1581890view=diff == --- tomcat/trunk/TOMCAT-NEXT.txt (original) +++ tomcat/trunk/TOMCAT-NEXT.txt Wed Mar 26 15:36:47 2014 @@ -214,7 +214,8 @@ but possibly 7.1.x). - Use of try with resources - Started. - javax.* complete -- o.a.catalina.[ant to util] complete +- o.a.[catalina to el ] complete +- o.a.jasper in progress - remainder TODO - Catching multiple exceptions - Started Modified: tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java?rev=1581890r1=1581889r2=1581890view=diff == --- tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java (original) +++ tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java Wed Mar 26 15:36:47 2014 @@ -169,18 +169,13 @@ public class RewriteValve extends ValveB return; } -BufferedReader reader = new BufferedReader( -new InputStreamReader(is, StandardCharsets.UTF_8)); - -try { +try (InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8); +BufferedReader reader = new BufferedReader(isr)) { parse(reader); +} catch (IOException ioe) { +container.getLogger().error(Error closing configuration, ioe); } finally { try { -reader.close(); -} catch (IOException e) { -container.getLogger().error(Error closing configuration, e); -} -try { is.close(); } catch (IOException e) { container.getLogger().error(Error closing configuration, e); - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Java 8 support
Hi, As I was looking at 55988, the testsuite seems to have two issues with Java 8 at the moment: - test.name=org/apache/tomcat/util/buf/TestUtf8.java UTF-8 experts wanted ! - test.name=org/apache/jasper/tagplugins/jstl/core/TestForEach.java This would look like a JDT configuration issue or bug, it doesn't care about the default keyword in the newly added Iterator interface method Rémy
svn commit: r1581900 - in /tomcat/trunk: ./ java/org/apache/catalina/startup/ java/org/apache/jasper/compiler/ java/org/apache/jasper/servlet/ java/org/apache/tomcat/util/scan/
Author: markt Date: Wed Mar 26 16:00:10 2014 New Revision: 1581900 URL: http://svn.apache.org/r1581900 Log: More try-with-resources Modified: tomcat/trunk/TOMCAT-NEXT.txt tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java tomcat/trunk/java/org/apache/jasper/compiler/Compiler.java tomcat/trunk/java/org/apache/jasper/compiler/JDTCompiler.java tomcat/trunk/java/org/apache/jasper/compiler/JavacErrorDetail.java tomcat/trunk/java/org/apache/jasper/compiler/ParserController.java tomcat/trunk/java/org/apache/jasper/compiler/ServletWriter.java tomcat/trunk/java/org/apache/jasper/servlet/JspCServletContext.java tomcat/trunk/java/org/apache/jasper/servlet/TldScanner.java tomcat/trunk/java/org/apache/tomcat/util/scan/Jar.java Modified: tomcat/trunk/TOMCAT-NEXT.txt URL: http://svn.apache.org/viewvc/tomcat/trunk/TOMCAT-NEXT.txt?rev=1581900r1=1581899r2=1581900view=diff == --- tomcat/trunk/TOMCAT-NEXT.txt (original) +++ tomcat/trunk/TOMCAT-NEXT.txt Wed Mar 26 16:00:10 2014 @@ -214,8 +214,8 @@ but possibly 7.1.x). - Use of try with resources - Started. - javax.* complete -- o.a.[catalina to el ] complete -- o.a.jasper in progress +- o.a.[catalina to jasper ] complete +- o.a.juli in progress - remainder TODO - Catching multiple exceptions - Started Modified: tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java?rev=1581900r1=1581899r2=1581900view=diff == --- tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java Wed Mar 26 16:00:10 2014 @@ -1655,21 +1655,21 @@ public class ContextConfig implements Li protected void processResourceJARs(SetWebXml fragments) { for (WebXml fragment : fragments) { URL url = fragment.getURL(); -Jar jar = null; try { if (jar.equals(url.getProtocol())) { -jar = JarFactory.newInstance(url); -jar.nextEntry(); -String entryName = jar.getEntryName(); -while (entryName != null) { -if (entryName.startsWith(META-INF/resources/)) { -context.getResources().createWebResourceSet( - WebResourceRoot.ResourceSetType.RESOURCE_JAR, -/, url, /META-INF/resources); -break; -} +try (Jar jar = JarFactory.newInstance(url)) { jar.nextEntry(); -entryName = jar.getEntryName(); +String entryName = jar.getEntryName(); +while (entryName != null) { +if (entryName.startsWith(META-INF/resources/)) { +context.getResources().createWebResourceSet( + WebResourceRoot.ResourceSetType.RESOURCE_JAR, +/, url, /META-INF/resources); +break; +} +jar.nextEntry(); +entryName = jar.getEntryName(); +} } } else if (file.equals(url.getProtocol())) { File file = new File(url.toURI()); @@ -1686,10 +1686,6 @@ public class ContextConfig implements Li } catch (URISyntaxException e) { log.error(sm.getString(contextConfig.resourceJarFail, url, context.getName())); -} finally { -if (jar != null) { -jar.close(); -} } } } @@ -1937,11 +1933,7 @@ public class ContextConfig implements Li protected void processAnnotationsJar(URL url, WebXml fragment, boolean handlesTypesOnly) { -Jar jar = null; - -try { -jar = JarFactory.newInstance(url); - +try (Jar jar = JarFactory.newInstance(url)) { jar.nextEntry(); String entryName = jar.getEntryName(); while (entryName != null) { @@ -1962,10 +1954,6 @@ public class ContextConfig implements Li } } catch (IOException e) { log.error(sm.getString(contextConfig.jarFile, url), e); -} finally { -if (jar != null) { -jar.close(); -} } } Modified: tomcat/trunk/java/org/apache/jasper/compiler/Compiler.java URL:
Re: Java 8 support
On 26/03/2014 15:59, Rémy Maucherat wrote: Hi, As I was looking at 55988, the testsuite seems to have two issues with Java 8 at the moment: - test.name=org/apache/tomcat/util/buf/TestUtf8.java UTF-8 experts wanted ! That will be me. I went over this in great deal when I was looking at UTF-8 failures in the Autobahn WebSocket testing. Hopefully, this means a number of the UTF-8 parsing decoding bugs have been fixed. I'll take a look. Mark - test.name=org/apache/jasper/tagplugins/jstl/core/TestForEach.java This would look like a JDT configuration issue or bug, it doesn't care about the default keyword in the newly added Iterator interface method Rémy - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: Java 8 support
2014-03-26 19:59 GMT+04:00 Rémy Maucherat r...@apache.org: Hi, As I was looking at 55988, the testsuite seems to have two issues with Java 8 at the moment: - test.name=org/apache/tomcat/util/buf/TestUtf8.java UTF-8 experts wanted ! - test.name=org/apache/jasper/tagplugins/jstl/core/TestForEach.java This would look like a JDT configuration issue or bug, it doesn't care about the default keyword in the newly added Iterator interface method 1. Can you cite what the errors are? 2. There is a number of known issues in JDK 1.8.0 itself http://www.oracle.com/technetwork/java/javase/8-known-issues-2157115.html 3. BTW, I usually use test.entry property to run a single test class (as documented in BUILDING.txt), though test.name is more capable. Best regards, Konstantin Kolinko - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: Java 8 support
2014-03-26 17:10 GMT+01:00 Konstantin Kolinko knst.koli...@gmail.com: 1. Can you cite what the errors are? An error occurred at line: [22] in the generated java file: [C:\Work\apache-tomcat-8.0.5-src\output\test-tmp\work\Tomcat\localhost\test\org\apache\jsp\bug5\bug54242_jsp.java] The type new Iterator(){} must implement the inherited abstract method Iterator.forEachRemaining(Consumer) As tested on Windows for the for foreach tag plugin and the Iterator interface. Not a showstopper since the plugin can be disabled. And the other: Testcase: testJvmDecoder took 0 sec FAILED Valid sequence padded from one byte to two expected:2 but was:1 junit.framework.AssertionFailedError: Valid sequence padded from one byte to two expected:2 but was:1 at org.apache.tomcat.util.buf.TestUtf8.doTest(TestUtf8.java:401) at org.apache.tomcat.util.buf.TestUtf8.testJvmDecoder(TestUtf8.java:367) 2. There is a number of known issues in JDK 1.8.0 itself http://www.oracle.com/technetwork/java/javase/8-known-issues-2157115.html Ok. 3. BTW, I usually use test.entry property to run a single test class (as documented in BUILDING.txt), though test.name is more capable. Well, it worked for me. Rémy
[Bug 56313] Tomcat 8 crashes in tcnative-1.dll+0x7923
https://issues.apache.org/bugzilla/show_bug.cgi?id=56313 --- Comment #9 from Christopher Schultz ch...@christopherschultz.net --- Could you provide a JMeter test case? I'm sure that would be helpful. I'm not win32 dev, but I'm sure something that can reproduce the issue would be helpful to whoever looks at this. -- 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: Running Tomcat under Eclipse Debugger
Konstantin, On 3/25/14, 4:30 PM, Konstantin Kolinko wrote: 2014-03-26 0:20 GMT+04:00 Christopher Schultz ch...@christopherschultz.net: All, I've only just started running Tomcat under the Eclipse Debugger and it seemed to take forever to launch -- due to web application deployment. See below for the catalina.out log for a launch this morning. Did you follow the documented recipe, or just tried to start it from within Eclipse? I used the recipe, including using the start-tomcat Run Configuration that Tomcat provides. Note the initial log timestamp (10:54:57) and the final one (11:00:59). That's 4 minutes to launch and deploy docs, examples, host-manager, manager, and ROOT. That seems like an awfully long time. A thread dump ? I observed a couple of thread dumps during the deployment. I caught a lot of BCEL analysis and resource lookups. I could post some full dups if you think that would be helpful. It didn't look like it was stuck anywhere... just taking forever to load. I'm running on Oracle Java 1.7.0-51 64-bit, Mac OS X 10.9, Eclipse Kepler (why can't they use sane version numbers?). Kepler is a yearly simultaneous release. Each component in Eclipse has its own version number. Kepler = 4.3 (4.3.2 now). http://www.eclipse.org/downloads/ http://www.eclipse.org/kepler/ Max heap size looks like 2GiB (JVM default, not specified in the command-line), though it's not anywhere near that limit. Intel i7 single-chip, quad-core ht CPU, so 8 logical cores. 8 GiB of RAM. Any ideas? Or is that just the cost of the debugger? Thanks, -chris Mar 25, 2014 10:54:57 AM org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /Users/chris/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:. Mar 25, 2014 10:54:58 AM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler [http-nio-8080] Mar 25, 2014 10:54:58 AM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector INFO: Using a shared selector for servlet write/read Mar 25, 2014 10:54:58 AM org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler [ajp-nio-8009] Mar 25, 2014 10:54:58 AM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector INFO: Using a shared selector for servlet write/read Mar 25, 2014 10:54:58 AM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 578 ms Mar 25, 2014 10:54:58 AM org.apache.catalina.core.StandardService startInternal INFO: Starting service Catalina Mar 25, 2014 10:54:58 AM org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/@VERSION@ Mar 25, 2014 10:54:58 AM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory /Users/chris/Documents/Eclipse/tomcat-trunk/output/build/webapps/docs Mar 25, 2014 10:56:52 AM org.apache.jasper.servlet.TldScanner scanJars INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. Mar 25, 2014 10:56:53 AM org.apache.catalina.util.SessionIdGenerator createSecureRandom INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [377] milliseconds. Mar 25, 2014 10:56:53 AM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory /Users/chris/Documents/Eclipse/tomcat-trunk/output/build/webapps/examples Mar 25, 2014 10:59:01 AM org.apache.catalina.core.ApplicationContext log INFO: ContextListener: contextInitialized() Mar 25, 2014 10:59:01 AM org.apache.catalina.core.ApplicationContext log INFO: SessionListener: contextInitialized() Mar 25, 2014 10:59:01 AM org.apache.catalina.startup.HostConfig deployDirectory INFO: Deploying web application directory /Users/chris/Documents/Eclipse/tomcat-trunk/output/build/webapps/host-manager Mar 25, 2014 10:59:04 AM org.apache.jasper.servlet.TldScanner scanJars INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that Enable debug logging for org.apache.jasper.servlet.TldScanner ? I will certainly be doing that. We probably ought to mark the JARs in the stock webapps as not requiring JAR-scanning unless they actually need it. Thanks, -chris signature.asc Description: OpenPGP digital signature
[Bug 56318] Oracle DB cursors are leaking when using org.apache.tomcat.jdbc.pool.DataSourceFactory
https://issues.apache.org/bugzilla/show_bug.cgi?id=56318 --- Comment #2 from Christopher Schultz ch...@christopherschultz.net --- Have you enabled abandoned logging? I believe tomcat-pool is less kind than DBCP when you have resource leaks in your application. -- 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 56313] Tomcat 8 crashes in tcnative-1.dll+0x7923
https://issues.apache.org/bugzilla/show_bug.cgi?id=56313 Timcesq ti_m...@poczta.fm changed: What|Removed |Added OS|All |Windows 8 -- 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 56313] Tomcat 8 crashes in tcnative-1.dll+0x7923
https://issues.apache.org/bugzilla/show_bug.cgi?id=56313 --- Comment #10 from Timcesq ti_m...@poczta.fm --- Created attachment 31441 -- https://issues.apache.org/bugzilla/attachment.cgi?id=31441action=edit JMeter test plan -- 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 failure in ASF Buildbot on tomcat-trunk
The Buildbot has detected a new failure on builder tomcat-trunk while building ASF Buildbot. Full details are available at: http://ci.apache.org/builders/tomcat-trunk/builds/5639 Buildbot URL: http://ci.apache.org/ Buildslave for this Build: bb-vm_ubuntu Build Reason: scheduler Build Source Stamp: [branch tomcat/trunk] 1581875 Blamelist: markt BUILD FAILED: failed compile_1 sincerely, -The Buildbot
svn commit: r1582009 - in /tomcat/trunk: java/org/apache/tomcat/util/buf/Utf8Decoder.java test/org/apache/tomcat/util/buf/TestUtf8.java webapps/docs/changelog.xml
Author: markt Date: Wed Mar 26 18:49:43 2014 New Revision: 1582009 URL: http://svn.apache.org/r1582009 Log: (empty) Modified: tomcat/trunk/java/org/apache/tomcat/util/buf/Utf8Decoder.java tomcat/trunk/test/org/apache/tomcat/util/buf/TestUtf8.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/tomcat/util/buf/Utf8Decoder.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/buf/Utf8Decoder.java?rev=1582009r1=1582008r2=1582009view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/buf/Utf8Decoder.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/buf/Utf8Decoder.java Wed Mar 26 18:49:43 2014 @@ -50,7 +50,7 @@ public class Utf8Decoder extends Charset -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 11oy --1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +-1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 111o 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, Modified: tomcat/trunk/test/org/apache/tomcat/util/buf/TestUtf8.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/buf/TestUtf8.java?rev=1582009r1=1582008r2=1582009view=diff == --- tomcat/trunk/test/org/apache/tomcat/util/buf/TestUtf8.java (original) +++ tomcat/trunk/test/org/apache/tomcat/util/buf/TestUtf8.java Wed Mar 26 18:49:43 2014 @@ -56,7 +56,21 @@ public class TestUtf8 { public static final ListUtf8TestCase TEST_CASES = new ArrayList(); +private static int workAroundCount = 0; + static { +// Future proof test and assume some UTF-8 bugs won't get fixed until +// Java 9 or later +// Base assumption in Java 7 +int javaVersion = 7; +try { +Class.forName(java.util.stream.Collector); +javaVersion = 8; +} catch (Exception e) { +// Ignore +} +Utf8TestCase testCase = null; + TEST_CASES.add(new Utf8TestCase( Zero length input, new int[] {}, @@ -88,18 +102,29 @@ public class TestUtf8 { new int[] {0x41, 0xF4, 0x90, 0x80, 0x80, 0x41}, 2, A\uFFFD\uFFFD\uFFFD\uFFFDA).addForJvm(ERROR_POS_PLUS2)); -// JVM decoder does not report error until all 2 bytes are available -TEST_CASES.add(new Utf8TestCase( + +// Java 7 JVM decoder does not report error until all 2 bytes are available +testCase = new Utf8TestCase( Valid sequence padded from one byte to two, new int[] {0x41, 0xC0, 0xC1, 0x41}, 1, -A\uFFFD\uFFFDA).addForJvm(ERROR_POS_PLUS1)); -// JVM decoder does not report error until all 3 bytes are available -TEST_CASES.add(new Utf8TestCase( +A\uFFFD\uFFFDA); +if (javaVersion 8) { +testCase.addForJvm(ERROR_POS_PLUS1); +} +TEST_CASES.add(testCase); + +// Java 7 JVM decoder does not report error until all 3 bytes are available +testCase = new Utf8TestCase( Valid sequence padded from one byte to three, new int[] {0x41, 0xE0, 0x80, 0xC1, 0x41}, 2, -A\uFFFD\uFFFD\uFFFDA).addForJvm(ERROR_POS_PLUS1)); +A\uFFFD\uFFFD\uFFFDA); +if (javaVersion 8) { +testCase.addForJvm(ERROR_POS_PLUS1); +} +TEST_CASES.add(testCase); + // JVM decoder does not report error until all 4 bytes are available TEST_CASES.add(new Utf8TestCase( Valid sequence padded from one byte to four, @@ -111,21 +136,37 @@ public class TestUtf8 { new int[] {0x41, 0xFF, 0x41}, 1, A\uFFFDA)); -TEST_CASES.add(new Utf8TestCase( + +testCase = new Utf8TestCase( Invalid one byte , new int[] {0x41, 0xF0, 0x41}, 2, -A\uFFFDA).addForJvm(REPLACE_SWALLOWS_TRAILER)); -TEST_CASES.add(new Utf8TestCase( +A\uFFFDA); +if (javaVersion 8) { +testCase.addForJvm(REPLACE_SWALLOWS_TRAILER); +} +TEST_CASES.add(testCase); + +testCase = new Utf8TestCase( Invalid one byte 1110 , new int[] {0x41, 0xE0, 0x41}, 2, -A\uFFFDA).addForJvm(REPLACE_SWALLOWS_TRAILER)); -TEST_CASES.add(new Utf8TestCase( +A\uFFFDA); +if (javaVersion 8) { +testCase.addForJvm(REPLACE_SWALLOWS_TRAILER); +}
svn commit: r1582010 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/tomcat/util/buf/Utf8Decoder.java test/org/apache/tomcat/util/buf/TestUtf8.java webapps/docs/changelog.xml
Author: markt Date: Wed Mar 26 18:53:36 2014 New Revision: 1582010 URL: http://svn.apache.org/r1582010 Log: Fix custom UTF-8 decoder so that a byte of value 0xC1 is always rejected immediately as it is never valid in a UTF-8 byte sequence. Update UTF-8 decoder tests to account for UTF-8 decoding improvements in Java 8. The custom UTF-8 decoder is still required due to bugs in the UTF-8 decoder provided by Java. Java 8's decoder is better than Java 7's but it is still buggy. Modified: tomcat/tc7.0.x/trunk/ (props changed) tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/Utf8Decoder.java tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/buf/TestUtf8.java tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Propchange: tomcat/tc7.0.x/trunk/ -- Merged /tomcat/trunk:r1582009 Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/Utf8Decoder.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/Utf8Decoder.java?rev=1582010r1=1582009r2=1582010view=diff == --- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/Utf8Decoder.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/buf/Utf8Decoder.java Wed Mar 26 18:53:36 2014 @@ -49,7 +49,7 @@ public class Utf8Decoder extends Charset -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 11oy --1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +-1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 111o 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, Modified: tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/buf/TestUtf8.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/buf/TestUtf8.java?rev=1582010r1=1582009r2=1582010view=diff == --- tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/buf/TestUtf8.java (original) +++ tomcat/tc7.0.x/trunk/test/org/apache/tomcat/util/buf/TestUtf8.java Wed Mar 26 18:53:36 2014 @@ -57,7 +57,21 @@ public class TestUtf8 { public static final ListUtf8TestCase TEST_CASES = new ArrayListUtf8TestCase(); +private static int workAroundCount = 0; + static { +// Future proof test and assume some UTF-8 bugs won't get fixed until +// Java 9 or later +// Base assumption in Java 7 +int javaVersion = 7; +try { +Class.forName(java.util.stream.Collector); +javaVersion = 8; +} catch (Exception e) { +// Ignore +} +Utf8TestCase testCase = null; + TEST_CASES.add(new Utf8TestCase( Zero length input, new int[] {}, @@ -89,18 +103,29 @@ public class TestUtf8 { new int[] {0x41, 0xF4, 0x90, 0x80, 0x80, 0x41}, 2, A\uFFFD\uFFFD\uFFFD\uFFFDA).addForJvm(ERROR_POS_PLUS2)); -// JVM decoder does not report error until all 2 bytes are available -TEST_CASES.add(new Utf8TestCase( + +// Java 7 JVM decoder does not report error until all 2 bytes are available +testCase = new Utf8TestCase( Valid sequence padded from one byte to two, new int[] {0x41, 0xC0, 0xC1, 0x41}, 1, -A\uFFFD\uFFFDA).addForJvm(ERROR_POS_PLUS1)); -// JVM decoder does not report error until all 3 bytes are available -TEST_CASES.add(new Utf8TestCase( +A\uFFFD\uFFFDA); +if (javaVersion 8) { +testCase.addForJvm(ERROR_POS_PLUS1); +} +TEST_CASES.add(testCase); + +// Java 7 JVM decoder does not report error until all 3 bytes are available +testCase = new Utf8TestCase( Valid sequence padded from one byte to three, new int[] {0x41, 0xE0, 0x80, 0xC1, 0x41}, 2, -A\uFFFD\uFFFD\uFFFDA).addForJvm(ERROR_POS_PLUS1)); +A\uFFFD\uFFFD\uFFFDA); +if (javaVersion 8) { +testCase.addForJvm(ERROR_POS_PLUS1); +} +TEST_CASES.add(testCase); + // JVM decoder does not report error until all 4 bytes are available TEST_CASES.add(new Utf8TestCase( Valid sequence padded from one byte to four, @@ -112,21 +137,37 @@ public class TestUtf8 { new int[] {0x41, 0xFF, 0x41}, 1, A\uFFFDA)); -TEST_CASES.add(new Utf8TestCase( + +testCase = new Utf8TestCase( Invalid one byte , new int[] {0x41, 0xF0, 0x41},
Re: Java 8 support
On 26/03/2014 16:01, Mark Thomas wrote: On 26/03/2014 15:59, Rémy Maucherat wrote: Hi, As I was looking at 55988, the testsuite seems to have two issues with Java 8 at the moment: - test.name=org/apache/tomcat/util/buf/TestUtf8.java UTF-8 experts wanted ! That will be me. I went over this in great deal when I was looking at UTF-8 failures in the Autobahn WebSocket testing. Hopefully, this means a number of the UTF-8 parsing decoding bugs have been fixed. I'll take a look. Not bad. Java 7 fails 33 out of the 53 tests. Java 8 has improved to only 6 out of 53 tests failing. I also discovered a broken test that was hiding a bug in our UTF-8 decoder. I've fixed the test and our decoder. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 56313] Tomcat 8 crashes in tcnative-1.dll+0x7923
https://issues.apache.org/bugzilla/show_bug.cgi?id=56313 Timcesq ti_m...@poczta.fm changed: What|Removed |Added OS||All --- Comment #11 from Timcesq ti_m...@poczta.fm --- I used a debugger to locate the crash address in the source code. It looks like the crash occurs inside the function Java_org_apache_tomcat_jni_Poll_poll, specifically inside the following block: for (i = 0; i num; i++) { tcn_socket_t *s = (tcn_socket_t *)fd-client_data; p-set[i*2+0] = (jlong)(fd-rtnevents); p-set[i*2+1] = P2J(s); if (remove) { apr_pollset_remove(p-pollset, fd); APR_RING_REMOVE(s-pe, link); APR_RING_INSERT_TAIL(p-dead_ring, s-pe, tcn_pfde_t, link); s-pe = NULL; p-nelts--; #ifdef TCN_DO_STATISTICS p-sp_removed++; #endif } else { /* Update last active with the current time * after the poll call. */ s-last_active = now; } fd ++; } The crash address suggests that a read of the s-pe variable inside the if(remove) block fails (the variable is null). -- 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 56313] Tomcat 8 crashes in tcnative-1.dll+0x7923
https://issues.apache.org/bugzilla/show_bug.cgi?id=56313 --- Comment #12 from Timcesq ti_m...@poczta.fm --- What I meant is that the s-pe is NULL, so a read from that address crashes the application. -- 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 56313] Tomcat 8 crashes in tcnative-1.dll+0x7923
https://issues.apache.org/bugzilla/show_bug.cgi?id=56313 --- Comment #13 from Timcesq ti_m...@poczta.fm --- A quick workaround would be to check for NULL before doing the read. However, if the library is designed so that there shouldn't be any NULLs at this point in the code, such patch would only mask the underlying bug (a race condition maybe?). -- 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 propchange: r1582009 - svn:log
Author: kkolinko Revision: 1582009 Modified property: svn:log Modified: svn:log at Wed Mar 26 19:50:41 2014 -- --- svn:log (original) +++ svn:log Wed Mar 26 19:50:41 2014 @@ -0,0 +1,2 @@ +Fix custom UTF-8 decoder so that a byte of value 0xC1 is always rejected immediately as it is never valid in a UTF-8 byte sequence. Update UTF-8 decoder tests to account for UTF-8 decoding improvements in Java 8. +The custom UTF-8 decoder is still required due to bugs in the UTF-8 decoder provided by Java. Java 8's decoder is better than Java 7's but it is still buggy. - 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/5640 Buildbot URL: http://ci.apache.org/ Buildslave for this Build: bb-vm_ubuntu Build Reason: scheduler Build Source Stamp: [branch tomcat/trunk] 1581900 Blamelist: markt Build succeeded! sincerely, -The Buildbot
[Bug 56318] Oracle DB cursors are leaking when using org.apache.tomcat.jdbc.pool.DataSourceFactory
https://issues.apache.org/bugzilla/show_bug.cgi?id=56318 --- Comment #3 from Danila Galimov b...@mail.ru --- No, could you please clarify how can I do 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
svn commit: r1582064 - in /tomcat/trunk: ./ java/org/apache/juli/ java/org/apache/tomcat/buildutil/ java/org/apache/tomcat/util/modeler/ java/org/apache/tomcat/util/net/ java/org/apache/tomcat/util/ne
Author: markt Date: Wed Mar 26 21:22:31 2014 New Revision: 1582064 URL: http://svn.apache.org/r1582064 Log: Complete first pass of try-with-resources Modified: tomcat/trunk/TOMCAT-NEXT.txt tomcat/trunk/java/org/apache/juli/FileHandler.java tomcat/trunk/java/org/apache/tomcat/buildutil/CheckEol.java tomcat/trunk/java/org/apache/tomcat/util/modeler/NotificationInfo.java tomcat/trunk/java/org/apache/tomcat/util/modeler/OperationInfo.java tomcat/trunk/java/org/apache/tomcat/util/net/AbstractEndpoint.java tomcat/trunk/java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanFilter.java tomcat/trunk/test/org/apache/catalina/connector/TestRequest.java tomcat/trunk/test/org/apache/catalina/core/TestStandardContextResources.java tomcat/trunk/test/org/apache/catalina/ha/session/TestSerializablePrincipal.java tomcat/trunk/test/org/apache/catalina/loader/TestWebappClassLoaderThreadLocalMemoryLeak.java tomcat/trunk/test/org/apache/catalina/loader/TestWebappClassLoaderWeaving.java tomcat/trunk/test/org/apache/catalina/nonblocking/TestNonBlockingAPI.java tomcat/trunk/test/org/apache/catalina/servlets/TestDefaultServlet.java tomcat/trunk/test/org/apache/catalina/startup/TestTomcat.java tomcat/trunk/test/org/apache/catalina/startup/TomcatBaseTest.java tomcat/trunk/test/org/apache/tomcat/util/net/TesterSupport.java Modified: tomcat/trunk/TOMCAT-NEXT.txt URL: http://svn.apache.org/viewvc/tomcat/trunk/TOMCAT-NEXT.txt?rev=1582064r1=1582063r2=1582064view=diff == --- tomcat/trunk/TOMCAT-NEXT.txt (original) +++ tomcat/trunk/TOMCAT-NEXT.txt Wed Mar 26 21:22:31 2014 @@ -212,11 +212,7 @@ but possibly 7.1.x). - Use of operator where possible - Complete - Use of try with resources - - Started. -- javax.* complete -- o.a.[catalina to jasper ] complete -- o.a.juli in progress -- remainder TODO + - Complete - Catching multiple exceptions - Started - javax.[annotation to el] complete Modified: tomcat/trunk/java/org/apache/juli/FileHandler.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/juli/FileHandler.java?rev=1582064r1=1582063r2=1582064view=diff == --- tomcat/trunk/java/org/apache/juli/FileHandler.java (original) +++ tomcat/trunk/java/org/apache/juli/FileHandler.java Wed Mar 26 21:22:31 2014 @@ -169,15 +169,14 @@ public class FileHandler String tsString = ts.toString().substring(0, 19); String tsDate = tsString.substring(0, 10); +writerLock.readLock().lock(); try { -writerLock.readLock().lock(); // If the date has changed, switch log files if (rotatable !date.equals(tsDate)) { +// Upgrade to writeLock before we switch +writerLock.readLock().unlock(); +writerLock.writeLock().lock(); try { -// Update to writeLock before we switch -writerLock.readLock().unlock(); -writerLock.writeLock().lock(); - // Make sure another thread hasn't already done this if (!date.equals(tsDate)) { closeWriter(); @@ -185,10 +184,10 @@ public class FileHandler openWriter(); } } finally { -writerLock.writeLock().unlock(); -// Down grade to read-lock. This ensures the writer remains valid +// Downgrade to read-lock. This ensures the writer remains valid // until the log message is written writerLock.readLock().lock(); +writerLock.writeLock().unlock(); } } @@ -408,8 +407,5 @@ public class FileHandler } finally { writerLock.writeLock().unlock(); } - } - - } Modified: tomcat/trunk/java/org/apache/tomcat/buildutil/CheckEol.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/buildutil/CheckEol.java?rev=1582064r1=1582063r2=1582064view=diff == --- tomcat/trunk/java/org/apache/tomcat/buildutil/CheckEol.java (original) +++ tomcat/trunk/java/org/apache/tomcat/buildutil/CheckEol.java Wed Mar 26 21:22:31 2014 @@ -136,11 +136,9 @@ public class CheckEol extends Task { } } -private void check(File file, ListCheckFailure errors, Mode mode) -throws IOException { -BufferedInputStream is = new BufferedInputStream(new FileInputStream( -file)); -try { +private void check(File file, ListCheckFailure errors, Mode
svn commit: r1582066 - /tomcat/trunk/webapps/docs/changelog.xml
Author: markt Date: Wed Mar 26 21:24:08 2014 New Revision: 1582066 URL: http://svn.apache.org/r1582066 Log: Update changelog for try-with-resources 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=1582066r1=1582065r2=1582066view=diff == --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Wed Mar 26 21:24:08 2014 @@ -61,6 +61,12 @@ /fix /changelog /subsection + subsection name=Other +scode + Review source code and take advantage of Java 7apos;s + try-with-resources syntax where possible. (markt) +/scode + /subsection /section section name=Tomcat 8.0.5 (markt) subsection name=Catalina - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 56318] Oracle DB cursors are leaking when using org.apache.tomcat.jdbc.pool.DataSourceFactory
https://issues.apache.org/bugzilla/show_bug.cgi?id=56318 --- Comment #4 from Filip Hanik fha...@apache.org --- Not sure this would be a bug. It is your responsibility to close statements in your application. However, you can configure the pool to do it for you https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer in your config that would look like jdbcInterceptors=org.apache.tomcat.jdbc.pool.interceptor.ConnectionState; org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer Resource auth=Container url=jdbc:oracle:thin:@dgalimov7:1521:DAN2 driverClassName=oracle.jdbc.OracleDriver factory=org.apache.tomcat.jdbc.pool.DataSourceFactory name=jdbc/IpbDB username=dgalimov_home_new password=dgalimov_home_new type=javax.sql.DataSource timeBetweenEvictionRunsMillis=1 maxActive=25 maxIdle=3 minIdle=0 maxWait=3 testOnBorrow=true testOnReturn=true validationQuery=SELECT 1 FROM DUAL jdbcInterceptors=org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer / -- 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 56310] PooledConnection and XAConnection not handled correctly
https://issues.apache.org/bugzilla/show_bug.cgi?id=56310 Filip Hanik fha...@apache.org changed: What|Removed |Added Status|NEW |NEEDINFO --- Comment #1 from Filip Hanik fha...@apache.org --- (In reply to Jonathan Pierce from comment #0) For example, getPooledConnection().getConnection().close() should return the connection to the pool, not close the physical connection. http://docs.oracle.com/javase/7/docs/api/javax/sql/ConnectionPoolDataSource.html#getPooledConnection() - Attempts to establish a physical database connection that can be used as a pooled connection. http://docs.oracle.com/javase/7/docs/api/javax/sql/PooledConnection.html#getConnection() - Creates and returns a Connection object that is a handle for the physical connection that this PooledConnection object represents. Jonathan, thank you for your report. Overall, I do believe that the fix is that org.apache.tomcat.jdbc.pool.DataSource should NOT implement the javax.sql.ConnectionPoolDataSource interface. The ConnectionPoolDataSource/PooledConnection interface are to be used by pool, instead of being provided by pool. An application programmer does not use the PooledConnection interface directly; rather, it is used by a middle tier infrastructure that manages the pooling of connections. I'd like to learn more about your use case, and why it is using that interface at all. -- 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
[GUMP@vmgump]: Project tomcat-trunk-validate (in module tomcat-trunk) failed
To whom it may engage... This is an automated request, but not an unsolicited one. For more information please visit http://gump.apache.org/nagged.html, and/or contact the folk at gene...@gump.apache.org. Project tomcat-trunk-validate has an issue affecting its community integration. This issue affects 1 projects, and has been outstanding for 29 runs. The current state of this project is 'Failed', with reason 'Build Failed'. For reference only, the following projects are affected by this: - tomcat-trunk-validate : Tomcat 8.x, a web server implementing the Java Servlet 3.1, ... Full details are available at: http://vmgump.apache.org/gump/public/tomcat-trunk/tomcat-trunk-validate/index.html That said, some information snippets are provided here. The following annotations (debug/informational/warning/error messages) were provided: -DEBUG- Dependency on checkstyle exists, no need to add for property checkstyle.jar. -INFO- Failed with reason build failed The following work was performed: http://vmgump.apache.org/gump/public/tomcat-trunk/tomcat-trunk-validate/gump_work/build_tomcat-trunk_tomcat-trunk-validate.html Work Name: build_tomcat-trunk_tomcat-trunk-validate (Type: Build) Work ended in a state of : Failed Elapsed: 24 secs Command Line: /usr/lib/jvm/java-7-oracle/bin/java -Djava.awt.headless=true -Dbuild.sysclasspath=only org.apache.tools.ant.Main -Dgump.merge=/srv/gump/public/gump/work/merge.xml -Dcheckstyle.jar=/srv/gump/public/workspace/checkstyle/target/checkstyle-5.7-SNAPSHOT.jar -Dexecute.validate=true validate [Working Directory: /srv/gump/public/workspace/tomcat-trunk] CLASSPATH: /usr/lib/jvm/java-7-oracle/lib/tools.jar:/srv/gump/public/workspace/ant/dist/lib/ant.jar:/srv/gump/public/workspace/ant/dist/lib/ant-launcher.jar:/srv/gump/public/workspace/ant/dist/lib/ant-jmf.jar:/srv/gump/public/workspace/ant/dist/lib/ant-junit.jar:/srv/gump/public/workspace/ant/dist/lib/ant-junit4.jar:/srv/gump/public/workspace/ant/dist/lib/ant-swing.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-resolver.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-xalan2.jar:/srv/gump/public/workspace/xml-commons/java/build/resolver.jar:/srv/gump/packages/antlr/antlr-3.1.3.jar:/srv/gump/public/workspace/checkstyle/target/checkstyle-5.7-SNAPSHOT.jar:/srv/gump/public/workspace/apache-commons/beanutils/dist/commons-beanutils-20140327.jar:/srv/gump/public/workspace/apache-commons/cli/target/commons-cli-1.3-SNAPSHOT.jar:/srv/gump/public/workspace/commons-collections-3.x/target/commons-collections-3.3-SNAPSHOT.jar:/srv/gump/public/workspace/apache-commons/exec/tar get/commons-exec-1.3-SNAPSHOT.jar:/srv/gump/public/workspace/apache-commons/logging/target/commons-logging-20140327.jar:/srv/gump/public/workspace/apache-commons/logging/target/commons-logging-api-20140327.jar:/srv/gump/public/workspace/apache-commons/validator/dist/commons-validator-20140327.jar:/srv/gump/public/workspace/google-guava/guava/target/guava-17.0-SNAPSHOT.jar:/srv/gump/packages/javamail-1.4/mail.jar:/srv/gump/packages/javamail-1.4/lib/mailapi.jar:/srv/gump/packages/jaf-1.1ea/activation.jar - Buildfile: /srv/gump/public/workspace/tomcat-trunk/build.xml build-prepare: [delete] Deleting directory /srv/gump/public/workspace/tomcat-trunk/output/build/temp [mkdir] Created dir: /srv/gump/public/workspace/tomcat-trunk/output/build/temp compile-prepare: download-validate: proxyflags: setproxy: testexist: [echo] Testing for /srv/gump/public/workspace/checkstyle/target/checkstyle-5.7-SNAPSHOT.jar downloadzip: validate: [mkdir] Created dir: /srv/gump/public/workspace/tomcat-trunk/output/res/checkstyle [checkstyle] Running Checkstyle 5.7-SNAPSHOT on 2777 files [checkstyle] /srv/gump/public/workspace/tomcat-trunk/webapps/docs/changelog.xml:67: Line matches the illegal pattern '\s+$'. BUILD FAILED /srv/gump/public/workspace/tomcat-trunk/build.xml:539: Got 1 errors and 0 warnings. Total time: 24 seconds - To subscribe to this information via syndicated feeds: - RSS: http://vmgump.apache.org/gump/public/tomcat-trunk/tomcat-trunk-validate/rss.xml - Atom: http://vmgump.apache.org/gump/public/tomcat-trunk/tomcat-trunk-validate/atom.xml == Gump Tracking Only === Produced by Apache Gump(TM) version 2.3. Gump Run 2014032705, vmgump.apache.org:vmgump:2014032705 Gump E-mail Identifier (unique within run) #3. -- Apache Gump http://gump.apache.org/ [Instance: vmgump] - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org