Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make FormParserFactory builder more fluent #726

Merged
merged 1 commit into from Apr 3, 2019
Merged

Make FormParserFactory builder more fluent #726

merged 1 commit into from Apr 3, 2019

Conversation

unswirl
Copy link
Contributor

@unswirl unswirl commented Feb 20, 2019

A non-breaking change that makes the FormParserFactory.Builder methods chainable.

@undertow-pull-request
Copy link

Can one of the admins verify this patch?

@lawrence-dol
Copy link

Changing the return type of a method is transparent at compile time, but I believe it is a runtime breaking change, even if the caller does nothing with the return value.

@unswirl
Copy link
Contributor Author

unswirl commented Feb 23, 2019

Ah, I didn't consider binary compatibility. Perhaps we can consider this for the next major upgrade?

@unswirl unswirl changed the title Make FormParserFactory builder more fluid Make FormParserFactory builder more fluent Feb 24, 2019
@unswirl
Copy link
Contributor Author

unswirl commented Feb 24, 2019

Instead of modifying the existing methods, I've committed a new change that adds two new methods with the prefix with. This is a common naming-pattern for builder methods (e.g. see this question on Stack Overflow).

@carterkozak
Copy link
Contributor

Adding a return type to a previously void methods would only be an ABI break for types which extend the builder, which seems very unlikely. Usages of the builder will be unaffected.

@fl4via
Copy link
Member

fl4via commented Apr 2, 2019

This is ok to test

@fl4via
Copy link
Member

fl4via commented Apr 2, 2019

The return type is used in the bytecode to specify which method a binary is invoking so yes, we could break binaries that were compiled with previous version if we change the return type in the signature. I'm okay with the "with" new methods.

@fl4via
Copy link
Member

fl4via commented Apr 2, 2019

I created a Jira for this: https://issues.jboss.org/browse/UNDERTOW-1520
@unswirl can you pleaes condense the two commits into a single one and add [UNDERTOW-1520] to the beginning of the commit message? Thanks!

@undertow-pull-request
Copy link

Windows Build 2726 outcome was FAILURE using a merge of 2cee334
Summary: Out of memory: GC overhead limit exceeded (new); tests failed: 12 (10 new), passed: 3340, ignored: 681 Build time: 00:44:29

Failed tests

io.undertow.server.handlers.PredicatedHandlersTestCase.testRewrite[proxy][http2]: java.net.SocketException: No buffer space available (maximum connections reached?): connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
	at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:326)
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
	at io.undertow.server.handlers.PredicatedHandlersTestCase.testRewrite(PredicatedHandlersTestCase.java:68)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:528)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:104)
	at io.undertow.testutils.DefaultServer.run(DefaultServer.java:301)
------- Stderr: -------
23:53:26,894 WARN  (main) [io.undertow] <PredicatedHandlersParser.java:460> UT005060: Predicate path(/skipallrules) and true -> done
method(GET) -> set(attribute='%{o,type}', value=get) 
regex('(.*).css') -> {rewrite['${1}.xcss'];set(attribute='%{o,chained}', value=true)} 
regex('(.*).redirect$') -> redirect['${1}.redirected']




set[attribute='%{o,someHeader}', value=always]
path-template('/foo/{bar}/{f}') -> set[attribute='%{o,template}', value='${bar}']
path-template('/bar->foo') -> redirect(/);regex('(.*).css') -> set[attribute='%{o,css}', value='true'] else set[attribute='%{o,css}', value='false']; path(/restart) -> {rewrite(/foo/a/b); restart; }
regex('^/path/([^/]+)/(.*)/?$') -> rewrite('/newpath'); set(attribute='%{o,result}', value='param1=$1&param2=$2'); done() uses old style square braces to define predicates, which will be removed in a future release. predicate[value] should be changed to predicate(value)
23:53:26,894 WARN  (main) [io.undertow] <PredicatedHandlersParser.java:460> UT005060: Predicate path(/skipallrules) and true -> done
method(GET) -> set(attribute='%{o,type}', value=get) 
regex('(.*).css') -> {rewrite['${1}.xcss'];set(attribute='%{o,chained}', value=true)} 
regex('(.*).redirect$') -> redirect['${1}.redirected']




set[attribute='%{o,someHeader}', value=always]
path-template('/foo/{bar}/{f}') -> set[attribute='%{o,template}', value='${bar}']
path-template('/bar->foo') -> redirect(/);regex('(.*).css') -> set[attribute='%{o,css}', value='true'] else set[attribute='%{o,css}', value='false']; path(/restart) -> {rewrite(/foo/a/b); restart; }
regex('^/path/([^/]+)/(.*)/?$') -> rewrite('/newpath'); set(attribute='%{o,result}', value='param1=$1&param2=$2'); done() uses old style square braces to define predicates, which will be removed in a future release. predicate[value] should be changed to predicate(value)
23:53:26,895 WARN  (main) [io.undertow] <PredicatedHandlersParser.java:460> UT005060: Predicate path(/skipallrules) and true -> done
method(GET) -> set(attribute='%{o,type}', value=get) 
regex('(.*).css') -> {rewrite['${1}.xcss'];set(attribute='%{o,chained}', value=true)} 
regex('(.*).redirect$') -> redirect['${1}.redirected']



io.undertow.server.handlers.QueryParametersTestCase.testQueryParameters[proxy][http2]: java.net.SocketTimeoutException: Read timed out
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
	at java.net.SocketInputStream.read(SocketInputStream.java:171)
	at java.net.SocketInputStream.read(SocketInputStream.java:141)
	at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:161)
	at org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:82)
	at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:278)
	at org.apache.http.impl.conn.LoggingSessionInputBuffer.readLine(LoggingSessionInputBuffer.java:123)
	at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:138)
	at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
	at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)
	at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:286)
	at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:257)
	at org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:207)
	at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)
	at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
	at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:684)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:486)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
	at io.undertow.server.handlers.QueryParametersTestCase.runTest(QueryParametersTestCase.java:143)
	at io.undertow.server.handlers.QueryParametersTestCase.testQueryParameters(QueryParametersTestCase.java:95)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:528)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:104)
	at io.undertow.testutils.DefaultServer.run(DefaultServer.java:301)
------- Stderr: -------
23:52:56,880 DEBUG (XNIO-1 I/O-4) [io.undertow.server.handlers.proxy] <ProxyHandler.java:549> Sending request ClientRequest{path='/path?unicode=I%C3%B1t%C3%ABrn%C3%A2ti%C3%B4n%C3%A0li%C5%BE%C3%A6ti%C3%B8n', method=GET, protocol=HTTP/1.1} to target localhost/127.0.0.1:8888 for exchange HttpServerExchange{ GET /path}
23:52:56,880 DEBUG (XNIO-1 I/O-4) [io.undertow.server.handlers.proxy] <ProxyHandler.java:566> Sent request ClientRequest{path='/path?unicode=I%C3%B1t%C3%ABrn%C3%A2ti%C3%B4n%C3%A0li%C5%BE%C3%A6ti%C3%B8n', method=GET, protocol=HTTP/1.1} to target 127.0.0.1 for exchange HttpServerExchange{ GET /path}
23:52:56,881 DEBUG (XNIO-1 I/O-4) [io.undertow.server.handlers.proxy] <ProxyHandler.java:691> Received response ClientResponse{responseHeaders={content-length=[39], date=[Tue, 02 Apr 2019 06:51:30 GMT]}, responseCode=200, status='', protocol=HTTP/2.0} for request ClientRequest{path='/path?unicode=I%C3%B1t%C3%ABrn%C3%A2ti%C3%B4n%C3%A0li%C5%BE%C3%A6ti%C3%B8n', method=GET, protocol=HTTP/1.1} for exchange HttpServerExchange{ GET /path}
23:52:56,883 DEBUG (XNIO-1 I/O-4) [io.undertow.server.handlers.proxy] <ProxyHandler.java:549> Sending request ClientRequest{path='/path?a=b&value=bb%20bb', method=GET, protocol=HTTP/1.1} to target localhost/127.0.0.1:8888 for exchange HttpServerExchange{ GET /path}
23:52:56,883 DEBUG (XNIO-1 I/O-4) [io.undertow.server.handlers.proxy] <ProxyHandler.java:566> Sent request ClientRequest{path='/path?a=b&value=bb%20bb', method=GET, protocol=HTTP/1.1} to target 127.0.0.1 for exchange HttpServerExchange{ GET /path}
23:52:56,883 DEBUG (XNIO-1 I/O-4) [io.undertow.server.handlers.proxy] <ProxyHandler.java:691> Received response ClientResponse{responseHeaders={content-length=[19], date=[Tue, 02 Apr 2019 06:51:30 GMT]}, responseCode=200, status='', protocol=HTTP/2.0} for request ClientRequest{path='/path?a=b&value=bb%20bb', method=GET, protocol=HTTP/1.1} for exchange HttpServerExchange{ GET /path}
23:52:56,886 DEBUG (XNIO-1 I/O-4) [io.undertow.server.handlers.proxy] <ProxyHandler.java:549> Sending request ClientRequest{path='/path?a=b&value=bb&value=cc', method=GET, protocol=HTTP/1.1} to target localhost/127.0.0.1:8888 for exchange HttpServerExchange{ GET /path}
23:52:56,886 DEBUG (XNIO-1 I/O-4) [io.undertow.server.handlers.proxy] <ProxyHandler.java:566> Sent request ClientRequest{path='/path?a=b&value=bb&value=cc', method=GET, protocol=HTTP/1.1} to target 127.0.0.1 for exchange HttpServerExchange{ GET /path}
23:52:56,886 DEBUG (XNIO-1 I/O-4) [io.undertow.server.handlers.proxy] <ProxyHandler.java:691> Received response ClientResponse{responseHeaders={content-length=[21], date=[Tue, 02 Apr 2019 06:51:30 GMT]}, responseCode=200, status='', protocol=HTTP/2.0} for request ClientRequest{path='/path?a=b&value=bb&value=cc', method=GET, protocol=HTTP/1.1} for exchange HttpServerExchange{ GET /path}
23:52:56,889 DEBUG (XNIO-1 I/O-4) [io.undertow.server.handlers.proxy] <ProxyHandler.java:549> Sending request ClientRequest{path='/path?a=b&value=bb&value=cc&s%20&t%20', method=GET, protocol=HTTP/1.1} to target localhost/127.0.0.1:8888 for exchange HttpServerExchange{ GET /path}
23:52:56,889 DEBUG (XNIO-1 I/O-4) [io.undertow.server.handlers.proxy] <ProxyHandler.java:566> Sent request ClientRequest{path='/path?a=b&value=bb&value=cc&s%20&t%20', method=GET, protocol=HTTP/1.1} to target 127.0.0.1 for exchange HttpServerExchange{ GET /path}


io.undertow.server.handlers.PathTemplateHandlerTestCase.testPathTemplateHandler[proxy][http2]: java.net.SocketException: No buffer space available (maximum connections reached?): connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
	at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:326)
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
	at io.undertow.server.handlers.PathTemplateHandlerTestCase.runPathTemplateHandlerTest(PathTemplateHandlerTestCase.java:87)
	at io.undertow.server.handlers.PathTemplateHandlerTestCase.testPathTemplateHandler(PathTemplateHandlerTestCase.java:75)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:528)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:104)
	at io.undertow.testutils.DefaultServer.run(DefaultServer.java:301)


io.undertow.server.handlers.PathTemplateHandlerTestCase.testPathTemplateHandlerWithPrefix[proxy][http2]: java.net.SocketException: No buffer space available (maximum connections reached?): connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
	at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:326)
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
	at io.undertow.server.handlers.PathTemplateHandlerTestCase.runPathTemplateHandlerTest(PathTemplateHandlerTestCase.java:87)
	at io.undertow.server.handlers.PathTemplateHandlerTestCase.testPathTemplateHandlerWithPrefix(PathTemplateHandlerTestCase.java:80)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:528)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:104)
	at io.undertow.testutils.DefaultServer.run(DefaultServer.java:301)


io.undertow.server.handlers.MetricsHandlerTestCase.testMetrics[proxy][http2]: java.net.SocketException: No buffer space available (maximum connections reached?): connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
	at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:326)
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
	at io.undertow.server.handlers.MetricsHandlerTestCase.testMetrics(MetricsHandlerTestCase.java:60)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:528)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:104)
	at io.undertow.testutils.DefaultServer.run(DefaultServer.java:301)


io.undertow.server.handlers.OriginTestCase.testStrictOrigin[proxy][http2]: java.net.SocketException: No buffer space available (maximum connections reached?): connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
	at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:326)
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
	at io.undertow.server.handlers.OriginTestCase.testStrictOrigin(OriginTestCase.java:59)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:528)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:104)
	at io.undertow.testutils.DefaultServer.run(DefaultServer.java:301)


io.undertow.server.handlers.LotsOfQueryParametersTestCase.testLotsOfQueryParameters_Default_BadRequest[proxy][http2]: java.net.SocketException: No buffer space available (maximum connections reached?): connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
	at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:326)
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
	at io.undertow.server.handlers.LotsOfQueryParametersTestCase.testLotsOfQueryParameters_Default_BadRequest(LotsOfQueryParametersTestCase.java:108)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:528)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:104)
	at io.undertow.testutils.DefaultServer.run(DefaultServer.java:301)


io.undertow.server.handlers.LotsOfQueryParametersTestCase.testLotsOfQueryParameters_Default_Ok[proxy][http2]: java.net.SocketException: No buffer space available (maximum connections reached?): connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
	at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:326)
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
	at io.undertow.server.handlers.LotsOfQueryParametersTestCase.testLotsOfQueryParameters_Default_Ok(LotsOfQueryParametersTestCase.java:83)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:528)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:104)
	at io.undertow.testutils.DefaultServer.run(DefaultServer.java:301)


io.undertow.server.handlers.LotsOfHeadersResponseTestCase.testLotsOfHeadersInResponse[proxy][http2]: java.lang.OutOfMemoryError: GC overhead limit exceeded


io.undertow.server.handlers.HttpContinueAcceptingHandlerTestCase.testHttpContinueRejected[proxy][http2-clear-upgrade]: java.lang.AssertionError: expected:<417> but was:<200>
	at io.undertow.server.handlers.HttpContinueAcceptingHandlerTestCase.testHttpContinueRejected(HttpContinueAcceptingHandlerTestCase.java:104)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:528)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:104)
	at io.undertow.testutils.DefaultServer.run(DefaultServer.java:301)
------- Stderr: -------
00:03:04,320 DEBUG (XNIO-1 I/O-8) [io.undertow.server.handlers.proxy] <ProxyHandler.java:549> Sending request ClientRequest{path='/path', method=POST, protocol=HTTP/1.1} to target localhost/127.0.0.1:8888 for exchange HttpServerExchange{ POST /path}
00:03:04,321 DEBUG (XNIO-1 I/O-8) [io.undertow.server.handlers.proxy] <ProxyHandler.java:566> Sent request ClientRequest{path='/path', method=POST, protocol=HTTP/1.1} to target 127.0.0.1 for exchange HttpServerExchange{ POST /path}
00:03:07,319 DEBUG (XNIO-1 I/O-8) [io.undertow.client.http.HttpClientExchange] <HttpClientExchange.java:87> request terminated for request to localhost/127.0.0.1:8888 /path
00:03:07,319 DEBUG (XNIO-1 I/O-8) [io.undertow.client.http.HttpClientConnection] <HttpClientConnection.java:451> connection to localhost/127.0.0.1:8888 is being upgraded
00:03:07,321 DEBUG (XNIO-1 I/O-8) [io.undertow.server.handlers.proxy] <ProxyHandler.java:691> Received response ClientResponse{responseHeaders={content-length=[16], date=[Tue, 02 Apr 2019 07:01:34 GMT]}, responseCode=200, status='', protocol=HTTP/2.0} for request ClientRequest{path='/path', method=POST, protocol=HTTP/1.1} for exchange HttpServerExchange{ POST /path}


io.undertow.server.handlers.PredicatedHandlersProxyTestCase: java.lang.RuntimeException: java.io.IOException: Unable to establish loopback connection
	at io.undertow.Undertow.start(Undertow.java:247)
	at io.undertow.server.handlers.PredicatedHandlersProxyTestCase.setup(PredicatedHandlersProxyTestCase.java:64)
	at io.undertow.testutils.DefaultServer.run(DefaultServer.java:301)
