Troubleshooting · graph
Use when
A submit was refused with
workspace_review_conflict, or validate reports witness_stale, or a workspace write reports workspace_revision_conflict.Looking for something else?
A submit that is partly applied (problem A submit is partly applied or unresolved). A direct entity update that was refused (card Entity, rule entity.1).
Signs
penumbra graph workspace submit "<name>" --revision <n>exits with code 3 and printsworkspace_review_conflict: The reviewed workspace revision or submission has changed. Read it again before applying or resuming.- Validate or submit prints the diagnostic
witness_stalewith text such asmoved from revision A to B since it was hydrated; refresh it to continue. - A write to the workspace returns
workspace_revision_conflict, with the textanother call changed this workspace at the same time. - Nothing was applied.
Why it happens
A change to a workspace raises its revision. You reviewed revisionn. Before
you submitted, someone else or another call of yours changed the workspace, so
the revision is no longer n. The reviewed revision is a guard (card Workspace,
rule workspace.4).
A witness_stale diagnostic has a second cause. The existing entity that you
checked out changed after you checked it out (rule workspace.8).
If the workspace has status submitted, you may have used the wrong revision to
resume. Then follow problem submit-partly-applied.
What Penumbra does
By itself:- Refuses the submit before it compiles the workspace or has any effect.
- Leaves the workspace and its staged items as they were.
- Blocks a submit when an edit wins the final check at the same moment.
- Read the workspace again.
- Decide if the new content is still what the person reviewed.
- Validate, then submit the new revision.
- Nothing merges two sets of edits.
- Known issue: a submit that must wait for approval can return
pendingeven when the revision you sent is already out of date. Read the workspace again after the approval is decided, before you trust the result.
Do
- Read the workspace:
penumbra graph workspace show "<name>". Note its revision and its items. - Compare the items with what the person reviewed. If an item changed, show the person the difference before you go on.
- If the diagnostic is
witness_stale, refresh the out-of-date item withpenumbra graph workspace refresh "<name>" <handle>. Your change stays on the fields that did not change. A field that changed loses your change and is named in a flag (rule workspace.13). Set that field again withpenumbra graph workspace modify. - Validate:
penumbra graph workspace validate "<name>". Use the revision in itsnext:line. If that line namespenumbra graph workspace showinstead of a submit, review flags remain: read the workspace, then submit its revision. - Submit that revision:
penumbra graph workspace submit "<name>" --revision <new>.
Don’t
- Don’t send the same submit again with the new revision before you read the workspace. That applies changes that nobody reviewed.
- Don’t leave out
--revisionto get past the error. Without it, nothing checks which revision applies. - Don’t check the same entity out again to refresh it. The CLI says that it is
already hydrated, and the old copy stays. Use
penumbra graph workspace refresh. - Don’t use the current workspace revision to resume a submit that is already
submitted.
Check
penumbra graph workspace validate "<name>"printsvalid: yesat the revision that you pass to the submit.- The submit returns
applied, or waits for approval (problem change-waits-for-approval).