Skip to content

Make UndertowRequestUpgradeStrategy compatible with Undertow 1.3 [SPR-13494] #18072

Closed
@spring-projects-issues

Description

@spring-projects-issues

Andy Wilkinson opened SPR-13494 and commented

The return type of HttpServerExchange has changed which leads to a NoSuchMethodError when running Spring Framework 4.2.1 against Undertow 1.3:

java.lang.NoSuchMethodError: io.undertow.servlet.websockets.ServletWebSocketHttpExchange.getBufferPool()Lorg/xnio/Pool;
	at org.springframework.web.socket.server.standard.UndertowRequestUpgradeStrategy$1.handleUpgrade(UndertowRequestUpgradeStrategy.java:152) ~[spring-websocket-4.2.1.RELEASE.jar:4.2.1.RELEASE]
	at io.undertow.server.protocol.http.HttpReadListener.exchangeComplete(HttpReadListener.java:350) ~[undertow-core-1.3.0.CR2.jar:1.3.0.CR2]
	at io.undertow.server.protocol.http.HttpServerConnection.exchangeComplete(HttpServerConnection.java:225) ~[undertow-core-1.3.0.CR2.jar:1.3.0.CR2]
	at io.undertow.server.HttpServerExchange.invokeExchangeCompleteListeners(HttpServerExchange.java:1202) ~[undertow-core-1.3.0.CR2.jar:1.3.0.CR2]
	at io.undertow.server.HttpServerExchange.terminateResponse(HttpServerExchange.java:1479) ~[undertow-core-1.3.0.CR2.jar:1.3.0.CR2]
	at io.undertow.server.Connectors.terminateResponse(Connectors.java:99) ~[undertow-core-1.3.0.CR2.jar:1.3.0.CR2]
	at io.undertow.server.protocol.http.HttpTransferEncoding$3.handleEvent(HttpTransferEncoding.java:197) ~[undertow-core-1.3.0.CR2.jar:1.3.0.CR2]
	at io.undertow.server.protocol.http.HttpTransferEncoding$3.handleEvent(HttpTransferEncoding.java:195) ~[undertow-core-1.3.0.CR2.jar:1.3.0.CR2]
	at io.undertow.conduits.HeadStreamSinkConduit.exitFlush(HeadStreamSinkConduit.java:178) ~[undertow-core-1.3.0.CR2.jar:1.3.0.CR2]
	at io.undertow.conduits.HeadStreamSinkConduit.flush(HeadStreamSinkConduit.java:122) ~[undertow-core-1.3.0.CR2.jar:1.3.0.CR2]
	at org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkChannel.java:162) ~[xnio-api-3.3.2.Final.jar:3.3.2.Final]
	at io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStreamSinkChannel.java:119) ~[undertow-core-1.3.0.CR2.jar:1.3.0.CR2]
	at org.xnio.channels.Channels.flushBlocking(Channels.java:63) ~[xnio-api-3.3.2.Final.jar:3.3.2.Final]
	at io.undertow.servlet.spec.ServletOutputStreamImpl.close(ServletOutputStreamImpl.java:609) ~[undertow-servlet-1.3.0.CR2.jar:1.3.0.CR2]
	at io.undertow.servlet.spec.HttpServletResponseImpl.closeStreamAndWriter(HttpServletResponseImpl.java:473) ~[undertow-servlet-1.3.0.CR2.jar:1.3.0.CR2]
	at io.undertow.servlet.spec.HttpServletResponseImpl.responseDone(HttpServletResponseImpl.java:557) ~[undertow-servlet-1.3.0.CR2.jar:1.3.0.CR2]
	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:331) ~[undertow-servlet-1.3.0.CR2.jar:1.3.0.CR2]
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:263) ~[undertow-servlet-1.3.0.CR2.jar:1.3.0.CR2]
	at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81) ~[undertow-servlet-1.3.0.CR2.jar:1.3.0.CR2]
	at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:174) ~[undertow-servlet-1.3.0.CR2.jar:1.3.0.CR2]
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:198) ~[undertow-core-1.3.0.CR2.jar:1.3.0.CR2]
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:784) ~[undertow-core-1.3.0.CR2.jar:1.3.0.CR2]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0]
	at java.lang.Thread.run(Thread.java:744) ~[na:1.8.0]

A fix for this in 4.2.2 would be most welcome as we'd like to use Undertow 1.3 in Boot 1.3.


Affects: 4.2.1

Issue Links:

Referenced from: commits 1458c7e

Metadata

Metadata

Assignees

Labels

in: webIssues in web modules (web, webmvc, webflux, websocket)type: enhancementA general enhancement

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions