Expand description
TC 的对外操作,与协议无关。
HTTP 和 gRPC 两套接口都只做「协议 ↔ 这一层」的转换,业务判断全在这里。 分成两处写迟早会漂移 —— 而这一层漂移的后果是「同一个请求走 HTTP 被拒、 走 gRPC 却受理了」,这种不一致在事务系统里是要命的。
错误用 ApiError 表达,由各协议层翻译成自己的表示:
| ApiError | HTTP | gRPC |
|---|---|---|
BadRequest | 400 | INVALID_ARGUMENT |
NotFound | 404 | NOT_FOUND |
Conflict | 200 + dtm_result=FAILURE | FAILED_PRECONDITION |
Internal | 500 | INTERNAL |
Conflict 在 HTTP 上返回 200 是刻意保留的历史行为(已终结的事务再调
abort),换成 4xx 会打破现有客户端。
Structs§
- Api
- Branch
View - Register
Branch - 分支登记请求。TCC 用 confirm/cancel,XA 用 commit/rollback。
- Trans
View