Closed keenuser closed 10 months ago
"Unsupported or unrecognized SSL message" indicates that the wrong protocol was used to make the connection, for example if you try to connect with SSL but you specify a port that is not SSL.
I see in the GetStage class that you're using a proxy in the ApiGateway client, I would double-check your proxy settings. You can also check the SSL handshake logs for more clues.
The issue got resolved after rectifying the proxy configuration. Thanks for the pointer.
Describe the bug
I am using AWS Java SDK (aws-java-sdk-api-gateway-1.12.268) for fetching stages from an AWS API. The code works fine for most of the APIs, except it failed 2-3 times consecutively for a particular API with following exception:
com.amazonaws.SdkClientException: Unable to execute HTTP request: Unsupported or unrecognized SSL message at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleRetryableException(AmazonHttpClient.java:1219) ~[Execute.zip:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1165) ~[Execute.zip:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:814) ~[Execute.zip:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:781) ~[Execute.zip:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:755) ~[Execute.zip:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:715) ~[Execute.zip:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:697) ~[Execute.zip:?] at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:561) ~[Execute.zip:?] at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:541) ~[Execute.zip:?] at com.amazonaws.services.apigateway.AmazonApiGatewayClient.doInvoke(AmazonApiGatewayClient.java:8246) ~[Execute.zip:?] at com.amazonaws.services.apigateway.AmazonApiGatewayClient.invoke(AmazonApiGatewayClient.java:8213) ~[Execute.zip:?] at com.amazonaws.services.apigateway.AmazonApiGatewayClient.invoke(AmazonApiGatewayClient.java:8202) ~[Execute.zip:?] at com.amazonaws.services.apigateway.AmazonApiGatewayClient.executeGetStages(AmazonApiGatewayClient.java:5310) ~[Execute.zip:?] at com.amazonaws.services.apigateway.AmazonApiGatewayClient.getStages(AmazonApiGatewayClient.java:5279) ~[Execute.zip:?]
I talked to AWS support for API service and he checked from CloudFront etc. that stage was available at the time a request was made to API endpoint. So, it's not a problem with service. I suspect it's an intermittent issue (same code work fine for other APIs, in same/other accounts as well).
What could be the reason behind this problem? Is this categorized as retriable error?
Expected Behavior
The AWS Java SDK should consistently work while fetching API properties like stages etc.
Current Behavior
Getting following exception while fetching stages from an AWS API using java SDK (aws-java-sdk-api-gateway-1.12.268):
com.amazonaws.SdkClientException: Unable to execute HTTP request: Unsupported or unrecognized SSL message at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleRetryableException(AmazonHttpClient.java:1219) ~[Execute.zip:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1165) ~[Execute.zip:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:814) ~[Execute.zip:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:781) ~[Execute.zip:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:755) ~[Execute.zip:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:715) ~[Execute.zip:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:697) ~[Execute.zip:?] at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:561) ~[Execute.zip:?] at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:541) ~[Execute.zip:?] at com.amazonaws.services.apigateway.AmazonApiGatewayClient.doInvoke(AmazonApiGatewayClient.java:8246) ~[Execute.zip:?] at com.amazonaws.services.apigateway.AmazonApiGatewayClient.invoke(AmazonApiGatewayClient.java:8213) ~[Execute.zip:?] at com.amazonaws.services.apigateway.AmazonApiGatewayClient.invoke(AmazonApiGatewayClient.java:8202) ~[Execute.zip:?] at com.amazonaws.services.apigateway.AmazonApiGatewayClient.executeGetStages(AmazonApiGatewayClient.java:5310) ~[Execute.zip:?] at com.amazonaws.services.apigateway.AmazonApiGatewayClient.getStages(AmazonApiGatewayClient.java:5279) ~[Execute.zip:?]
Reproduction Steps
The sample code is attached: GetStage.java.txt
Possible Solution
Additional Information/Context
No response
AWS Java SDK version used
aws-java-sdk-api-gateway-1.12.268
JDK version used
JDK 17
Operating System and version
EC2 with Windows Server 2019