[ https://issues.apache.org/jira/browse/KAFKA-7799?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16769592#comment-16769592 ]
ASF GitHub Bot commented on KAFKA-7799: --------------------------------------- avocader commented on pull request #6277: KAFKA-7799; Use httpcomponents-client in RestServerTest. URL: https://github.com/apache/kafka/pull/6277 The test `org.apache.kafka.connect.runtime.rest.RestServerTest#testCORSEnabled` assumes Jersey client can send restricted HTTP headers(`Origin`). Jersey client uses `sun.net.www.protocol.http.HttpURLConnection`. `sun.net.www.protocol.http.HttpURLConnection` drops restricted headers(`Host`, `Keep-Alive`, `Origin`, etc) based on static property `allowRestrictedHeaders`. This property is initialized in a static block by reading Java system property `sun.net.http.allowRestrictedHeaders`. So, if classloader loads `HttpURLConnection` before we set `sun.net.http.allowRestrictedHeaders=true`, then all subsequent changes of this system property won't take any effect(which happens if `org.apache.kafka.connect.integration.ExampleConnectIntegrationTest` is executed before `RestServerTest`). To prevent this, we have to either make sure we set `sun.net.http.allowRestrictedHeaders=true` as early as possible or do not rely on this system property at all. This PR adds test dependency on `httpcomponents-client` which doesn't depend on `sun.net.http.allowRestrictedHeaders` system property. Thus none of existing tests should interfere with `RestServerTest`. ### Committer Checklist (excluded from commit message) - [ ] Verify design and implementation - [ ] Verify test coverage and CI build status - [ ] Verify documentation (including upgrade notes) ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > Fix flaky test RestServerTest.testCORSEnabled > --------------------------------------------- > > Key: KAFKA-7799 > URL: https://issues.apache.org/jira/browse/KAFKA-7799 > Project: Kafka > Issue Type: Test > Components: KafkaConnect > Reporter: Jason Gustafson > Assignee: Jason Gustafson > Priority: Major > Fix For: 2.3.0 > > > Starting to see this failure quite a lot, locally and on jenkins: > {code} > org.apache.kafka.connect.runtime.rest.RestServerTest.testCORSEnabled > Failing for the past 7 builds (Since Failed#18600 ) > Took 0.7 sec. > Error Message > java.lang.AssertionError: expected:<http://bar.com> but was:<null> > Stacktrace > java.lang.AssertionError: expected:<http://bar.com> but was:<null> > at org.junit.Assert.fail(Assert.java:88) > at org.junit.Assert.failNotEquals(Assert.java:834) > at org.junit.Assert.assertEquals(Assert.java:118) > at org.junit.Assert.assertEquals(Assert.java:144) > at > org.apache.kafka.connect.runtime.rest.RestServerTest.checkCORSRequest(RestServerTest.java:221) > at > org.apache.kafka.connect.runtime.rest.RestServerTest.testCORSEnabled(RestServerTest.java:84) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:68) > at > org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:326) > at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:89) > at > org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:97) > {code} > If it helps, I see an uncaught exception in the stdout: > {code} > [2019-01-08 19:35:23,664] ERROR Uncaught exception in REST call to > /connector-plugins/FileStreamSource/validate > (org.apache.kafka.connect.runtime.rest.errors.ConnectExceptionMapper:61) > javax.ws.rs.NotFoundException: HTTP 404 Not Found > at > org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) > at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272) > at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268) > at org.glassfish.jersey.internal.Errors.process(Errors.java:316) > at org.glassfish.jersey.internal.Errors.process(Errors.java:298) > at org.glassfish.jersey.internal.Errors.process(Errors.java:268) > at > org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289) > at > org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256) > at > org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:703) > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)