Author: markt
Date: Wed Sep 22 14:56:26 2010
New Revision: 1000014
URL: http://svn.apache.org/viewvc?rev=1000014&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49030
Failure of one connector should not leave some connectors started and some
ignored
Modified:
tomcat/tc6.0.x/trunk/STATUS.txt
tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/Connector.java
tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/MapperListener.java
tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties
tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardService.java
tomcat/tc6.0.x/trunk/java/org/apache/jk/common/ChannelSocket.java
tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
Modified: tomcat/tc6.0.x/trunk/STATUS.txt
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=1000014&r1=1000013&r2=1000014&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/STATUS.txt (original)
+++ tomcat/tc6.0.x/trunk/STATUS.txt Wed Sep 22 14:56:26 2010
@@ -66,13 +66,6 @@ PATCHES PROPOSED TO BACKPORT:
system property, but defaults to the old behaviour.
-* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49030
- Failure of one connector should not leave some connectors started and some
- ignored
- https://issues.apache.org/bugzilla/attachment.cgi?id=25633
- +1: kkolinko, markt, mturk
- -1:
-
* Configure Tomcat to use HttpOnly for session cookies by default
http://people.apache.org/~kkolinko/patches/2010-04-21_tc6_context_httpOnly.patch
+1: kkolinko
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/Connector.java
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/Connector.java?rev=1000014&r1=1000013&r2=1000014&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/Connector.java
(original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/Connector.java Wed
Sep 22 14:56:26 2010
@@ -18,7 +18,6 @@
package org.apache.catalina.connector;
-import java.net.URLEncoder;
import java.util.HashMap;
import javax.management.MBeanRegistration;
@@ -1259,4 +1258,18 @@ public class Connector
getService().removeConnector(this);
}
+ /**
+ * Provide a useful toString() implementation as it may be used when
logging
+ * Lifecycle errors to identify the component.
+ */
+ @Override
+ public String toString() {
+ // Not worth caching this right now
+ StringBuilder sb = new StringBuilder("Connector[");
+ sb.append(getProtocol());
+ sb.append('-');
+ sb.append(getPort());
+ sb.append(']');
+ return sb.toString();
+ }
}
Modified:
tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/MapperListener.java
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/MapperListener.java?rev=1000014&r1=1000013&r2=1000014&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/MapperListener.java
(original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/MapperListener.java
Wed Sep 22 14:56:26 2010
@@ -169,8 +169,10 @@ public class MapperListener
* unregister this from JMImplementation:type=MBeanServerDelegate
*/
public void destroy() {
+ if (mBeanServer == null) {
+ return;
+ }
try {
-
ObjectName objectName = new ObjectName(
"JMImplementation:type=MBeanServerDelegate");
mBeanServer.removeNotificationListener(objectName, this);
Modified:
tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties?rev=1000014&r1=1000013&r2=1000014&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties
(original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties
Wed Sep 22 14:56:26 2010
@@ -179,6 +179,10 @@ standardServer.initialize.initialized=Th
standardServer.start.connectors=At least one connector is not associated with
any container
standardServer.start.started=This server has already been started
standardServer.stop.notStarted=This server has not yet been started
+standardService.connector.initFailed=Failed to initialize connector [{0}]
+standardService.connector.pauseFailed=Failed to pause connector [{0}]
+standardService.connector.startFailed=Failed to start connector [{0}]
+standardService.connector.stopFailed=Failed to stop connector [{0}]
standardService.initialize.initialized=This service has already been
initialized
standardService.initialize.failed=Service initializing at {0} failed
standardService.register.failed=Error registering Service at domain {0}
Modified:
tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardService.java
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardService.java?rev=1000014&r1=1000013&r2=1000014&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardService.java
(original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardService.java Wed
Sep 22 14:56:26 2010
@@ -266,7 +266,9 @@ public class StandardService
try {
connector.initialize();
} catch (LifecycleException e) {
- log.error("Connector.initialize", e);
+ log.error(sm.getString(
+ "standardService.connector.initFailed",
+ connector), e);
}
}
@@ -274,7 +276,9 @@ public class StandardService
try {
((Lifecycle) connector).start();
} catch (LifecycleException e) {
- log.error("Connector.start", e);
+ log.error(sm.getString(
+ "standardService.connector.startFailed",
+ connector), e);
}
}
@@ -338,7 +342,9 @@ public class StandardService
try {
((Lifecycle) connectors[j]).stop();
} catch (LifecycleException e) {
- log.error("Connector.stop", e);
+ log.error(sm.getString(
+ "standardService.connector.stopFailed",
+ connectors[j]), e);
}
}
connectors[j].setContainer(null);
@@ -530,8 +536,13 @@ public class StandardService
// Start our defined Connectors second
synchronized (connectors) {
for (int i = 0; i < connectors.length; i++) {
- if (connectors[i] instanceof Lifecycle)
+ try {
((Lifecycle) connectors[i]).start();
+ } catch (Exception e) {
+ log.error(sm.getString(
+ "standardService.connector.startFailed",
+ connectors[i]), e);
+ }
}
}
@@ -563,7 +574,13 @@ public class StandardService
// Stop our defined Connectors first
synchronized (connectors) {
for (int i = 0; i < connectors.length; i++) {
- connectors[i].pause();
+ try {
+ connectors[i].pause();
+ } catch (Exception e) {
+ log.error(sm.getString(
+ "standardService.connector.pauseFailed",
+ connectors[i]), e);
+ }
}
}
@@ -592,8 +609,13 @@ public class StandardService
// Stop our defined Connectors first
synchronized (connectors) {
for (int i = 0; i < connectors.length; i++) {
- if (connectors[i] instanceof Lifecycle)
+ try {
((Lifecycle) connectors[i]).stop();
+ } catch (Exception e) {
+ log.error(sm.getString(
+ "standardService.connector.stopFailed",
+ connectors[i]), e);
+ }
}
}
@@ -676,9 +698,19 @@ public class StandardService
// Initialize our defined Connectors
synchronized (connectors) {
- for (int i = 0; i < connectors.length; i++) {
+ for (int i = 0; i < connectors.length; i++) {
+ try {
connectors[i].initialize();
+ } catch (Exception e) {
+ String message = sm.getString(
+ "standardService.connector.initFailed",
+ connectors[i]);
+ log.error(message, e);
+
+ if
(Boolean.getBoolean("org.apache.catalina.startup.EXIT_ON_INIT_FAILURE"))
+ throw new LifecycleException(message);
}
+ }
}
}
Modified: tomcat/tc6.0.x/trunk/java/org/apache/jk/common/ChannelSocket.java
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/jk/common/ChannelSocket.java?rev=1000014&r1=1000013&r2=1000014&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/jk/common/ChannelSocket.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/jk/common/ChannelSocket.java Wed Sep
22 14:56:26 2010
@@ -509,7 +509,9 @@ public class ChannelSocket extends JkHan
unLockSocket();
}
- sSocket.close(); // XXX?
+ if (sSocket != null) {
+ sSocket.close(); // XXX?
+ }
if( tpOName != null ) {
Registry.getRegistry(null, null).unregisterComponent(tpOName);
Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=1000014&r1=1000013&r2=1000014&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Wed Sep 22 14:56:26 2010
@@ -65,6 +65,10 @@
cause, CVE-2010-1622. (markt)
</fix>
<fix>
+ <bug>49030</bug>: Failure during start of one connector should not
leave
+ some connectors started and some ignored. (kkolinko)
+ </fix>
+ <fix>
<bug>49613</bug>: Improve performance when using SSL for applications
that make multiple class to <code>Request.getAttributeNames()</code>.
Patch provided by Sampo Savolainen. (markt)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]