Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: avoid swollowing error #205

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions tencentcloud/common/credential.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,10 +116,10 @@ def get_role_name(self):
try:
resp = urlopen(self._role_endpoint)
self.role = resp.read().decode("utf8")
return self.role
except Exception as e:
raise TencentCloudSDKException("ClientError.MetadataError", str(e))
finally:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

这里有可能是故意如此,区别的点是,到底是获取角色名失败后就抛出异常,还是继续使用原先的角色名。如果获取角色名失败,通常是medatada出问题了,那么后续获取toen时也会失败,最终就是密钥失败,所以晚失败和早失败比没有差别。提前抛出异常,就是让获取角色名成为关键前置条件,而实际上,只有首次获取角色名才是关键前置条件,后续虽然也有极低概率有(角色名被用户换了),但不是常态。所以早失败可能引入更多问题。

不过以上讨论可能都太极端了,也许在sdk场景下我们不需要考虑如此复杂细微的差异。

return self.role


def _need_refresh(self):
ts_remain = self._expired_ts - int(time.time())
Expand Down