[
https://issues.apache.org/jira/browse/SLIDER-878?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14546916#comment-14546916
]
Steve Loughran commented on SLIDER-878:
---------------------------------------
This is pretty serious. I have been testing against java 8 (1.8.0_45), but not
seen this; maybe I've not been using java 8 as the client in the functional
test suite.
Looking at the comments there, especially stackoverflow, it's re-use of an
existing httpconnection that's the problem, or changing HTTP request headers
while the connection has already started [
http://stackoverflow.com/questions/5368535/java-httpurlconnection-issues-with-illegalstateargument-already-connected]
Looking at the code chain for the registry GET operation, we aren't doing that
in our code. Our AM webapp is set to redirect to the RM proxy if it gets a
direct GET request -but at the same time, it should be GETs everywhere.
I recall we encountered something like this before using Jersey to do the REST
client, where we were trying to do some security/rest work dealing with RM
Redirects that were also doing some HTTPS/HTTP conversion (when we were trying
to run the AM as HTTPS).
And looking at the code, I can see a possible code path where our code
{{UrlConnectionOperations}} is trying to do some setup of the new HTTP
connection (setting cache and redirect policy) after the security token has
been set. Which doesn't look like a codepath to trigger the error string you
are seeing in {{setRequestMethod]}}.
I'll switch my IDE to using the Java 8 SDK (I bond it to java 7 to avoid
accidentally using any Java 8 classes/methods); to see how the codepath looks
there.
meanwhile, I have one question: is this a secure cluster?
> Slider cannot support jdk 1.8 for command slider registry --getconf
> hbase-site --name hb1
> -----------------------------------------------------------------------------------------
>
> Key: SLIDER-878
> URL: https://issues.apache.org/jira/browse/SLIDER-878
> Project: Slider
> Issue Type: Bug
> Components: client
> Affects Versions: Slider 0.61, Slider 0.70, Slider 0.80
> Environment: Slider 0.61 jdk 1.8
> Reporter: qiang xu
>
> slider registry --getconf hbase-site --name hb1
> 2015-05-16 11:16:37,829 [main] INFO impl.TimelineClientImpl - Timeline
> service address: http://d64:8188/ws/v1/timeline/
> 2015-05-16 11:16:38,472 [main] INFO client.RMProxy - Connecting to
> ResourceManager at d64/160.164.0.7:18040
> Exception: java.lang.IllegalStateException: connect in progress
> 2015-05-16 11:16:38,958 [main] ERROR main.ServiceLauncher - Exception:
> java.lang.IllegalStateException: connect in progress
> com.sun.jersey.api.client.ClientHandlerException:
> java.lang.IllegalStateException: connect in progress
> at
> com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:149)
> at com.sun.jersey.api.client.Client.handle(Client.java:648)
> at com.sun.jersey.api.client.WebResource.handle(WebResource.java:670)
> at com.sun.jersey.api.client.WebResource.get(WebResource.java:191)
> at
> org.apache.slider.core.registry.retrieve.RegistryRetriever.getConfigurations(RegistryRetriever.java:216)
> at
> org.apache.slider.client.SliderClient.actionRegistryGetConfig(SliderClient.java:3117)
> at
> org.apache.slider.client.SliderClient.actionRegistry(SliderClient.java:2610)
> at org.apache.slider.client.SliderClient.exec(SliderClient.java:404)
> at
> org.apache.slider.client.SliderClient.runService(SliderClient.java:348)
> at
> org.apache.slider.core.main.ServiceLauncher.launchService(ServiceLauncher.java:188)
> at
> org.apache.slider.core.main.ServiceLauncher.launchServiceRobustly(ServiceLauncher.java:475)
> at
> org.apache.slider.core.main.ServiceLauncher.launchServiceAndExit(ServiceLauncher.java:403)
> at
> org.apache.slider.core.main.ServiceLauncher.serviceMain(ServiceLauncher.java:630)
> at org.apache.slider.Slider.main(Slider.java:49)
> Caused by: java.lang.IllegalStateException: connect in progress
> at
> sun.net.www.protocol.http.HttpURLConnection.setRequestMethod(HttpURLConnection.java:516)
> at
> com.sun.jersey.client.urlconnection.URLConnectionClientHandler.setRequestMethodUsingWorkaroundForJREBug(URLConnectionClientHandler.java:259)
> at
> com.sun.jersey.client.urlconnection.URLConnectionClientHandler._invoke(URLConnectionClientHandler.java:191)
> at
> com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:147)
> ... 13 more
> 2015-05-16 11:16:38,963 [main] INFO util.ExitUtil - Exiting with status 56
> It is caused by the jersey.
> Some reference
> https://bugs.openjdk.java.net/browse/JDK-8029127
> http://stackoverflow.com/questions/27571645/httpurlconnection-getinputstream-to-read-page-and-then-make-post-request
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)