При попытке выполнить полностью управляемый исходящий запрос к внешнему API из Google Cloud Run вызов http каким-то образом зависает или через некоторое время мы сталкиваемся со следующим SSLHandshakeException Remote host terminated the handshake
. Образ хорошо работает при локальном запуске, поэтому я предполагаю, что он исходит из изолированной среды запуска облака.
Моя конфигурация докера:
FROM maven:3.6.3-jdk-11 as builder
WORKDIR /app
COPY pom.xml .
COPY src ./src
# Build a release artifact.
RUN mvn package -DskipTests
FROM openjdk:11-jdk
COPY --from=builder /app/target/poc-*.jar /poc.jar
# Run the service on container startup.
CMD ["java","-Djava.security.egd=file:/dev/./urandom","-Dserver.port=${PORT}","-jar","/poc.jar"]
Фрагмент кода застревает:
private HttpEntity<String> prepareSecuredRestCallToAJStage() {
CredentialsDTO credentials = new CredentialsDTO(USERNAME, PASSWORD);
// Getting stuck here
TokenDTO response = restTemplate.postForObject(LOGIN_CHECK_URL, credentials, TokenDTO.class);
// We never get the response
String token = BEARER_TOKEN_PREFIX + Objects.requireNonNull(response).getToken();
}
Для информации, это приложение Spring Boot, и мы получаем эту трассировку при запуске: Container Sandbox: Unsupported syscall setsockopt(0x9,0x6,0x6,0x3e7a3d678e2c,0x4,0xa)
Что-то мне не хватает?