leancloud / leanengine-node-sdk

LeanEngine Node.js SDK

Home Page:https://leancloud.cn

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

预备环境休眠报错提示为错误的 503

BinaryHB opened this issue · comments

来源:
https://leanticket.cn/t/leancloud/5476

问题描述

1、这个用户 iOS rpc 调用预备环境,报错:
Error Domain=AVOS Cloud Error Domain Code=503 "Exceeded Limit" UserInfo={error=Exceeded Limit, NSLocalizedDescription=Exceeded Limit, code=503}
2、然后用户去错误码页面里,查看 503 的说明是:
应用被临时禁用或者进入只读状态,通常是进行运维或者故障处理操作,我们会提前告知开发者。
3、只能打紧急运维电话找我们了。

原因

实际上,这个报错是用户调用了预备环境,并超过了每日 18h 的使用时间,而触发了强制休眠所导致的报错。

改进

去掉 503 错误,提示用户是因为使用预备环境触发了强制休眠

完整的响应应该是这样的:

{
  "code": 503,
  "error": "Exceeded Limit",
  "message": "应用超过免费限额或并发限制,详情参考:https://leancloud.cn/docs/leanengine_plan.html#%E4%BC%91%E7%9C%A0%E7%AD%96%E7%95%A5 。"
}

503 确实和文档不一样,在错误代码文档加一个新的错误代码?hogplum 里还有几个其他的错误码需要做类似的修改。然后其实客户端 SDK 可以考虑在有 message 字段的时候把 message 一起打印出来,因为 message 里有链接,所以也不太适合直接作为错误名。

https://github.com/leancloud/hipache/pull/43

因为对于用户而言,他们查错误只能从文档错误码来查。这就和 hogplum 的部分错误码的解释冲突了。

所以,我们能不能把它们都区分开,或者有重叠含义的可以合并?

目前的情况下是云引擎并没有使用 https://leancloud.cn/docs/error_code.html 上的错误码,用户可见的错误码只有 Hogplum 返回的,文档在这里: https://github.com/leancloud/cloud-code/wiki/Hogplum#%E9%94%99%E8%AF%AF%E4%BB%A3%E7%A0%81 大体上是按照 HTTP Status Code 的语义来设置的,Body 内的错误代码和 HTTP Header 里的相同,我也不想改动它们。

我的建议是,在 https://leancloud.cn/docs/error_code.html 上与 Hogplum 重叠的状态码上添加一些说明,类似于「503 在云引擎中还表示达到强制休眠限制」这样。同时客户端在收到错误响应时,如果有 message 字段就把 message 也打印出来(或添加到异常对象上)。

@sdjcw @aisk

@jysperm Hogplum 错误码,后续还会继续增加吧?如果再增加的话,只要出现冲突的时候,记得增加文档错误码说明。

我现在先把 503 的解释,增补到 doc 文档错误码里去。