dashboard: show warning banner for [jaccl] RDMA driver errors

Detect errors containing "[jaccl]" in MetaInstance failure errors and
display a red dismissible alert banner. The tooltip explains this is a
macOS RDMA driver issue and that the affected machine needs to be
restarted. Alert re-appears if a new error arrives after dismissal.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
This commit is contained in:
Alex Cheema
2026-02-17 10:22:27 -08:00
co-authored by Claude Opus 4.6
parent 4f538e553a
commit c2a356014c
+97 -2
View File
@@ -181,6 +181,17 @@
});
let tb5InfoDismissed = $state(false);
// Detect [jaccl] RDMA driver errors from MetaInstance failure errors
const jacclError = $derived.by(() => {
for (const mi of Object.values(metaInstancesData)) {
if (mi.lastFailureError?.includes("[jaccl]")) {
return mi.lastFailureError;
}
}
return null;
});
let jacclDismissedError = $state<string | null>(null);
// Helper to get friendly node name from node ID
function getNodeName(nodeId: string): string {
const node = data?.nodes?.[nodeId];
@@ -2018,8 +2029,71 @@
</script>
{#snippet clusterWarnings()}
{#if tbBridgeCycles.length > 0 || macosVersionMismatch || (tb5WithoutRdma && !tb5InfoDismissed)}
{#if tbBridgeCycles.length > 0 || macosVersionMismatch || (tb5WithoutRdma && !tb5InfoDismissed) || (jacclError && jacclError !== jacclDismissedError)}
<div class="absolute top-4 left-4 flex flex-col gap-2 z-40">
{#if jacclError && jacclError !== jacclDismissedError}
<div class="group relative" role="alert">
<div
class="flex items-center gap-2 px-3 py-2 rounded border border-red-500/50 bg-red-500/10 backdrop-blur-sm cursor-help"
>
<svg
class="w-5 h-5 text-red-400 flex-shrink-0"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
stroke-width="2"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d={warningIconPath}
/>
</svg>
<span class="text-sm font-mono text-red-200">
JACCL RDMA ERROR
</span>
<button
type="button"
onclick={() => (jacclDismissedError = jacclError)}
class="ml-1 text-red-300/60 hover:text-red-200 transition-colors cursor-pointer"
title="Dismiss"
>
<svg
class="w-4 h-4"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
stroke-width="2"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d="M6 18L18 6M6 6l12 12"
/>
</svg>
</button>
</div>
<!-- Tooltip on hover -->
<div
class="absolute top-full left-0 mt-2 w-80 p-3 rounded border border-red-500/30 bg-exo-dark-gray/95 backdrop-blur-sm opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 z-50 shadow-lg"
>
<p class="text-xs text-white/80 mb-2">
A macOS RDMA driver error was detected. This is a known issue
with the experimental jaccl driver.
</p>
<p class="text-xs text-white/60 mb-2">
<span class="text-red-300">Error:</span>
{jacclError}
</p>
<p class="text-xs text-white/60">
<span class="text-red-300">To fix:</span> Restart the affected machine.
There is currently no other workaround for this issue.
</p>
</div>
</div>
{/if}
{#if tbBridgeCycles.length > 0}
{@const cycle = tbBridgeCycles[0]}
{@const serviceName = getTbBridgeServiceName(cycle)}
@@ -2188,8 +2262,29 @@
{/snippet}
{#snippet clusterWarningsCompact()}
{#if tbBridgeCycles.length > 0 || macosVersionMismatch || (tb5WithoutRdma && !tb5InfoDismissed)}
{#if tbBridgeCycles.length > 0 || macosVersionMismatch || (tb5WithoutRdma && !tb5InfoDismissed) || (jacclError && jacclError !== jacclDismissedError)}
<div class="absolute top-2 left-2 flex flex-col gap-1">
{#if jacclError && jacclError !== jacclDismissedError}
<div
class="flex items-center gap-1.5 px-2 py-1 rounded border border-red-500/50 bg-red-500/10 backdrop-blur-sm"
title="JACCL RDMA driver error — restart affected machine"
>
<svg
class="w-3.5 h-3.5 text-red-400"
fill="none"
viewBox="0 0 24 24"
stroke="currentColor"
stroke-width="2"
>
<path
stroke-linecap="round"
stroke-linejoin="round"
d={warningIconPath}
/>
</svg>
<span class="text-[10px] font-mono text-red-200">JACCL ERROR</span>
</div>
{/if}
{#if tbBridgeCycles.length > 0}
<div
class="flex items-center gap-1.5 px-2 py-1 rounded border border-yellow-500/50 bg-yellow-500/10 backdrop-blur-sm"