mirror of
https://github.com/bunny-lab-io/Borealis.git
synced 2025-12-15 23:25:48 -07:00
Adjusted Remote Shell Operator Attachment Auto-Retries
This commit is contained in:
@@ -322,6 +322,9 @@ export default function ReverseTunnelPowershell({ device }) {
|
|||||||
stopPolling();
|
stopPolling();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (resp.status.open_sent) {
|
||||||
|
setMilestones((prev) => ({ ...prev, channelOpened: true }));
|
||||||
|
}
|
||||||
if (resp.status.ack) {
|
if (resp.status.ack) {
|
||||||
setSessionState("connected");
|
setSessionState("connected");
|
||||||
setMilestones((prev) => ({ ...prev, ack: true, active: true }));
|
setMilestones((prev) => ({ ...prev, ack: true, active: true }));
|
||||||
@@ -424,34 +427,39 @@ export default function ReverseTunnelPowershell({ device }) {
|
|||||||
setMilestones((prev) => ({ ...prev, operatorJoined: true }));
|
setMilestones((prev) => ({ ...prev, operatorJoined: true }));
|
||||||
setStatusSeverity("info");
|
setStatusSeverity("info");
|
||||||
setStatusMessage("Joining tunnel...");
|
setStatusMessage("Joining tunnel...");
|
||||||
const joinResp = await emitAsync(socket, "join", { tunnel_id: lease.tunnel_id });
|
const joinResp = await emitAsync(socket, "join", { tunnel_id: lease.tunnel_id }, 5000);
|
||||||
if (joinResp?.error) {
|
if (joinResp?.error) {
|
||||||
|
const attempt = (joinAttemptsRef.current += 1);
|
||||||
|
const isTimeout = joinResp.error === "timeout";
|
||||||
if (joinResp.error === "unknown_tunnel") {
|
if (joinResp.error === "unknown_tunnel") {
|
||||||
setSessionState("waiting_agent");
|
setSessionState("waiting_agent");
|
||||||
setStatusSeverity("info");
|
setStatusSeverity("info");
|
||||||
setStatusMessage("Waiting for agent to establish tunnel...");
|
setStatusMessage("Waiting for agent to establish tunnel...");
|
||||||
joinAttemptsRef.current += 1;
|
} else if (isTimeout || joinResp.error === "attach_failed") {
|
||||||
const attempt = joinAttemptsRef.current;
|
setSessionState("waiting_agent");
|
||||||
if (attempt <= 15) {
|
setStatusSeverity("warning");
|
||||||
joinRetryRef.current = setTimeout(() => connectSocket(lease, { isRetry: true }), 1000);
|
setStatusMessage("Tunnel join timed out. Retrying...");
|
||||||
} else {
|
|
||||||
setSessionState("error");
|
|
||||||
setTunnel(null);
|
|
||||||
setStatusSeverity("warning");
|
|
||||||
setStatusMessage("Agent did not attach to tunnel (timeout). Try Connect again.");
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
debugLog("join error", joinResp);
|
debugLog("join error", joinResp);
|
||||||
setSessionState("error");
|
setSessionState("error");
|
||||||
setStatusSeverity("error");
|
setStatusSeverity("error");
|
||||||
setStatusMessage(joinResp.error);
|
setStatusMessage(joinResp.error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (attempt <= 5) {
|
||||||
|
joinRetryRef.current = setTimeout(() => connectSocket(lease, { isRetry: true }), 800);
|
||||||
|
} else {
|
||||||
|
setSessionState("error");
|
||||||
|
setTunnel(null);
|
||||||
|
setStatusSeverity("warning");
|
||||||
|
setStatusMessage("Operator could not attach to tunnel. Try Connect again.");
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const dims = measureTerminal();
|
const dims = measureTerminal();
|
||||||
debugLog("ps_open emit", { tunnelId: lease.tunnel_id, dims });
|
debugLog("ps_open emit", { tunnelId: lease.tunnel_id, dims });
|
||||||
setMilestones((prev) => ({ ...prev, channelOpened: true }));
|
setMilestones((prev) => ({ ...prev, channelOpened: true }));
|
||||||
const openResp = await emitAsync(socket, "ps_open", dims);
|
const openResp = await emitAsync(socket, "ps_open", dims, 5000);
|
||||||
if (openResp?.error && openResp.error === "ps_unsupported") {
|
if (openResp?.error && openResp.error === "ps_unsupported") {
|
||||||
// Suppress warming message; channel will settle once agent attaches.
|
// Suppress warming message; channel will settle once agent attaches.
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user