Files
unraid-docker-manager/.planning/debug/update-flow-errors.md
Lucas Berger 07aeace1fd fix(16): resolve 3 UAT issues — update flow, batch cancel, text commands
- Fix update sub-workflow: remove unsupported GraphQL filter arg, fix node
  reference (Format Pull Error → Format Update Error), fix field case
  (data.image → data.Image)
- Fix batch cancel: connect Route Callback output 20 (batchcancel) to
  Prepare Batch UI Input (was empty connection array)
- Fix text commands: change .item.json to .first().json for paired item
  breakage after GraphQL chain expansion; convert Send Batch Confirmation
  from Telegram node to HTTP Request to fix double-serialized reply_markup

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 12:28:21 -05:00

4.5 KiB

status, trigger, created, updated
status trigger created updated
verifying Single container update via inline keyboard fails with execution errors on both main workflow and container update sub-workflow 2026-02-09T00:00:00Z 2026-02-09T00:30:00Z

Current Focus

hypothesis: CONFIRMED - Three bugs in n8n-update.json causing update flow failure test: Push fixed workflow and trigger update via inline keyboard expecting: Update should complete without execution errors next_action: User triggers update to verify fix

Symptoms

expected: Tapping "Update" on inline keyboard confirmation should trigger container update via GraphQL API actual: Execution errors on both main workflow and update sub-workflow after confirmation dialog errors: (1) "Unknown argument 'filter' on field 'Docker.containers'" (2) "missing data.docker.containers" (3) Wrong node reference in Return Error reproduction: Tap Update on container submenu, confirm, observe error started: After Phase 16 migration (Docker socket proxy -> Unraid GraphQL API)

Eliminated

  • hypothesis: Credential ID issue (placeholder "unraid-api-key-credential-id") evidence: n8n resolves credentials by name on push; actual n8n has correct ID "6DB4RZZoeF5Raf7V" timestamp: 2026-02-09

  • hypothesis: ContainerId format is wrong (PrefixedID with colon) evidence: The PrefixedID format is correct and used by the mutation; the issue is the query using a nonexistent filter arg timestamp: 2026-02-09

  • hypothesis: Main workflow "Prepare Text Action Input" error is related evidence: Execution 1516 was triggered by text command "Start dup", not an update callback - separate bug timestamp: 2026-02-09

Evidence

  • timestamp: 2026-02-09 checked: n8n execution 1498 (main workflow, callback update flow) found: Flow reaches "Execute Callback Update" which calls update sub-workflow; sub-workflow fails with "missing data.docker.containers" error implication: Error originates in update sub-workflow, propagates back to main workflow

  • timestamp: 2026-02-09 checked: n8n execution 1500 (update sub-workflow) found: "Query Single Container" node sends GraphQL query with filter: { id: "..." } argument. Unraid API responds HTTP 400: "Unknown argument 'filter' on field 'Docker.containers'" implication: The filter argument does not exist in Unraid GraphQL API schema. All working queries use query { docker { containers { ... } } } without filter

  • timestamp: 2026-02-09 checked: Working queries in n8n-actions.json, n8n-status.json found: All working nodes query ALL containers without filter, then filter client-side implication: Unraid GraphQL API only supports listing all containers, no server-side filtering

  • timestamp: 2026-02-09 checked: Update sub-workflow flow routing found: Main workflow passes containerId (resolved by name). Sub-workflow's "Has Container ID?" = true, routes to "Query Single Container" (broken filter). The "no container ID" path through "Query All Containers" works correctly implication: Direct ID path is always taken and always fails

  • timestamp: 2026-02-09 checked: "Return Error" node code found: References $('Format Pull Error') but node is actually named "Format Update Error" implication: Error path would also fail with "node not found" if reached

  • timestamp: 2026-02-09 checked: "Capture Pre-Update State" node found: Reads data.image (lowercase) from normalizer but normalizer outputs Image (capitalized) implication: currentImage would always be empty string even if normalizer worked

Resolution

root_cause: Three bugs in n8n-update.json:

  1. PRIMARY: "Query Single Container" uses nonexistent GraphQL filter argument on Docker.containers. Unraid API does not support server-side filtering - returns HTTP 400.
  2. SECONDARY: "Return Error" node references $('Format Pull Error') but node is named "Format Update Error" (leftover from pre-migration naming).
  3. MINOR: "Capture Pre-Update State" reads data.image but normalizer outputs data.Image (case mismatch).

fix: |

  1. Changed "Query Single Container" jsonBody from filter-based query to same all-containers query used by working nodes
  2. Rewrote "Normalize Single Container" to fetch all containers, then filter client-side by containerId from trigger data
  3. Fixed "Return Error" node reference from $('Format Pull Error') to $('Format Update Error')
  4. Fixed "Capture Pre-Update State" property access from data.image to data.Image

verification: Pushed to n8n (HTTP 200). Awaiting user test of inline keyboard update flow.

files_changed:

  • /home/luc/Projects/unraid-docker-manager/n8n-update.json