Мы наблюдаем ситуацию, когда после сбоя обновления токена входа в систему из-за исключения времени ожидания подключения (подробнее см. Ниже), каждый последующий вызов Vault возвращает 403, возможно, потому, что токен с истекшим сроком действия передается в Vault.
Я смотрел на класс LifecycleAwareSessionManager и заметил, что новый логин () принудительно выполняется только для нулевого токена или когда клиент может подключиться к серверу и получает соответствующий http 4XX исключение (в потоке продления).
Но как насчет случая, когда клиент не смог подключиться к серверу Vault из-за тайм-аута подключения (в асинхронном потоке), поэтому для токена явно не установлено значение null, и поток обновления никогда не выполняется.
Я считаю, что, поскольку поток обновления никогда не выполняется или новый вход в систему не выполняется принудительно, клиент Vault Spring в нашем случае обращается в Vault с истекшим токеном и получает 403-е.
Не следует ли сбрасывать токен входа в систему для всех видов исключений, чтобы принудительно выполнить новый вход для последующих запросов в хранилище?
Мы находимся на 1.1.1.RELEASE.
"message": "Cannot renew VaultToken",
"logger_name": "org.springframework.vault.authentication.LifecycleAwareSessionManager",
"thread_name": "spring-vault-ThreadPoolTaskScheduler-1",
"stack_trace": "org.springframework.vault.VaultException: Cannot refresh token; nested exception is org.springframework.web.client.ResourceAccessException: I/O error on POST request for \"https://<server>:<port>/v1/auth/token/renew-self\": Connect to <server>:<port> failed: connect timed out; nested exception is org.apache.http.conn.ConnectTimeoutException
connect timed out\n\tat org.springframework.vault.authentication.LifecycleAwareSessionManager.renewToken(LifecycleAwareSessionManager.java:209)\n\tat org.springframework.vault.authentication.LifecycleAwareSessionManager$1.run(LifecycleAwareSessionManager.java:261)