agent: keep backing off on lines that stay down

The control layer keeps doubling after the first minute up to ten minutes, and the QUIC redial doubles after twelve short attempts up to five minutes, instead of retrying every minute or every five seconds forever.
This commit is contained in:
justme committed 2026-10-22 05:28:29 +08:00
1 parent e0376b5e33
commit 4c31a4a79e
4 files changed
+24 -3

No files matched your search

@@ -17,6 +17,8 @@ public sealed class ControlBackoff
TimeSpan.FromSeconds(32),
];
private const int MaxMinutes = 10;
private int _attempt;
public int Attempts => Volatile.Read(ref _attempt);
@@ -24,7 +26,13 @@ public sealed class ControlBackoff
public TimeSpan Next()
{
int attempt = Interlocked.Increment(ref _attempt) - 1;
return attempt < s_delays.Length ? s_delays[attempt] : TimeSpan.FromMinutes(1);
if (attempt < s_delays.Length)
{
return s_delays[attempt];
}
// 表走完还连不上(对端关了、这台机器没有这条路由):一分钟起继续翻倍,最长十分钟,不再每分钟白白重试一次、写三条日志
return TimeSpan.FromMinutes(Math.Min(MaxMinutes, 1 << Math.Min(attempt - s_delays.Length, 4)));
}
public void Reset() => Interlocked.Exchange(ref _attempt, 0);