You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by cd...@apache.org on 2008/11/22 02:40:32 UTC
svn commit: r719787 - in /hadoop/core/trunk: ./ .eclipse.templates/ bin/
lib/ lib/jetty-ext/ lib/jsp-2.1/ src/contrib/hdfsproxy/
src/contrib/hdfsproxy/src/java/org/apache/hadoop/hdfsproxy/
src/contrib/hdfsproxy/src/test/org/apache/hadoop/hdfsproxy/ src...
Author: cdouglas
Date: Fri Nov 21 17:40:30 2008
New Revision: 719787
URL: http://svn.apache.org/viewvc?rev=719787&view=rev
Log:
HADOOP-1650. Upgrade to Jetty 6.
Added:
hadoop/core/trunk/lib/jetty-6.1.14.LICENSE.txt
hadoop/core/trunk/lib/jetty-6.1.14.jar (with props)
hadoop/core/trunk/lib/jetty-util-6.1.14.jar (with props)
hadoop/core/trunk/lib/jsp-2.1/
hadoop/core/trunk/lib/jsp-2.1/core-3.1.1.jar (with props)
hadoop/core/trunk/lib/jsp-2.1/jsp-2.1.jar (with props)
hadoop/core/trunk/lib/jsp-2.1/jsp-api-2.1.jar (with props)
hadoop/core/trunk/lib/servlet-api-2.5-6.1.14.jar (with props)
Removed:
hadoop/core/trunk/lib/jetty-5.1.4.LICENSE.txt
hadoop/core/trunk/lib/jetty-5.1.4.jar
hadoop/core/trunk/lib/jetty-ext/
hadoop/core/trunk/lib/servlet-api.jar
Modified:
hadoop/core/trunk/.eclipse.templates/.classpath
hadoop/core/trunk/CHANGES.txt
hadoop/core/trunk/bin/hadoop
hadoop/core/trunk/src/contrib/hdfsproxy/build.xml
hadoop/core/trunk/src/contrib/hdfsproxy/src/java/org/apache/hadoop/hdfsproxy/HdfsProxy.java
hadoop/core/trunk/src/contrib/hdfsproxy/src/java/org/apache/hadoop/hdfsproxy/ProxyHttpServer.java
hadoop/core/trunk/src/contrib/hdfsproxy/src/test/org/apache/hadoop/hdfsproxy/TestHdfsProxy.java
hadoop/core/trunk/src/core/org/apache/hadoop/http/HttpServer.java
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/NameNode.java
hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java
hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/JobTracker.java
hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/TaskTracker.java
hadoop/core/trunk/src/test/org/apache/hadoop/http/TestGlobalFilter.java
hadoop/core/trunk/src/test/org/apache/hadoop/mapred/NotificationTestCase.java
Modified: hadoop/core/trunk/.eclipse.templates/.classpath
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/.eclipse.templates/.classpath?rev=719787&r1=719786&r2=719787&view=diff
==============================================================================
--- hadoop/core/trunk/.eclipse.templates/.classpath (original)
+++ hadoop/core/trunk/.eclipse.templates/.classpath Fri Nov 21 17:40:30 2008
@@ -21,16 +21,16 @@
<classpathentry kind="lib" path="lib/commons-net-1.4.1.jar"/>
<classpathentry kind="lib" path="lib/hsqldb-1.8.0.10.jar"/>
<classpathentry kind="lib" path="lib/jets3t-0.6.1.jar"/>
- <classpathentry kind="lib" path="lib/jetty-5.1.4.jar"/>
- <classpathentry kind="lib" path="lib/jetty-ext/commons-el.jar"/>
- <classpathentry kind="lib" path="lib/jetty-ext/jasper-compiler.jar"/>
- <classpathentry kind="lib" path="lib/jetty-ext/jasper-runtime.jar"/>
- <classpathentry kind="lib" path="lib/jetty-ext/jsp-api.jar"/>
<classpathentry kind="lib" path="lib/junit-3.8.1.jar"/>
<classpathentry kind="lib" path="lib/kfs-0.2.2.jar"/>
<classpathentry kind="lib" path="lib/log4j-1.2.15.jar"/>
<classpathentry kind="lib" path="lib/oro-2.0.8.jar"/>
- <classpathentry kind="lib" path="lib/servlet-api.jar"/>
+ <classpathentry kind="lib" path="lib/jetty-6.1.14.jar"/>
+ <classpathentry kind="lib" path="lib/jetty-util-6.1.14.jar"/>
+ <classpathentry kind="lib" path="lib/servlet-api-2.5-6.1.14.jar"/>
+ <classpathentry kind="lib" path="lib/jsp-2.1/core-3.1.1.jar"/>
+ <classpathentry kind="lib" path="lib/jsp-2.1/jsp-2.1.jar"/>
+ <classpathentry kind="lib" path="lib/jsp-2.1/jsp-api-2.1.jar"/>
<classpathentry kind="lib" path="lib/slf4j-api-1.4.3.jar"/>
<classpathentry kind="lib" path="lib/slf4j-log4j12-1.4.3.jar"/>
<classpathentry kind="lib" path="lib/xmlenc-0.52.jar"/>
Modified: hadoop/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/CHANGES.txt?rev=719787&r1=719786&r2=719787&view=diff
==============================================================================
--- hadoop/core/trunk/CHANGES.txt (original)
+++ hadoop/core/trunk/CHANGES.txt Fri Nov 21 17:40:30 2008
@@ -33,6 +33,8 @@
HADOOP-4188. Removes task's dependency on concrete filesystems.
(Sharad Agarwal via ddas)
+ HADOOP-1650. Upgrade to Jetty 6. (cdouglas)
+
NEW FEATURES
HADOOP-4575. Add a proxy service for relaying HsftpFileSystem requests.
Modified: hadoop/core/trunk/bin/hadoop
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/bin/hadoop?rev=719787&r1=719786&r2=719787&view=diff
==============================================================================
--- hadoop/core/trunk/bin/hadoop (original)
+++ hadoop/core/trunk/bin/hadoop Fri Nov 21 17:40:30 2008
@@ -142,7 +142,7 @@
CLASSPATH=${CLASSPATH}:$f;
done
-for f in $HADOOP_HOME/lib/jetty-ext/*.jar; do
+for f in $HADOOP_HOME/lib/jsp-2.1/*.jar; do
CLASSPATH=${CLASSPATH}:$f;
done
Added: hadoop/core/trunk/lib/jetty-6.1.14.LICENSE.txt
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/lib/jetty-6.1.14.LICENSE.txt?rev=719787&view=auto
==============================================================================
--- hadoop/core/trunk/lib/jetty-6.1.14.LICENSE.txt (added)
+++ hadoop/core/trunk/lib/jetty-6.1.14.LICENSE.txt Fri Nov 21 17:40:30 2008
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
Added: hadoop/core/trunk/lib/jetty-6.1.14.jar
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/lib/jetty-6.1.14.jar?rev=719787&view=auto
==============================================================================
Binary file - no diff available.
Propchange: hadoop/core/trunk/lib/jetty-6.1.14.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: hadoop/core/trunk/lib/jetty-util-6.1.14.jar
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/lib/jetty-util-6.1.14.jar?rev=719787&view=auto
==============================================================================
Binary file - no diff available.
Propchange: hadoop/core/trunk/lib/jetty-util-6.1.14.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: hadoop/core/trunk/lib/jsp-2.1/core-3.1.1.jar
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/lib/jsp-2.1/core-3.1.1.jar?rev=719787&view=auto
==============================================================================
Binary file - no diff available.
Propchange: hadoop/core/trunk/lib/jsp-2.1/core-3.1.1.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: hadoop/core/trunk/lib/jsp-2.1/jsp-2.1.jar
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/lib/jsp-2.1/jsp-2.1.jar?rev=719787&view=auto
==============================================================================
Binary file - no diff available.
Propchange: hadoop/core/trunk/lib/jsp-2.1/jsp-2.1.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: hadoop/core/trunk/lib/jsp-2.1/jsp-api-2.1.jar
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/lib/jsp-2.1/jsp-api-2.1.jar?rev=719787&view=auto
==============================================================================
Binary file - no diff available.
Propchange: hadoop/core/trunk/lib/jsp-2.1/jsp-api-2.1.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: hadoop/core/trunk/lib/servlet-api-2.5-6.1.14.jar
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/lib/servlet-api-2.5-6.1.14.jar?rev=719787&view=auto
==============================================================================
Binary file - no diff available.
Propchange: hadoop/core/trunk/lib/servlet-api-2.5-6.1.14.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Modified: hadoop/core/trunk/src/contrib/hdfsproxy/build.xml
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/hdfsproxy/build.xml?rev=719787&r1=719786&r2=719787&view=diff
==============================================================================
--- hadoop/core/trunk/src/contrib/hdfsproxy/build.xml (original)
+++ hadoop/core/trunk/src/contrib/hdfsproxy/build.xml Fri Nov 21 17:40:30 2008
@@ -78,19 +78,18 @@
<fileset dir="${hadoop.root}/lib">
<include name="commons-logging-1.0.4.jar"/>
<include name="commons-logging-api-1.0.4.jar"/>
- <include name="jetty-5.1.4.jar"/>
<include name="junit-3.8.1.jar"/>
<include name="log4j-1.2.15.jar"/>
- <include name="servlet-api.jar"/>
<include name="slf4j-api-1.4.3.jar"/>
<include name="slf4j-log4j12-1.4.3.jar"/>
<include name="xmlenc-0.52.jar"/>
+ <include name="jetty-6.1.14.jar"/>
+ <include name="servlet-api-2.5-6.1.14.jar"/>
</fileset>
- <fileset dir="${hadoop.root}/lib/jetty-ext">
- <include name="commons-el.jar"/>
- <include name="jasper-compiler.jar"/>
- <include name="jasper-runtime.jar"/>
- <include name="jsp-api.jar"/>
+ <fileset dir="${hadoop.root}/lib/jsp-2.1">
+ <include name="core-3.1.1.jar"/>
+ <include name="jsp-2.1.jar"/>
+ <include name="jsp-api-2.1.jar"/>
</fileset>
</copy>
Modified: hadoop/core/trunk/src/contrib/hdfsproxy/src/java/org/apache/hadoop/hdfsproxy/HdfsProxy.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/hdfsproxy/src/java/org/apache/hadoop/hdfsproxy/HdfsProxy.java?rev=719787&r1=719786&r2=719787&view=diff
==============================================================================
--- hadoop/core/trunk/src/contrib/hdfsproxy/src/java/org/apache/hadoop/hdfsproxy/HdfsProxy.java (original)
+++ hadoop/core/trunk/src/contrib/hdfsproxy/src/java/org/apache/hadoop/hdfsproxy/HdfsProxy.java Fri Nov 21 17:40:30 2008
@@ -64,7 +64,10 @@
InetSocketAddress nnAddr = NetUtils.createSocketAddr(nn);
LOG.info("HDFS NameNode is at: " + nnAddr.getHostName() + ":" + nnAddr.getPort());
- this.server = new ProxyHttpServer();
+ Configuration sslConf = new Configuration(false);
+ sslConf.addResource(conf.get("hdfsproxy.https.server.keystore.resource",
+ "ssl-server.xml"));
+ this.server = new ProxyHttpServer(sslAddr, sslConf);
this.server.setAttribute("proxy.https.port", sslAddr.getPort());
this.server.setAttribute("name.node.address", nnAddr);
this.server.setAttribute("name.conf", new Configuration());
@@ -74,18 +77,9 @@
this.server.addServlet("streamFile", "/streamFile/*", ProxyStreamFile.class);
}
- /** add an SSL listener */
- private void addSslListener(Configuration conf) throws IOException {
- Configuration sslConf = new Configuration(false);
- sslConf.addResource(conf.get("hdfsproxy.https.server.keystore.resource",
- "ssl-server.xml"));
- server.addSslListener(sslAddr, sslConf);
- }
-
/** add an http listener, only for testing purposes */
- void addListener(InetSocketAddress addr, boolean findPort)
- throws IOException {
- this.server.addListener(addr, findPort);
+ void setListener(InetSocketAddress addr) throws IOException {
+ this.server.setListener(addr);
LOG.warn("An HTTP listener is attached to the proxy server. " +
"It should only be used for testing purposes.");
}
@@ -113,7 +107,8 @@
server.stop();
server.join();
}
- } catch (InterruptedException ie) {
+ } catch (Exception e) {
+ LOG.warn("Got exception shutting down proxy", e);
}
}
@@ -209,7 +204,7 @@
"ssl.server.keystore.type", "jks"));
}
- private static InetSocketAddress getSslAddr(Configuration conf) throws IOException {
+ static InetSocketAddress getSslAddr(Configuration conf) throws IOException {
String addr = conf.get("hdfsproxy.https.address");
if (addr == null)
throw new IOException("HdfsProxy address is not specified");
@@ -275,7 +270,7 @@
StringUtils.startupShutdownMessage(HdfsProxy.class, argv, LOG);
HdfsProxy proxy = new HdfsProxy(conf);
- proxy.addSslListener(conf);
+ //proxy.addSslListener(conf);
proxy.start();
return proxy;
}
Modified: hadoop/core/trunk/src/contrib/hdfsproxy/src/java/org/apache/hadoop/hdfsproxy/ProxyHttpServer.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/hdfsproxy/src/java/org/apache/hadoop/hdfsproxy/ProxyHttpServer.java?rev=719787&r1=719786&r2=719787&view=diff
==============================================================================
--- hadoop/core/trunk/src/contrib/hdfsproxy/src/java/org/apache/hadoop/hdfsproxy/ProxyHttpServer.java (original)
+++ hadoop/core/trunk/src/contrib/hdfsproxy/src/java/org/apache/hadoop/hdfsproxy/ProxyHttpServer.java Fri Nov 21 17:40:30 2008
@@ -27,226 +27,54 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.http.HttpServer;
-import org.mortbay.http.SocketListener;
-import org.mortbay.http.SslListener;
-import org.mortbay.jetty.servlet.Dispatcher;
-import org.mortbay.jetty.servlet.FilterHolder;
-import org.mortbay.jetty.servlet.WebApplicationContext;
-import org.mortbay.jetty.servlet.WebApplicationHandler;
+import org.mortbay.jetty.Connector;
+import org.mortbay.jetty.nio.SelectChannelConnector;
+import org.mortbay.jetty.security.SslSocketConnector;
/**
* Create a Jetty embedded server to answer http/https requests.
*/
-public class ProxyHttpServer {
+public class ProxyHttpServer extends HttpServer {
public static final Log LOG = LogFactory.getLog(ProxyHttpServer.class);
- protected final org.mortbay.jetty.Server webServer;
- protected final WebApplicationContext webAppContext;
- protected SslListener sslListener;
- protected SocketListener listener;
- protected boolean findPort;
-
- /**
- * Create a status server on the given port.
- *
- * @param name
- * The name of the server
- * @param port
- * The port to use on the server
- * @param conf
- * Configuration
- */
- public ProxyHttpServer() throws IOException {
- webServer = new org.mortbay.jetty.Server();
- webAppContext = webServer.addWebApplication("/", "/");
- }
-
- /**
- * Add a servlet to the server.
- *
- * @param name
- * The name of the servlet (can be passed as null)
- * @param pathSpec
- * The path spec for the servlet
- * @param clazz
- * The servlet class
- */
- public void addServlet(String name, String pathSpec,
- Class<? extends HttpServlet> clazz) {
- try {
- if (name == null) {
- webAppContext.addServlet(pathSpec, clazz.getName());
- } else {
- webAppContext.addServlet(name, pathSpec, clazz.getName());
- }
- } catch (ClassNotFoundException cnfe) {
- throw new RuntimeException("Problem instantiating class", cnfe);
- } catch (InstantiationException ie) {
- throw new RuntimeException("Problem instantiating class", ie);
- } catch (IllegalAccessException iae) {
- throw new RuntimeException("Problem instantiating class", iae);
- }
- }
-
- /** add a global filter */
- public void addGlobalFilter(String name, String classname,
- Map<String, String> parameters) {
- final String[] ALL_URLS = { "/*" };
- defineFilter(webAppContext, name, classname, parameters, ALL_URLS);
- LOG.info("Added global filter" + name + " (class=" + classname + ")");
- }
-
- /**
- * Define a filter for a context and set up default url mappings.
- */
- protected void defineFilter(WebApplicationContext ctx, String name,
- String classname, Map<String, String> parameters, String[] urls) {
- WebApplicationHandler handler = ctx.getWebApplicationHandler();
- FilterHolder holder = handler.defineFilter(name, classname);
- if (parameters != null) {
- for (Map.Entry<String, String> e : parameters.entrySet()) {
- holder.setInitParameter(e.getKey(), e.getValue());
- }
- }
- for (String url : urls) {
- handler.addFilterPathMapping(url, name, Dispatcher.__ALL);
- }
- }
-
- /**
- * Set a value in the webapp context.
- *
- * @param name
- * The name of the attribute
- * @param value
- * The value of the attribute
- */
- public void setAttribute(String name, Object value) {
- webAppContext.setAttribute(name, value);
- }
-
- /**
- * Get the value in the webapp context.
- *
- * @param name
- * The name of the attribute
- * @return The value of the attribute
- */
- public Object getAttribute(String name) {
- return webAppContext.getAttribute(name);
- }
-
- /** return the http port that the server is on */
- public int getPort() throws IOException {
- if (listener == null)
- throw new IOException("No http listerner found");
- return listener.getPort();
- }
-
- public void setThreads(int min, int max) {
- sslListener.setMinThreads(min);
- sslListener.setMaxThreads(max);
- }
-
- /**
- * Configure an http listener on the server
- *
- * @param addr
- * address to listen on
- * @param findPort
- * whether the listener should bind the given port and increment by
- * 1 until it finds a free port
- */
- public void addListener(InetSocketAddress addr, boolean findPort)
+ public ProxyHttpServer(InetSocketAddress addr, Configuration conf)
throws IOException {
- if (listener != null || webServer.isStarted()) {
- throw new IOException("Failed to add listener");
- }
- this.findPort = findPort;
- listener = new SocketListener();
- listener.setHost(addr.getHostName());
- listener.setPort(addr.getPort());
- webServer.addListener(listener);
+ super("", addr.getHostName(), addr.getPort(), 0 <= addr.getPort(), conf);
}
- /**
- * Configure an ssl listener on the server.
- *
- * @param addr
- * address to listen on
- * @param sslConf
- * conf to retrieve SSL properties from
- */
- public void addSslListener(InetSocketAddress addr, Configuration sslConf)
+ /** {@inheritDoc} */
+ protected Connector createBaseListener(Configuration conf)
throws IOException {
- if (sslListener != null || webServer.isStarted()) {
- throw new IOException("Failed to add ssl listener");
- }
- sslListener = new SslListener();
- sslListener.setHost(addr.getHostName());
- sslListener.setPort(addr.getPort());
- sslListener.setKeystore(sslConf.get("ssl.server.keystore.location"));
- sslListener.setPassword(sslConf.get("ssl.server.keystore.password", ""));
- sslListener.setKeyPassword(sslConf.get("ssl.server.keystore.keypassword",
- ""));
- sslListener.setKeystoreType(sslConf.get("ssl.server.keystore.type", "jks"));
+ SslSocketConnector sslListener = new SslSocketConnector();
+ sslListener.setKeystore(conf.get("ssl.server.keystore.location"));
+ sslListener.setPassword(conf.get("ssl.server.keystore.password", ""));
+ sslListener.setKeyPassword(conf.get("ssl.server.keystore.keypassword", ""));
+ sslListener.setKeystoreType(conf.get("ssl.server.keystore.type", "jks"));
sslListener.setNeedClientAuth(true);
- webServer.addListener(sslListener);
- System.setProperty("javax.net.ssl.trustStore", sslConf
- .get("ssl.server.truststore.location"));
- System.setProperty("javax.net.ssl.trustStorePassword", sslConf.get(
- "ssl.server.truststore.password", ""));
- System.setProperty("javax.net.ssl.trustStoreType", sslConf.get(
- "ssl.server.truststore.type", "jks"));
+ System.setProperty("javax.net.ssl.trustStore",
+ conf.get("ssl.server.truststore.location", ""));
+ System.setProperty("javax.net.ssl.trustStorePassword",
+ conf.get("ssl.server.truststore.password", ""));
+ System.setProperty("javax.net.ssl.trustStoreType",
+ conf.get("ssl.server.truststore.type", "jks"));
+ return sslListener;
}
/**
- * Start the server. Does not wait for the server to start.
+ * Configure an http listener on the server. Intended solely for unit testing.
+ *
+ * @param addr address to listen on
*/
- public void start() throws IOException {
- try {
- while (true) {
- try {
- webServer.start();
- break;
- } catch (org.mortbay.util.MultiException ex) {
- // if the multi exception contains ONLY a bind exception,
- // then try the next port number.
- boolean needNewPort = false;
- if (ex.size() == 1) {
- Exception sub = ex.getException(0);
- if (sub instanceof java.net.BindException) {
- if (!findPort || listener == null)
- throw sub; // java.net.BindException
- needNewPort = true;
- }
- }
- if (!needNewPort)
- throw ex;
- listener.setPort(listener.getPort() + 1);
- }
- }
- } catch (IOException ie) {
- throw ie;
- } catch (Exception e) {
- IOException ie = new IOException("Problem starting http server");
- ie.initCause(e);
- throw ie;
+ void setListener(InetSocketAddress addr) throws IOException {
+ if (webServer.isStarted()) {
+ throw new IOException("Failed to add listener");
}
- }
-
- /**
- * stop the server
- */
- public void stop() throws InterruptedException {
- webServer.stop();
- }
-
- /**
- * wait for the server
- */
- public void join() throws InterruptedException {
- webServer.join();
+ SelectChannelConnector testlistener = new SelectChannelConnector();
+ testlistener.setUseDirectBuffers(false);
+ testlistener.setHost(addr.getHostName());
+ testlistener.setPort(addr.getPort());
+ webServer.setConnectors(new Connector[] { testlistener });
}
}
Modified: hadoop/core/trunk/src/contrib/hdfsproxy/src/test/org/apache/hadoop/hdfsproxy/TestHdfsProxy.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/contrib/hdfsproxy/src/test/org/apache/hadoop/hdfsproxy/TestHdfsProxy.java?rev=719787&r1=719786&r2=719787&view=diff
==============================================================================
--- hadoop/core/trunk/src/contrib/hdfsproxy/src/test/org/apache/hadoop/hdfsproxy/TestHdfsProxy.java (original)
+++ hadoop/core/trunk/src/contrib/hdfsproxy/src/test/org/apache/hadoop/hdfsproxy/TestHdfsProxy.java Fri Nov 21 17:40:30 2008
@@ -228,7 +228,7 @@
proxy = new HdfsProxy(proxyConf);
InetSocketAddress proxyAddr = NetUtils.createSocketAddr("127.0.0.1:0");
- proxy.addListener(proxyAddr, true);
+ proxy.setListener(proxyAddr);
proxy.start();
final String realProxyAddr = proxyAddr.getHostName() + ":"
+ proxy.getPort();
Modified: hadoop/core/trunk/src/core/org/apache/hadoop/http/HttpServer.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/core/org/apache/hadoop/http/HttpServer.java?rev=719787&r1=719786&r2=719787&view=diff
==============================================================================
--- hadoop/core/trunk/src/core/org/apache/hadoop/http/HttpServer.java (original)
+++ hadoop/core/trunk/src/core/org/apache/hadoop/http/HttpServer.java Fri Nov 21 17:40:30 2008
@@ -19,12 +19,13 @@
import java.io.IOException;
import java.io.PrintWriter;
+import java.net.BindException;
import java.net.InetSocketAddress;
import java.net.URL;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
@@ -36,12 +37,22 @@
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.log.LogLevel;
import org.apache.hadoop.util.ReflectionUtils;
-import org.mortbay.http.SocketListener;
-import org.mortbay.http.SslListener;
-import org.mortbay.jetty.servlet.Dispatcher;
+
+import org.mortbay.jetty.Connector;
+import org.mortbay.jetty.Handler;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.handler.ContextHandlerCollection;
+import org.mortbay.jetty.nio.SelectChannelConnector;
+import org.mortbay.jetty.security.SslSocketConnector;
+import org.mortbay.jetty.servlet.Context;
+import org.mortbay.jetty.servlet.DefaultServlet;
import org.mortbay.jetty.servlet.FilterHolder;
-import org.mortbay.jetty.servlet.WebApplicationContext;
-import org.mortbay.jetty.servlet.WebApplicationHandler;
+import org.mortbay.jetty.servlet.FilterMapping;
+import org.mortbay.jetty.servlet.ServletHandler;
+import org.mortbay.jetty.servlet.ServletHolder;
+import org.mortbay.jetty.webapp.WebAppContext;
+import org.mortbay.thread.QueuedThreadPool;
+import org.mortbay.util.MultiException;
/**
* Create a Jetty embedded server to answer http requests. The primary goal
@@ -57,19 +68,18 @@
static final String FILTER_INITIALIZER_PROPERTY
= "hadoop.http.filter.initializers";
- protected final org.mortbay.jetty.Server webServer;
- protected final WebApplicationContext webAppContext;
- protected final Map<WebApplicationContext, Boolean> defaultContexts =
- new HashMap<WebApplicationContext, Boolean>();
+ protected final Server webServer;
+ protected final Connector listener;
+ protected final WebAppContext webAppContext;
protected final boolean findPort;
- protected final SocketListener listener;
- private SslListener sslListener;
+ protected final Map<Context, Boolean> defaultContexts =
+ new HashMap<Context, Boolean>();
protected final List<String> filterNames = new ArrayList<String>();
/** Same as this(name, bindAddress, port, findPort, null); */
public HttpServer(String name, String bindAddress, int port, boolean findPort
) throws IOException {
- this(name, bindAddress, port, findPort, null);
+ this(name, bindAddress, port, findPort, new Configuration());
}
/**
@@ -83,16 +93,26 @@
*/
public HttpServer(String name, String bindAddress, int port,
boolean findPort, Configuration conf) throws IOException {
- webServer = new org.mortbay.jetty.Server();
+ webServer = new Server();
this.findPort = findPort;
- listener = new SocketListener();
- listener.setPort(port);
+
+ listener = createBaseListener(conf);
listener.setHost(bindAddress);
- webServer.addListener(listener);
+ listener.setPort(port);
+ webServer.addConnector(listener);
+
+ webServer.setThreadPool(new QueuedThreadPool());
final String appDir = getWebAppsPath();
- webAppContext = webServer.addWebApplication("/", appDir + "/" + name);
- addDefaultApps(appDir);
+ ContextHandlerCollection contexts = new ContextHandlerCollection();
+ webServer.setHandler(contexts);
+
+ webAppContext = new WebAppContext();
+ webAppContext.setContextPath("/");
+ webAppContext.setWar(appDir + "/" + name);
+ webServer.addHandler(webAppContext);
+
+ addDefaultApps(contexts, appDir);
final FilterInitializer[] initializers = getFilterInitializers(conf);
if (initializers != null) {
@@ -103,6 +123,21 @@
addDefaultServlets();
}
+ /**
+ * Create a required listener for the Jetty instance listening on the port
+ * provided. This wrapper and all subclasses must create at least one
+ * listener.
+ */
+ protected Connector createBaseListener(Configuration conf)
+ throws IOException {
+ SelectChannelConnector ret = new SelectChannelConnector();
+ ret.setLowResourceMaxIdleTime(10000);
+ ret.setAcceptQueueSize(128);
+ ret.setResolveNames(false);
+ ret.setUseDirectBuffers(false);
+ return ret;
+ }
+
/** Get an array of FilterConfiguration specified in the conf */
private static FilterInitializer[] getFilterInitializers(Configuration conf) {
if (conf == null) {
@@ -127,15 +162,21 @@
* @param appDir The application directory
* @throws IOException
*/
- protected void addDefaultApps(final String appDir) throws IOException {
+ protected void addDefaultApps(ContextHandlerCollection parent,
+ final String appDir) throws IOException {
// set up the context for "/logs/" if "hadoop.log.dir" property is defined.
String logDir = System.getProperty("hadoop.log.dir");
if (logDir != null) {
- addContext("/logs/*", logDir, true);
+ Context logContext = new Context(parent, "/logs");
+ logContext.setResourceBase(logDir);
+ logContext.addServlet(DefaultServlet.class, "/");
+ defaultContexts.put(logContext, true);
}
-
// set up the context for "/static/*"
- addContext("/static/*", appDir + "/static", true);
+ Context staticContext = new Context(parent, "/static");
+ staticContext.setResourceBase(appDir + "/static");
+ staticContext.addServlet(DefaultServlet.class, "/*");
+ defaultContexts.put(staticContext, true);
}
/**
@@ -147,6 +188,12 @@
addServlet("logLevel", "/logLevel", LogLevel.Servlet.class);
}
+ public void addContext(Context ctxt, boolean isFiltered)
+ throws IOException {
+ webServer.addHandler(ctxt);
+ defaultContexts.put(ctxt, isFiltered);
+ }
+
/**
* Add a context
* @param pathSpec The path spec for the context
@@ -155,8 +202,13 @@
* @throws IOException
*/
protected void addContext(String pathSpec, String dir, boolean isFiltered) throws IOException {
- WebApplicationContext webAppCtx = webServer.addWebApplication(pathSpec, dir);
- defaultContexts.put(webAppCtx, isFiltered);
+ if (0 == webServer.getHandlers().length) {
+ throw new RuntimeException("Couldn't find handler");
+ }
+ WebAppContext webAppCtx = new WebAppContext();
+ webAppCtx.setContextPath(pathSpec);
+ webAppCtx.setWar(dir);
+ addContext(webAppCtx, true);
}
/**
@@ -191,19 +243,11 @@
@Deprecated
public void addInternalServlet(String name, String pathSpec,
Class<? extends HttpServlet> clazz) {
- try {
- if (name == null) {
- webAppContext.addServlet(pathSpec, clazz.getName());
- } else {
- webAppContext.addServlet(name, pathSpec, clazz.getName());
- }
- } catch (ClassNotFoundException cnfe) {
- throw new RuntimeException("Problem instantiating class", cnfe);
- } catch (InstantiationException ie) {
- throw new RuntimeException("Problem instantiating class", ie);
- } catch (IllegalAccessException iae) {
- throw new RuntimeException("Problem instantiating class", iae);
+ ServletHolder holder = new ServletHolder(clazz);
+ if (name != null) {
+ holder.setName(name);
}
+ webAppContext.addServlet(holder, pathSpec);
}
/** {@inheritDoc} */
@@ -212,15 +256,13 @@
final String[] USER_FACING_URLS = { "*.html", "*.jsp" };
defineFilter(webAppContext, name, classname, parameters, USER_FACING_URLS);
-
final String[] ALL_URLS = { "/*" };
- for (Map.Entry<WebApplicationContext, Boolean> e : defaultContexts
- .entrySet()) {
+ for (Map.Entry<Context, Boolean> e : defaultContexts.entrySet()) {
if (e.getValue()) {
- WebApplicationContext ctx = e.getKey();
+ Context ctx = e.getKey();
defineFilter(ctx, name, classname, parameters, ALL_URLS);
LOG.info("Added filter " + name + " (class=" + classname
- + ") to context " + ctx.getName());
+ + ") to context " + ctx.getDisplayName());
}
}
filterNames.add(name);
@@ -231,7 +273,7 @@
Map<String, String> parameters) {
final String[] ALL_URLS = { "/*" };
defineFilter(webAppContext, name, classname, parameters, ALL_URLS);
- for (WebApplicationContext ctx : defaultContexts.keySet()) {
+ for (Context ctx : defaultContexts.keySet()) {
defineFilter(ctx, name, classname, parameters, ALL_URLS);
}
LOG.info("Added global filter" + name + " (class=" + classname + ")");
@@ -240,20 +282,19 @@
/**
* Define a filter for a context and set up default url mappings.
*/
- protected void defineFilter(WebApplicationContext ctx, String name,
- String classname, Map<String, String> parameters, String[] urls) {
+ protected void defineFilter(Context ctx, String name,
+ String classname, Map<String,String> parameters, String[] urls) {
- WebApplicationHandler handler = ctx.getWebApplicationHandler();
- FilterHolder holder = handler.defineFilter(name, classname);
- if (parameters != null) {
- for(Map.Entry<String, String> e : parameters.entrySet()) {
- holder.setInitParameter(e.getKey(), e.getValue());
- }
- }
-
- for (String url : urls) {
- handler.addFilterPathMapping(url, name, Dispatcher.__ALL);
- }
+ FilterHolder holder = new FilterHolder();
+ holder.setName(name);
+ holder.setClassName(classname);
+ holder.setInitParameters(parameters);
+ FilterMapping fmap = new FilterMapping();
+ fmap.setPathSpecs(urls);
+ fmap.setDispatches(Handler.ALL);
+ fmap.setFilterName(name);
+ ServletHandler handler = ctx.getServletHandler();
+ handler.addFilter(holder, fmap);
}
/**
@@ -261,10 +302,15 @@
* @param pathSpec The path spec
* @param webAppCtx The WebApplicationContext to add to
*/
- protected void addFilterPathMapping(String pathSpec, WebApplicationContext webAppCtx) {
- WebApplicationHandler handler = webAppCtx.getWebApplicationHandler();
+ protected void addFilterPathMapping(String pathSpec,
+ Context webAppCtx) {
+ ServletHandler handler = webAppCtx.getServletHandler();
for(String name : filterNames) {
- handler.addFilterPathMapping(pathSpec, name, Dispatcher.__ALL);
+ FilterMapping fmap = new FilterMapping();
+ fmap.setPathSpec(pathSpec);
+ fmap.setFilterName(name);
+ fmap.setDispatches(Handler.ALL);
+ handler.addFilterMapping(fmap);
}
}
@@ -294,12 +340,16 @@
* @return the port
*/
public int getPort() {
- return listener.getPort();
+ return webServer.getConnectors()[0].getLocalPort();
}
+ /**
+ * Set the min, max number of worker threads (simultaneous connections).
+ */
public void setThreads(int min, int max) {
- listener.setMinThreads(min);
- listener.setMaxThreads(max);
+ QueuedThreadPool pool = (QueuedThreadPool) webServer.getThreadPool() ;
+ pool.setMinThreads(min);
+ pool.setMaxThreads(max);
}
/**
@@ -313,16 +363,16 @@
@Deprecated
public void addSslListener(InetSocketAddress addr, String keystore,
String storPass, String keyPass) throws IOException {
- if (sslListener != null || webServer.isStarted()) {
+ if (webServer.isStarted()) {
throw new IOException("Failed to add ssl listener");
}
- sslListener = new SslListener();
+ SslSocketConnector sslListener = new SslSocketConnector();
sslListener.setHost(addr.getHostName());
sslListener.setPort(addr.getPort());
sslListener.setKeystore(keystore);
sslListener.setPassword(storPass);
sslListener.setKeyPassword(keyPass);
- webServer.addListener(sslListener);
+ webServer.addConnector(sslListener);
}
/**
@@ -333,7 +383,7 @@
*/
public void addSslListener(InetSocketAddress addr, Configuration sslConf,
boolean needClientAuth) throws IOException {
- if (sslListener != null || webServer.isStarted()) {
+ if (webServer.isStarted()) {
throw new IOException("Failed to add ssl listener");
}
if (needClientAuth) {
@@ -345,7 +395,7 @@
System.setProperty("javax.net.ssl.trustStoreType", sslConf.get(
"ssl.server.truststore.type", "jks"));
}
- sslListener = new SslListener();
+ SslSocketConnector sslListener = new SslSocketConnector();
sslListener.setHost(addr.getHostName());
sslListener.setPort(addr.getPort());
sslListener.setKeystore(sslConf.get("ssl.server.keystore.location"));
@@ -353,7 +403,7 @@
sslListener.setKeyPassword(sslConf.get("ssl.server.keystore.keypassword", ""));
sslListener.setKeystoreType(sslConf.get("ssl.server.keystore.type", "jks"));
sslListener.setNeedClientAuth(needClientAuth);
- webServer.addListener(sslListener);
+ webServer.addConnector(sslListener);
}
/**
@@ -365,39 +415,37 @@
try {
webServer.start();
break;
- } catch (org.mortbay.util.MultiException ex) {
+ } catch (MultiException ex) {
// if the multi exception contains ONLY a bind exception,
// then try the next port number.
- boolean needNewPort = false;
- if(ex.size() == 1) {
- Exception sub = ex.getException(0);
- if (sub instanceof java.net.BindException) {
- if(!findPort)
- throw sub; // java.net.BindException
- needNewPort = true;
+ if (ex.size() == 1 && ex.getThrowable(0) instanceof BindException) {
+ if (!findPort) {
+ throw (BindException) ex.getThrowable(0);
}
- }
- if (!needNewPort)
+ } else {
throw ex;
- listener.setPort(listener.getPort() + 1);
+ }
}
+ listener.setPort(listener.getLocalPort() + 1);
}
} catch (IOException ie) {
throw ie;
} catch (Exception e) {
- IOException ie = new IOException("Problem starting http server");
- ie.initCause(e);
- throw ie;
+ throw new IOException("Problem starting http server", e);
}
}
/**
* stop the server
*/
- public void stop() throws InterruptedException {
+ public void stop() throws Exception {
webServer.stop();
}
+ public void join() throws InterruptedException {
+ webServer.join();
+ }
+
/**
* A very simple servlet to serve up a text representation of the current
* stack traces. It both returns the stacks to the caller and logs them.
Modified: hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java?rev=719787&r1=719786&r2=719787&view=diff
==============================================================================
--- hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java (original)
+++ hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/datanode/DataNode.java Fri Nov 21 17:40:30 2008
@@ -544,6 +544,7 @@
try {
infoServer.stop();
} catch (Exception e) {
+ LOG.warn("Exception shutting down DataNode", e);
}
}
if (ipcServer != null) {
Modified: hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java?rev=719787&r1=719786&r2=719787&view=diff
==============================================================================
--- hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java (original)
+++ hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Fri Nov 21 17:40:30 2008
@@ -463,6 +463,8 @@
if (replthread != null) replthread.interrupt();
if (dnthread != null) dnthread.interrupt();
if (smmthread != null) smmthread.interrupt();
+ } catch (Exception e) {
+ LOG.warn("Exception shutting down FSNamesystem", e);
} finally {
// using finally to ensure we also wait for lease daemon
try {
Modified: hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/NameNode.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/NameNode.java?rev=719787&r1=719786&r2=719787&view=diff
==============================================================================
--- hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/NameNode.java (original)
+++ hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/NameNode.java Fri Nov 21 17:40:30 2008
@@ -271,8 +271,8 @@
stopRequested = true;
try {
if (httpServer != null) httpServer.stop();
- } catch (InterruptedException ie) {
- LOG.error(StringUtils.stringifyException(ie));
+ } catch (Exception e) {
+ LOG.error(StringUtils.stringifyException(e));
}
if(namesystem != null) namesystem.close();
if(emptier != null) emptier.interrupt();
Modified: hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java?rev=719787&r1=719786&r2=719787&view=diff
==============================================================================
--- hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java (original)
+++ hadoop/core/trunk/src/hdfs/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java Fri Nov 21 17:40:30 2008
@@ -182,8 +182,8 @@
shouldRun = false;
try {
if (infoServer != null) infoServer.stop();
- } catch(InterruptedException ie) {
- LOG.warn(StringUtils.stringifyException(ie));
+ } catch (Exception e) {
+ LOG.warn("Exception shutting down SecondaryNameNode", e);
}
try {
if (checkpointImage != null) checkpointImage.close();
Modified: hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/JobTracker.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/JobTracker.java?rev=719787&r1=719786&r2=719787&view=diff
==============================================================================
--- hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/JobTracker.java (original)
+++ hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/JobTracker.java Fri Nov 21 17:40:30 2008
@@ -1317,8 +1317,8 @@
LOG.info("Stopping infoServer");
try {
this.infoServer.stop();
- } catch (InterruptedException ex) {
- ex.printStackTrace();
+ } catch (Exception ex) {
+ LOG.warn("Exception shutting down JobTracker", ex);
}
}
if (this.interTrackerServer != null) {
Modified: hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/TaskTracker.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/TaskTracker.java?rev=719787&r1=719786&r2=719787&view=diff
==============================================================================
--- hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/TaskTracker.java (original)
+++ hadoop/core/trunk/src/mapred/org/apache/hadoop/mapred/TaskTracker.java Fri Nov 21 17:40:30 2008
@@ -781,8 +781,8 @@
try {
LOG.info("Shutting down StatusHttpServer");
this.server.stop();
- } catch (InterruptedException ex) {
- ex.printStackTrace();
+ } catch (Exception e) {
+ LOG.warn("Exception shutting down TaskTracker", e);
}
}
}
Modified: hadoop/core/trunk/src/test/org/apache/hadoop/http/TestGlobalFilter.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/test/org/apache/hadoop/http/TestGlobalFilter.java?rev=719787&r1=719786&r2=719787&view=diff
==============================================================================
--- hadoop/core/trunk/src/test/org/apache/hadoop/http/TestGlobalFilter.java (original)
+++ hadoop/core/trunk/src/test/org/apache/hadoop/http/TestGlobalFilter.java Fri Nov 21 17:40:30 2008
@@ -147,7 +147,8 @@
if (counts[i] == 0) {
assertFalse(COUNTS.containsKey(urls[i]));
} else {
- assertEquals(counts[i], COUNTS.remove(urls[i]).intValue());
+ assertEquals("url[" + i + "]=" + urls[i],
+ Integer.valueOf(counts[i]), COUNTS.remove(urls[i]));
}
}
assertTrue(COUNTS.isEmpty());
Modified: hadoop/core/trunk/src/test/org/apache/hadoop/mapred/NotificationTestCase.java
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/test/org/apache/hadoop/mapred/NotificationTestCase.java?rev=719787&r1=719786&r2=719787&view=diff
==============================================================================
--- hadoop/core/trunk/src/test/org/apache/hadoop/mapred/NotificationTestCase.java (original)
+++ hadoop/core/trunk/src/test/org/apache/hadoop/mapred/NotificationTestCase.java Fri Nov 21 17:40:30 2008
@@ -18,10 +18,9 @@
package org.apache.hadoop.mapred;
-import org.mortbay.http.HttpServer;
-import org.mortbay.http.SocketListener;
-import org.mortbay.http.HttpContext;
-import org.mortbay.jetty.servlet.ServletHandler;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.servlet.Context;
+import org.mortbay.jetty.servlet.ServletHolder;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.io.Text;
@@ -65,48 +64,34 @@
private String contextPath = "/notification";
private Class servletClass = NotificationServlet.class;
private String servletPath = "/mapred";
- private HttpServer server;
+ private Server webServer;
private void startHttpServer() throws Exception {
- // Create the server
- if (server != null) {
- server.stop();
- server = null;
- }
- server = new HttpServer();
-
- // Create a port listener
- SocketListener listener = new SocketListener();
- listener.setPort(0); // letting OS to pickup the PORT
- server.addListener(listener);
-
- // create context
- HttpContext context = new HttpContext();
- context.setContextPath(contextPath + "/*");
+ // Create the webServer
+ if (webServer != null) {
+ webServer.stop();
+ webServer = null;
+ }
+ webServer = new Server(0);
+
+ Context context = new Context(webServer, contextPath);
// create servlet handler
- ServletHandler handler = new ServletHandler();
- handler.addServlet(servletClass.getName(), servletPath,
- servletClass.getName());
-
- // bind servlet handler to context
- context.addHandler(handler);
-
- // bind context to servlet engine
- server.addContext(context);
-
- // Start server
- server.start();
- port = listener.getPort();
+ context.addServlet(new ServletHolder(new NotificationServlet()),
+ servletPath);
+
+ // Start webServer
+ webServer.start();
+ port = webServer.getConnectors()[0].getLocalPort();
}
private void stopHttpServer() throws Exception {
- if (server != null) {
- server.stop();
- server.destroy();
- server = null;
+ if (webServer != null) {
+ webServer.stop();
+ webServer.destroy();
+ webServer = null;
}
}