Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Cannot Reproduce
-
Affects Version/s: 1.1.4
-
Fix Version/s: 1.2.1
-
Component/s: Jetty
-
Labels:None
-
Environment:Ubuntu Oneiric Ocelot
java version "1.7.0_147-icedtea"
OpenJDK Runtime Environment (IcedTea7 2.0) (7~b147-2.0-0ubuntu0.11.10.1)
OpenJDK Server VM (build 21.0-b17, mixed mode)
jetty-distribution-8.0.4.v20111024
-
Complexity:Intermediate
-
Tested on JDKs:java version "1.7.0_147-icedtea" OpenJDK Runtime Environment (IcedTea7 2.0) (7~b147-2.0-0ubuntu0.11.10.1) OpenJDK Server VM (build 21.0-b17, mixed mode)
-
Number of attachments :
Description
When deploying using cargo to a jetty 6 instance with the latest cargo-jetty-deployer.war (from trunk), I get the following error
2011-11-22 10:03:08.175:WARN:oejw.WebAppContext:Failed startup of context o.e.j.w.WebAppContext{/test,file:/tmp/jetty-0.0.0.0-8080-test.war-_test-any-/webapp/},/home/pablosaavedra/applications/jetty-distribution-8.0.4.v20111024/webapps/test.war
java.io.FileNotFoundException: /tmp/jetty-0.0.0.0-8080-test.war-_test-any-/webapp/WEB-INF/lib/wstx-asl-3.2.8.jar (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at org.eclipse.jetty.util.resource.FileResource.getInputStream(FileResource.java:276)
at org.eclipse.jetty.webapp.JarScanner.matched(JarScanner.java:145)
at org.eclipse.jetty.util.PatternMatcher.matchPatterns(PatternMatcher.java:82)
at org.eclipse.jetty.util.PatternMatcher.match(PatternMatcher.java:64)
at org.eclipse.jetty.webapp.JarScanner.scan(JarScanner.java:78)
at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:630)
at org.eclipse.jetty.annotations.AnnotationParser.parse(AnnotationParser.java:639)
at org.eclipse.jetty.annotations.AnnotationConfiguration.parseWebInfLib(AnnotationConfiguration.java:341)
at org.eclipse.jetty.annotations.AnnotationConfiguration.configure(AnnotationConfiguration.java:99)
at org.eclipse.jetty.webapp.WebAppContext.configure(WebAppContext.java:427)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1207)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:610)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:453)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at org.codehaus.cargo.deployer.jetty.DeployerServlet.deployArchive(DeployerServlet.java:271)
at org.codehaus.cargo.deployer.jetty.DeployerServlet.doPut(DeployerServlet.java:204)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:758)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:558)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:488)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:483)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:973)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:417)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:907)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
at org.eclipse.jetty.server.Server.handle(Server.java:346)
at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:442)
at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:941)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:893)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:224)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:51)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
at java.lang.Thread.run(Thread.java:722)
After this, the application starts fine but jetty reports the application as unavailable. It looks like a race condition of sorts.
I did some further research, and the problem is that the deployment scanner picks the war file while it's still being copied, triggering an auto deployment but without a complete archive.
Copying the file to another location (temp directory, for instance) solves the issue, but that might have undesired side effects