agent-substrate / agent-substrate/substrate

atenet-router: requests to running actors consume parking-lot slots

未關閉
#1,081 3 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
area/network kind/bug
主要語言
Go
星號
1.8k
分支
316
平均合併
2 天 43 分鐘
30 天內合併 PR
287

描述

The parking lot admits every request, not just ones waiting for a resume: [HandleRequestHeaders](https://github.com/agent-substrate/substrate/blob/a0523de4e7e81a70734511b32665b3072d2d9682/cmd/atenet/internal/router/ingress/ingress.go#L119-L130) calls parking.enter() before ResumeActor, so even a request to a RUNNING actor holds a slot during its ateapi lookup.

This breaks the [design's own guarantee](https://github.com/agent-substrate/substrate/blob/main/docs/request-parking.md#behavior)
> a saturated lot cannot starve requests to already-running actors, at any lot size

[TestHandleRequestHeaders_ParkingLotFull](https://github.com/agent-substrate/substrate/blob/a0523de4e7e81a70734511b32665b3072d2d9682/cmd/atenet/internal/router/ingress/ingress_test.go#L343) explicitly asserts the contradicting behavior: a request to an already-running actor "is shed with a 503 before any resume is attempted" when the lot is full - i.e., the starvation the design doc says cannot happen is locked in as expected behavior.

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。