Skip to content

steps template with memoize and outputs has outputs null in cache #16094

@ddlenz

Description

@ddlenz

Pre-requisites

  • I have double-checked my configuration
  • I have tested with the :latest image tag (i.e. quay.io/argoproj/workflow-controller:latest) and can confirm the issue still exists on :latest. If not, I have explained why, in detail, in my description below.
  • I have searched existing issues and could not find a match for this bug
  • I'd like to contribute the fix myself (see contributing guide)

What happened? What did you expect to happen?

argo submit memo.yaml
wait for workflow to complete
kubectl get configmap cache-this-cm-doesnt-exist -o yaml

Observed: outputs is null

---
data:
  hello-10: '{"nodeID":"memo-steps-kflv9-3685641709","outputs":null,"creationTimestamp":"2026-05-14T00:54:55Z","lastHitTimestamp":"2026-05-14T00:54:55Z"}'
kind: ConfigMap
---

Expected: outputs is populated

---
data:
  hello-10: '{"nodeID":"memo-steps-kflv9-3685641709","outputs":{"parameters":[{"name":"message","value":"hello"}],"creationTimestamp":"2026-05-14T00:54:55Z","lastHitTimestamp":"2026-05-14T00:54:55Z"}'
kind: ConfigMap
---

Version(s)

v4.0.5

Paste a minimal workflow that reproduces the issue. We must be able to run the workflow; don't enter a workflow that uses private images.

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: memo-steps-
  annotations:
    workflows.argoproj.io/description: Test memoization
spec:
  entrypoint: main
  templates:
    - name: main
      steps:
        - - name: echo-and-wait-step
            template: echo-and-wait
            arguments:
              parameters:
                - name: time
                  value: 10
                - name: message
                  value: "hello"
      memoize:
        key: "hello-10"
        cache:
          configMap:
            name: cache-this-cm-doesnt-exist
      outputs:
        parameters:
          - name: message
            valueFrom:
              parameter: "{{ steps.echo-and-wait-step.outputs.parameters.message }}"

    - name: echo-and-wait
      inputs:
        parameters:
          - name: message
          - name: time
      script:
        image: alpine:3.17.2
        command: [sh]
        source: |
          set -e
          date
          echo {{inputs.parameters.message}} > /tmp/msg
          sleep {{inputs.parameters.time}}
      outputs:
        parameters:
          - name: message
            valueFrom:
              path: /tmp/msg

Logs from the workflow controller

kubectl logs -n argo deploy/workflow-controller | grep ${workflow}

Logs from in your workflow's wait container

kubectl logs -n argo -c wait -l workflows.argoproj.io/workflow=${workflow},workflow.argoproj.io/phase!=Succeeded

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions