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:
co-authored by
Claude Opus 4.6
parent
8c2416c9ea
commit
f9ffdaef5f
@@ -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}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user