-
Notifications
You must be signed in to change notification settings - Fork 626
[Fix] Accept proof submission even it has been timeout #1764
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
noel2004
wants to merge
1
commit into
develop
Choose a base branch
from
fix/accept_timeout_submission
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+8
−8
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Timeout now only logs/metrics and proceeds — double‑check interaction with ProvingStatus guard and clean up comment/log text
The new behavior (incrementing
validateFailureProverTaskTimeoutand logging, but not returning) matches the PR goal of accepting late proofs after a timeout. A couple of points to verify/tidy up:Interaction with “submit twice” guard (lines 315‑329)
If timeouts elsewhere in the system are recorded by setting the task’s
ProvingStatustotypes.ProverProofInvalid(orValid), then the early guard:will fire before this timeout block, and late proofs for such tasks will still be rejected. For the new behavior to be effective, timed‑out tasks you still want to accept later proofs for must not be marked
ProverProofValid/ProverProofInvalidbefore the submission arrives. Please confirm that your timeout handling only setsFailureTypetoProverTaskFailureTypeTimeout(seecommon/types/db.go:98-104) and leavesProvingStatusin a state that passes this guard.Metrics semantics
validateFailureProverTaskTimeoutis documented as “validate failure timeout”, but it now increments even for proofs you accept and verify successfully. That’s probably fine if you interpret it as “number of submissions whose task had previously timed out”, but it will no longer be a strict subset ofvalidateFailureTotal(which only increments on non‑nilerr). Just keep this in mind for dashboards/alerts.Minor comment & log clarity (optional polish)
SessionInfoFailureTimeout, but the actual enum isProverTaskFailureTypeTimeout."proof submit proof have timeout"is hard to read.You could make these clearer with something like:
// If prover task FailureType is ProverTaskFailureTypeTimeout, the submission has timed out, but we still accept it.
if types.ProverTaskFailureType(proverTask.FailureType) == types.ProverTaskFailureTypeTimeout {
m.validateFailureProverTaskTimeout.Inc()
To help verify how timeouts are recorded across the codebase, you can run:
🏁 Script executed:
Length of output: 6120
Critical: Timeout-marked tasks are rejected before reaching the new acceptance logic
The script output reveals a blocking issue with the intended behavior. When a timeout is detected,
collect_proof.go:237calls:This sets
ProvingStatustoProverProofInvalid. However, the guard at lines 315–329 rejects submissions before the new timeout handler at lines 364–369 can execute:Result: Late proofs for timed-out tasks will always be rejected by the "cannot submit twice" guard, never reaching the new acceptance logic. The PR's goal cannot be achieved with this implementation.
Fix: Either (1) skip the "submit twice" guard when
FailureType == ProverTaskFailureTypeTimeout, or (2) leave timed-out tasks withProvingStatusunset (or set to a non-rejected state) so they pass the guard. The latter likely requires changes tocollect_proof.go:237as well.🤖 Prompt for AI Agents