Preserve last_failure_error across instance recreation, fix RDMA banner wording

- apply_instance_created no longer clears last_failure_error so the
  error context persists while the new instance starts up
- Dashboard retryError shows the error without (N/3) prefix when
  consecutiveFailures is 0 (instance was recreated)
- Jaccl warning tooltip now says "experimental RDMA driver in macOS"

Co-Authored-By: Claude Opus 4.6 <[email protected]>
This commit is contained in:
Alex Cheema
2026-02-11 16:48:30 -08:00
co-authored by Claude Opus 4.6
parent 8c2416c9ea
commit f9ffdaef5f
3 changed files with 9 additions and 6 deletions
+7 -3
View File
@@ -2067,7 +2067,7 @@
>
<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.
with the experimental RDMA driver in macOS.
</p>
<p class="text-xs text-white/60 mb-2">
<span class="text-red-300">Error:</span>
@@ -2657,7 +2657,9 @@
: getMetaInstancePlacingStatus(id)}
{@const metaData = item.isMetaInstance ? metaInstancesData[id] : null}
{@const retryError = metaData?.lastFailureError && !downloadInfo.isFailed
? `(${((metaData.consecutiveFailures - 1) % 3) + 1}/3) ${metaData.lastFailureError}`
? metaData.consecutiveFailures > 0
? `(${((metaData.consecutiveFailures - 1) % 3) + 1}/3) ${metaData.lastFailureError}`
: metaData.lastFailureError
: null}
{@const statusText = downloadInfo.statusText}
{@const isDownloading = downloadInfo.isDownloading}
@@ -3523,7 +3525,9 @@
: getMetaInstancePlacingStatus(id)}
{@const metaData = item.isMetaInstance ? metaInstancesData[id] : null}
{@const retryError = metaData?.lastFailureError && !downloadInfo.isFailed
? `(${((metaData.consecutiveFailures - 1) % 3) + 1}/3) ${metaData.lastFailureError}`
? metaData.consecutiveFailures > 0
? `(${((metaData.consecutiveFailures - 1) % 3) + 1}/3) ${metaData.lastFailureError}`
: metaData.lastFailureError
: null}
{@const statusText = downloadInfo.statusText}
{@const isDownloading = downloadInfo.isDownloading}
+2 -2
View File
@@ -664,7 +664,7 @@ def test_apply_instance_retrying_skips_missing_runners():
def test_apply_instance_created_resets_failure_counter():
"""InstanceCreated resets consecutive_failures on the MetaInstance."""
"""InstanceCreated resets consecutive_failures but preserves last_failure_error."""
meta = _meta_instance().model_copy(
update={"consecutive_failures": 3, "last_failure_error": "old error"}
)
@@ -674,7 +674,7 @@ def test_apply_instance_created_resets_failure_counter():
new_state = apply(state, IndexedEvent(idx=0, event=event))
mi = new_state.meta_instances[meta.meta_instance_id]
assert mi.consecutive_failures == 0
assert mi.last_failure_error is None
assert mi.last_failure_error == "old error"
assert mi.placement_error is None
-1
View File
@@ -210,7 +210,6 @@ def apply_instance_created(event: InstanceCreated, state: State) -> State:
instance.meta_instance_id,
placement_error=None,
consecutive_failures=0,
last_failure_error=None,
)
return state.model_copy(update=update)