# SC311：排空期间接受了新请求

> SC311（排空期间接受了新请求）表示撤回就绪状态之后，新发送的请求没有被拒绝。修复方法是返回 503，或者停止监听。

Source: https://shutdown.jscrate.dev/zh/docs/codes/sc311
Last updated: 2026-09-23

`SC311` 表示就绪状态撤回之后、旧请求仍在排空时，服务接受了新的工作。进程退出时，这些新工作可能会被切断。

| | |
| --- | --- |
| 诊断码 | `SC311` (FAIL) |
| 阶段 | 排空流量 |
| CLI 退出码 | 1 |
| 含义 | 撤回就绪状态后发送的新请求得到了正常响应，没有被拒绝。 |
| 输出信息 | `New request was not rejected during drain: <status>` |
| 首先检查 | 关闭期间用 `rejectStatuses` 中的状态码（默认 503）拒绝新的工作，或者停止接受连接。 |

## 服务应该如何拒绝新请求？

二选一：

- 在短暂的排空窗口内继续监听，对新请求返回 `503`。
- 关闭监听器，让连接被拒绝。

然后让 `newRequests.rejectStatuses` 和 `newRequests.allowConnectionRefused` 与你的选择保持一致。

```json title="shutdown-check.json"
{
  "shutdown": {
    "readinessWithdrawal": true,
    "newRequests": {
      "path": "/test/new-work",
      "rejectStatuses": [503],
      "allowConnectionRefused": true
    }
  }
}
```

超时不算拒绝。服务必须返回配置中的状态码，或者明确拒绝连接。

## 如何确认已修复？

时间线应在 `readiness withdrawn` 之后、原来的请求结束之前，显示 `new request rejected — HTTP 503` 或连接被拒绝。

用于拒绝测试的路由要安全，也要有代表性。一个总是返回 `503` 的特殊路由能让测试通过，却证明不了真正的新工作会被挡住。

## 相关内容

- [安全地排空新流量](https://shutdown.jscrate.dev/zh/docs/guides/readiness-and-draining)
- [配置 `newRequests`](https://shutdown.jscrate.dev/zh/docs/configuration#shutdown)
- [SC310：未撤回就绪状态](https://shutdown.jscrate.dev/zh/docs/codes/sc310)
- [SC312：拒绝测试前工作已结束](https://shutdown.jscrate.dev/zh/docs/codes/sc312)
