Troubleshooting · extraction
Use when
A key or a connected agent started an extraction, the owner approved it, and you have no workspace name or run id to follow.
Looking for something else?
A start that still waits for the owner (problem A change returned pending). A reply that was lost (problem The reply to a change was lost). A run that is working but slow (card rule extraction.10).
Signs
- A start returned
outcome: pendingwith exit code 4. It printed a handle and an approval address, and it printed noextraction:line. - The person says the owner approved it, and
penumbra graph extractionshas no workspace name and no run id to use. penumbra operations wait <handle>printsoutcome: pending (approved)oroutcome: pending (running).penumbra operations wait <handle>prints a reason such asdeniedorexpiredand no run.
Why it happens
A held start does nothing until the owner approves it. Until then no run exists, and no workspace exists, because a run opens its own workspace when Penumbra admits it (card rule extraction.15). The pending answer holds a handle for the held request and nothing else. After the approval, Penumbra runs the request once. It stores the answer under the handle, and only the key or connection that asked can read it.What Penumbra does
By itself:- Holds the start, and creates no run and no workspace, until the owner approves it.
- Runs an approved start once.
- Stores the answer of the approved start under the handle, and gives it only to the key or connection that asked.
- Prints
extraction: <run-id>and the command that follows the run, when you wait on the handle of an approved start. - Keeps printing
outcome: pendingwith exit code 4 while the request is approved or running. - Prints the reason, such as
deniedorexpired, when the request did not run. - Answers
unknownwhen the approved start ended with a server error, a timeout or a lost reply, and does not run it again.
- Keep the handle and the request id from the pending answer.
- Wait on the handle with the key or connection that asked.
- Use the workspace name and the run id exactly as
waitprints them.
- The pending answer names no workspace and no run id, because neither exists yet.
Do
- Find the handle in the pending answer. It is on the
handle:line, and the last line,next: penumbra operations wait <handle>, repeats it. - Run
penumbra operations wait <handle>with the credential that started the run. If it ends with exit code 4 andoutcome: pending, run it again. The owner has not decided, or the run is not admitted yet. - When it prints
outcome: appliedoroutcome: queuedandextraction: <run-id>, run thenext:command that it prints. That command ispenumbra graph extractions "<workspace>" --run <run-id> --watch. - If it prints
denied,expiredor another reason, the start did not run and nothing was charged. Tell the person. A new start is a new request, and it waits for its own approval (problem change-waits-for-approval). - If it prints
outcome: unknown, read the state before you ask again (card rule approval.8, problem reply-lost). Runpenumbra graph workspace listand look for a new workspace named after the first File and the Shape. Then runpenumbra graph extractions "<workspace>"to list its runs. - If
waitprintsoutcome: refusedand the message namestarget_changed, a File or the collection changed after you asked (card rule approval.6). Plan again, and start again.
Don’t
- Don’t start the extraction again with a new request id while the first request waits or ran. That makes a second request that waits for its own approval.
- Don’t build a run id or guess a workspace name (card rule extraction.10).
- Don’t read the handle with another credential. Only the key or connection that asked can read it.
Check
penumbra graph extractions "<workspace>" --run <run-id>shows the status of the run.- You told the person the workspace name and what the run costs.