From f54f59bff9eb53845d47f07cbb6d0fe5fe9f85f4 Mon Sep 17 00:00:00 2001 From: samosvalishe Date: Thu, 21 May 2026 01:09:54 +0300 Subject: [PATCH] =?UTF-8?q?fix(bondserver):=20=D0=BE=D1=82=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D1=80=D0=B8=20spin=20=D0=B8=D0=B7-=D0=B7?= =?UTF-8?q?=D0=B0=20=D0=BF=D0=BE=D1=82=D0=B5=D1=80=D0=B8=20lane?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit writeToNextLane теперь зовёт c.cancel() сразу, когда removeLane возвращает left==0, вместо ожидания таймаута через 10ms sleep-loop. Убирает spin, когда все lane пропали, а readLane уже отменил контекст. --- internal/proxy/bondserver/bondserver.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/proxy/bondserver/bondserver.go b/internal/proxy/bondserver/bondserver.go index 417782a..473bb9e 100644 --- a/internal/proxy/bondserver/bondserver.go +++ b/internal/proxy/bondserver/bondserver.go @@ -336,6 +336,7 @@ func (c *serverConn) writeToNextLane(typ byte, seq uint64, data []byte, laneIdx left := c.removeLane(lane) c.deps.log().Errorf("[bond %d] lane %d write error: %v (lanes=%d)", c.id, lane.index, err, left) if left == 0 { + c.cancel() return err } }