finos / symphony-bdk-java

The Symphony BDK (Bot Developer Kit) for Java helps you to create production-grade Chat Bots and Extension Applications on top of the Symphony REST APIs.
https://symphony-bdk-java.finos.org
Apache License 2.0
23 stars 68 forks source link

Datafeed retry loop fails after receiving KeyManager exception #678

Closed ystxn closed 1 year ago

ystxn commented 2 years ago

Bug Report

Steps to Reproduce:

Keep bot running during a pod maintenance window where components like SBE and Agent are taken offline.

Expected Result:

Actual Result:

Environment:

Exception:

2022-09-14 23:54:34.291 ERROR 1 --- [onyBdk_Datafeed] c.s.bdk.core.retry.RetryWithRecovery     : An unknown error occurred while trying to connect to https://corporate.symphony.com:443/relay. Please check below for more information: Not allowed to make this call when KeyManager is not registered in the pod
2022-09-14 23:54:34.514 ERROR 1 --- [onyBdk_Datafeed] c.s.b.c.s.d.impl.AbstractDatafeedLoop    : An unknown error occurred while trying to connect to https://corporate.symphony.com:443/agent. Please check below for more information:
{}
com.symphony.bdk.http.api.ApiRuntimeException: com.symphony.bdk.http.api.ApiException: Not allowed to make this call when KeyManager is not registered in the pod
        at com.symphony.bdk.core.auth.impl.AuthenticationRetry.executeAndRetry(AuthenticationRetry.java:90) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.core.auth.impl.AbstractBotAuthenticator.retrieveKeyManagerToken(AbstractBotAuthenticator.java:48) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.core.auth.impl.BotAuthenticatorRsaImpl.retrieveKeyManagerToken(BotAuthenticatorRsaImpl.java:66) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.core.auth.impl.AuthSessionImpl.refreshAllTokens(AuthSessionImpl.java:105) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.core.auth.impl.AuthSessionImpl.refresh(AuthSessionImpl.java:87) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.core.service.datafeed.impl.AbstractDatafeedLoop.refresh(AbstractDatafeedLoop.java:155) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.core.retry.RecoveryStrategy.runRecovery(RecoveryStrategy.java:48) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.core.retry.RetryWithRecovery.handleRecovery(RetryWithRecovery.java:159) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.core.retry.RetryWithRecovery.executeOnce(RetryWithRecovery.java:112) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at io.github.resilience4j.retry.Retry.lambda$decorateCheckedSupplier$3f69f149$1(Retry.java:137) ~[resilience4j-retry-1.7.1.jar!/:1.7.1]
        at io.github.resilience4j.retry.Retry.executeCheckedSupplier(Retry.java:419) ~[resilience4j-retry-1.7.1.jar!/:1.7.1]
        at com.symphony.bdk.core.retry.resilience4j.Resilience4jRetryWithRecovery.execute(Resilience4jRetryWithRecovery.java:65) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.core.service.datafeed.impl.DatafeedLoopV2.runLoop(DatafeedLoopV2.java:110) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.core.service.datafeed.impl.AbstractDatafeedLoop.start(AbstractDatafeedLoop.java:87) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.core.service.datafeed.impl.AbstractAckIdEventLoop.start(AbstractAckIdEventLoop.java:19) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.spring.service.LoopAsyncLauncherService.uncheckedStart(LoopAsyncLauncherService.java:87) ~[symphony-bdk-core-spring-boot-starter-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.http.api.tracing.MDCUtils$MdcRunnable.run(MDCUtils.java:59) ~[symphony-bdk-http-api-2.8.0.jar!/:2.8.0]
        at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
Caused by: com.symphony.bdk.http.api.ApiException: Not allowed to make this call when KeyManager is not registered in the pod
        at com.symphony.bdk.http.jersey2.ApiClientJersey2.invokeAPI(ApiClientJersey2.java:192) ~[symphony-bdk-http-jersey2-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.gen.api.AuthenticationApi.pubkeyAuthenticatePostWithHttpInfo(AuthenticationApi.java:496) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]        at com.symphony.bdk.gen.api.AuthenticationApi.pubkeyAuthenticatePost(AuthenticationApi.java:443) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.core.auth.impl.BotAuthenticatorRsaImpl.doRetrieveToken(BotAuthenticatorRsaImpl.java:75) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.core.auth.impl.AbstractBotAuthenticator.lambda$retrieveKeyManagerToken$0(AbstractBotAuthenticator.java:49) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.core.retry.RetryWithRecovery.executeOnce(RetryWithRecovery.java:105) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at io.github.resilience4j.retry.Retry.lambda$decorateCheckedSupplier$3f69f149$1(Retry.java:137) ~[resilience4j-retry-1.7.1.jar!/:1.7.1]
        at io.github.resilience4j.retry.Retry.executeCheckedSupplier(Retry.java:419) ~[resilience4j-retry-1.7.1.jar!/:1.7.1]
        at com.symphony.bdk.core.retry.resilience4j.Resilience4jRetryWithRecovery.execute(Resilience4jRetryWithRecovery.java:65) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        at com.symphony.bdk.core.auth.impl.AuthenticationRetry.executeAndRetry(AuthenticationRetry.java:85) ~[symphony-bdk-core-2.8.0.jar!/:2.8.0]
        ... 17 common frames omitted