Исключение ALPN не настроен должным образом

Я пытаюсь создать некоторые облачные метрики из scala, используя scio и apache beam для задачи потока данных.
Я получаю следующую ошибку:

java.lang.IllegalArgumentException: ALPN is not configured properly. See https://github.com/grpc/grpc-java/blob/master/SECURITY.md#troubleshooting for more information.

Я следовал за шагами в этом URL и добавил параметр JVM:-Djavaagent=/Users/user/Downloads/jetty-alpn-agent-2.0.6.jar

У меня также есть как env var: GOOGLE_APPLICATION_CREDENTIALS=/etc/recsys/recsys-dev.json

Код:

val pathToCredsFile = "/etc/recsys/recsys-dev.json"
val credentials = GoogleCredentials.fromStream(new FileInputStream(pathToCredsFile)).createScoped(Lists.newArrayList("https://www.googleapis.com/auth/cloud-platform"))
val settings = MetricServiceSettings.newBuilder()
  .setCredentialsProvider(FixedCredentialsProvider.create(credentials))
  .build()
val metricServiceClient = MetricServiceClient.create(settings) <-throws ex whether or  not I use settings

Могу ли я получить помощь?

2 ответа

Попробуйте посмотреть документ по поиску и устранению неисправностей Google Cloud Java, в частности, проверку совместимости. Предоставление его вывода было бы полезно для отладки.

jetty-alpn-agent-2.0.6 не поддерживает версии JRE 1.8.0u161 и выше. Обновление до 2.0.7 или 2.0.9 может работать лучше. Но использование Jetty-Alpn не рекомендуется. Если вы используете поддерживаемую платформу, лучше использовать tcnative или Conscrypt.

Должны также быть некоторые журналы INFO с некоторыми дополнительными деталями того, что было не так с Jetty ALPN/tcnative/Conscrypt (ищите "netty-tcnative недоступен (это может быть нормально)"; для каждого поставщика ALPN будет один оператор журнала, с Цепочки вызовов).

Вы можете добавить метод usePaneText() перед build(), чтобы решить проблему с не настроенным ALPN следующим образом:

      val settings = MetricServiceSettings.newBuilder()
  .setCredentialsProvider(FixedCredentialsProvider.create(credentials))
  .userPlainText()
  .build()

Это отключит SSL для тестирования или среды разработки.

Примечание: не рекомендуется для prod env.

Другие вопросы по тегам