Space Drain 无法重新暂存:无法从 UAA 获取令牌

Posted

技术标签:

【中文标题】Space Drain 无法重新暂存:无法从 UAA 获取令牌【英文标题】:Space Drain Failing to Restage with : Failed to fetch tokens from UAA 【发布时间】:2019-08-10 03:07:56 【问题描述】:

我正在通过 CLI 部署空间消耗,它可以正常工作/按预期运行大约 10 天......然后当它尝试在刷新令牌到期时重新部署自身时,我在空间消耗日志中收到这些错误。

2019-08-09T19:32:18.897-07:00 [APP/PROC/WEB/0] [ERR] 2019/08/10 02:32:18 starting space drain...
2019-08-09T19:32:19.044-07:00 [APP/PROC/WEB/0] [ERR] 2019/08/10 02:32:19 Failed to fetch tokens from UAA: Unexpected status code: 401

这似乎与此问题直接相关,并且问题中定位/引用的代码实际上我可以看到生成确切错误的代码。

https://github.com/cloudfoundry/cf-drain-cli/issues/21

但是,我通读了该问题,但即使该问题已关闭,我仍不清楚解决方法是什么?

如果我尝试重新部署它,它会再次失败,我让它工作的唯一方法是清理它并使用

重新部署它
cf drain-space syslog://<sysloghost>:<port> --drain-name my-space-drain

然后它再次工作,直到令牌似乎过期......重复等等。

【问题讨论】:

【参考方案1】:

但是,我通读了该问题,但即使该问题已关闭,我仍不清楚解决方法是什么?

我也没有看到解决该问题的方法。那里的解释也不完全清楚。刷新令牌最终会过期。 UAA 不允许您永远保留一个(至少在撰写本文时)。您也不能刷新刷新令牌,所以当它过期时就是这样。你唯一能做的就是再次登录,所以除非应用程序正在存储用户凭据,它似乎并没有这样做并且是一个坏主意,否则它无法获得另一个刷新令牌。这可能就是您经常遇到此问题的原因。

如果我尝试重新部署它,它会再次失败,我让它工作的唯一方法是清理它并重新部署它

我认为这是因为应用程序的配置方式。它看起来像it's being given a refresh token as an env variable。因此,重新分期无济于事。

当该令牌过期时,您需要使用新的刷新令牌更新 env 变量。您可以从~/.cf/config.json 中获取当前的刷新令牌(这是 cf cli 插件正在做的事情,请参阅[1] 和 [2]。这是您当前使用 cf cli 登录的用户的刷新令牌(除非您使用一个备用的 $CF_HOME,那么它将在 $CF_HOME 下)。

如果您使用的是 Linux/Mac,则可以运行 jq -r .RefreshToken ~/.cf/config.json 来获取令牌。

获得令牌后,运行 cf set-env 并使用新令牌更新 REFRESH_TOKEN 环境变量。这应该可以解决它,并且应该比清理和重新部署要快一些。

希望有帮助!

【讨论】:

我知道我不应该在这里感谢,但我还不能投票,所以谢谢。 (迟到的)

以上是关于Space Drain 无法重新暂存:无法从 UAA 获取令牌的主要内容,如果未能解决你的问题,请参考以下文章

无法取消暂存分支

有没有办法让 Git 暂存/取消暂存文件而不是更改?

[NDK_PROJECT_PATH=null]。无法从与 PARALLEL-SPACE 相关的示例项目中解决 Android-NDK 错误

[暂存]OEM无法链接到数据库实例

雪花 - 无法将暂存区域中的 JSON 拆分文件复制到表中

无法在 magento 2.4.3 中查看类别下的产品