Caused by: java.io.IOException: Unable to establish loopback connection
	at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:94)
	at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:61)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.nio.ch.PipeImpl.<init>(PipeImpl.java:171)
	at sun.nio.ch.SelectorProviderImpl.openPipe(SelectorProviderImpl.java:50)
	at java.nio.channels.Pipe.open(Pipe.java:155)
	at sun.nio.ch.WindowsSelectorImpl.<init>(WindowsSelectorImpl.java:127)
	at sun.nio.ch.WindowsSelectorProvider.openSelector(WindowsSelectorProvider.java:44)
	at org.xnio.nio.NioXnio$DefaultSelectorCreator.open(NioXnio.java:247)
	at org.xnio.nio.NioXnioWorker.<init>(NioXnioWorker.java:97)
	at org.xnio.nio.NioXnio.createWorker(NioXnio.java:202)
	at org.xnio.Xnio.createWorker(Xnio.java:498)
	at org.xnio.Xnio.createWorker(Xnio.java:485)
	at io.undertow.Undertow.start(Undertow.java:122)
	... 30 more
Caused by: java.net.SocketException: No buffer space available (maximum connections reached?): bind
	at sun.nio.ch.Net.bind0(Native Method)
	at sun.nio.ch.Net.bind(Net.java:433)
	at sun.nio.ch.Net.bind(Net.java:425)
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67)
	at sun.nio.ch.PipeImpl$Initializer$LoopbackConnector.run(PipeImpl.java:121)
	at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:76)
	... 43 more



##### there are 2 more failed tests, see build details

@undertow-pull-request
Copy link

Windows Build 2729 outcome was FAILURE using a merge of cb887f5
Summary: Tests failed: 1 (1 new), passed: 3382, ignored: 710 Build time: 00:37:52

Failed tests

io.undertow.server.handlers.ReceiverTestCase.testAsyncReceiveWholeBytesFailed[proxy][http2]: java.lang.AssertionError
	at io.undertow.server.handlers.ReceiverTestCase.testAsyncReceiveWholeBytesFailed(ReceiverTestCase.java:194)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:528)
	at io.undertow.testutils.DefaultServer.runChild(DefaultServer.java:104)
	at io.undertow.testutils.DefaultServer.run(DefaultServer.java:301)
------- Stderr: -------
01:57:33,727 DEBUG (XNIO-1 I/O-7) [io.undertow.server.handlers.proxy] <ProxyHandler.java:549> Sending request ClientRequest{path='/fullbytes', method=POST, protocol=HTTP/1.1} to target localhost/127.0.0.1:8888 for exchange HttpServerExchange{ POST /fullbytes}
01:57:33,727 DEBUG (XNIO-1 I/O-7) [io.undertow.server.handlers.proxy] <ProxyHandler.java:566> Sent request ClientRequest{path='/fullbytes', method=POST, protocol=HTTP/1.1} to target 127.0.0.1 for exchange HttpServerExchange{ POST /fullbytes}
01:57:33,742 ERROR (XNIO-1 I/O-7) [io.undertow.proxy] <ProxyHandler.java:662> UT005028: Proxy request to /fullbytes failed: java.nio.channels.ClosedChannelException
	at io.undertow.client.http2.Http2ClientConnection$1.handleEvent(Http2ClientConnection.java:107)
	at io.undertow.client.http2.Http2ClientConnection$1.handleEvent(Http2ClientConnection.java:99)
	at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
	at io.undertow.server.protocol.framed.AbstractFramedChannel$FrameCloseListener.handleEvent(AbstractFramedChannel.java:1061)
	at io.undertow.server.protocol.framed.AbstractFramedChannel$FrameCloseListener.handleEvent(AbstractFramedChannel.java:975)
	at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
	at io.undertow.protocols.ssl.SslConduit$SslReadReadyHandler.terminated(SslConduit.java:1214)
	at org.xnio.nio.NioSocketConduit.readTerminated(NioSocketConduit.java:360)
	at org.xnio.nio.NioSocketStreamConnection.notifyReadClosed(NioSocketStreamConnection.java:148)
	at org.xnio.Connection.close(Connection.java:139)
	at org.xnio.IoUtils.safeClose(IoUtils.java:134)
	at io.undertow.protocols.ssl.SslConduit.closed(SslConduit.java:1046)
	at io.undertow.protocols.ssl.SslConduit.close(SslConduit.java:1117)
	at io.undertow.protocols.ssl.UndertowSslConnection.closeAction(UndertowSslConnection.java:149)
	at org.xnio.Connection.close(Connection.java:132)
	at org.xnio.IoUtils.safeClose(IoUtils.java:134)
	at io.undertow.server.protocol.framed.AbstractFramedChannel.close(AbstractFramedChannel.java:816)
	at org.xnio.IoUtils.safeClose(IoUtils.java:134)
	at io.undertow.protocols.http2.Http2Channel.sendGoAway(Http2Channel.java:832)
	at io.undertow.protocols.http2.Http2Channel.sendGoAway(Http2Channel.java:809)
	at io.undertow.client.http2.Http2ClientConnection.close(Http2ClientConnection.java:303)
	at org.xnio.IoUtils.safeClose(IoUtils.java:134)
	at io.undertow.server.handlers.proxy.ProxyHandler$IoExceptionHandler.handleException(ProxyHandler.java:790)
	at org.xnio.ChannelListeners.invokeChannelExceptionHandler(ChannelListeners.java:126)
	at io.undertow.util.Transfer$TransferListener.handleEvent(Transfer.java:218)
	at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
	at io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel$1.run(AbstractFramedStreamSinkChannel.java:214)
	at io.undertow.server.protocol.framed.AbstractFramedChannel$FrameReadListener.handleEvent(AbstractFramedChannel.java:935)
	at io.undertow.server.protocol.framed.AbstractFramedChannel$FrameReadListener.handleEvent(AbstractFramedChannel.java:929)
	at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
	at org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66)
	at io.undertow.protocols.ssl.SslConduit$SslReadReadyHandler.readReady(SslConduit.java:1175)
	at io.undertow.protocols.ssl.SslConduit$1.run(SslConduit.java:168)
	at org.xnio.nio.WorkerThread.safeRun(WorkerThread.java:582)
	at org.xnio.nio.WorkerThread.run(WorkerThread.java:466)

01:57:33,742 DEBUG (XNIO-1 I/O-7) [io.undertow.request.error-response] <DelegatingBasicLogger.java:424> Setting error code 503 for exchange HttpServerExchange{ POST /fullbytes}: java.lang.RuntimeException
	at io.undertow.server.HttpServerExchange.setStatusCode(HttpServerExchange.java:1410)
	at io.undertow.server.handlers.proxy.ProxyHandler.handleFailure(ProxyHandler.java:668)
	at io.undertow.server.handlers.proxy.ProxyHandler$ResponseCallback.failed(ProxyHandler.java:727)
	at io.undertow.client.http2.Http2ClientExchange.failed(Http2ClientExchange.java:125)
	at io.undertow.client.http2.Http2ClientConnection$1.handleEvent(Http2ClientConnection.java:107)


@undertow-pull-request
Copy link

Linux Build 2978 outcome was FAILURE using a merge of cb887f5
Summary: Execution timeout (new); tests passed: 3384, ignored: 632 Build time: 01:20:09

@fl4via
Copy link
Member

fl4via commented Apr 3, 2019

@unswirl thanks for adding the commit. Still, I need a single commit.
Here is how you do it:
git rebase -i HEAD~4
This will direct you to a file where you can choose which of the last 4 commits you're going to pick, and which ones you want as a squash or fixup. If I were you, I would pick the oldest and squash the three new commits. Then you can amend the resulting commit afterwards with a simple git commit --amend
Or, even easier, pick the code of the latest commit in your log history that you didn't add yourself:
git log
(copy the code of the commit previous to your 4 commits, it could be, for example, a code such as 9345cb15486e12c5f95d611caf6299251418c1a7, but you will have to find the code yourself)
Then, use git reset with that code:
git reset 9345cb15486e12c5f95d611caf6299251418c1a7
There you go, your commits have been removed, but your changes are still in your local code. Add those changes and do a new, clean commit.

For now, I'll try to squash your commits and add them to undertow myself, just to try to add them to the next release, which I'm about to do at any moment.

@fl4via fl4via merged commit 7b11793 into undertow-io:master Apr 3, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
5 participants