Skip to content

Memory usage of numa container in reduce UDF pod increases monotonically (former: numa container in reduce UDF pod got down by "No space left on device") #3262

Description

@tmenjo

Describe the bug

I have a pipeline stream-joining video frames and inference results as follows. The reduce UDF vertex accumulator(stream-join) does that join.

[sourcer(input)] ---------------+
    | Original-sized frames     | Original-sized frames
    v                           |
[mapstreamer(resize)]           |
    | Scaled-down frames        |
    v                           |
[mapstreamer(inference)]        |
    | Inference results         |
    v                           |
[accumulator(stream-join)] <----+
    | 
    | Messages joined on frame index
    v
[sinker(output)]

Running that pipeline, I found that the numa container in the reduce UDF vertex pod got down. Its logs said that Failed to write message to WAL and No space left on device. I also found that memory usage of the numa container increased almost monotonically.

To Reproduce

  1. Run kubectl apply -f pipeline1.yaml
  2. Wait for a while

pipeline1.yaml

The part of the reduce vertex in pipeline1.yaml:

    - name: stream-join
      partitions: 1
      scale:
        min: 1
        max: 1
      udf:
        container:
          image: 192.168.21.17:30003/dci-community-general/dci-poc:stable
          imagePullPolicy: IfNotPresent
          env:
            - name: SCRIPT
              value: reduce
          envFrom:
            - configMapRef:
                name: app-env-cm
          volumeMounts:
            - mountPath: /var/tmp/logs/numaflow-dra/dci_poc
              name: log-volume
        groupBy:
          window:
            accumulator:
              timeout: 1s
          keyed: false
          storage:
            persistentVolumeClaim:
              storageClassName: local-storage
              volumeSize: 3Gi
              accessMode: ReadWriteOnce
      limits:
        readBatchSize: 1
      volumes:
        - name: log-volume
          hostPath:
            path: /var/tmp/logs/numaflow-dra/dci_poc
            type: DirectoryOrCreate

Expected behavior

The numa container continues running.

Logs and screenshots

numa.log (numa container's full logs)

The tail of the logs:

{"timestamp":"2026-02-25T03:18:06.062212Z","level":"INFO","message":"Rotating WAL segment file","current_size":"10335304","file_name":"\"/var/numaflow/pbq/data_437_1771989485410332.wal\"","target":"numaflow_core::reduce::wal::segment::append"}
{"timestamp":"2026-02-25T03:18:06.063321Z","level":"INFO","message":"rename successful","self.current_file_name":"\"/var/numaflow/pbq/data_437_1771989485410332.wal\"","to_file_name":"\"/var/numaflow/pbq/data_437_1771989485410332.wal.frozen\"","target":"numaflow_core::reduce::wal::segment::append"}
{"timestamp":"2026-02-25T03:18:06.190208Z","level":"INFO","message":"Processed messages per second","processed":"31","target":"numaflow_core::tracker"}
{"timestamp":"2026-02-25T03:18:06.416833Z","level":"ERROR","message":"Failed to write message to WAL","e":"Io(Os { code: 28, kind: StorageFull, message: \"No space left on device\" })","target":"numaflow_core::reduce::wal::segment::append"}
{"timestamp":"2026-02-25T03:18:06.416979Z","level":"INFO","message":"Nak received for offset","params.offset":"Int(IntOffset { offset: 8855, partition_idx: 0 })","target":"numaflow_core::pipeline::isb::reader"}
{"timestamp":"2026-02-25T03:18:06.417037Z","level":"INFO","message":"Nak sent for offset","offset":"Int(IntOffset { offset: 8855, partition_idx: 0 })","target":"numaflow_core::pipeline::isb::reader"}
{"timestamp":"2026-02-25T03:18:06.418078Z","level":"ERROR","message":"/app/numaflow-core/src/reduce/pbq.rs:146:18: Receiver dropped: SendError { .. }","target":"numaflow::setup_tracing"}
{"timestamp":"2026-02-25T03:18:06.418486Z","level":"INFO","message":"Unaligned Reduce component is shutting down, waiting for active reduce tasks to complete","target":"numaflow_core::reduce::reducer::unaligned::reducer"}
{"timestamp":"2026-02-25T03:18:06.418515Z","level":"INFO","message":"Waiting for 1 active reduce tasks to complete","target":"numaflow_core::reduce::reducer::unaligned::reducer"}
{"timestamp":"2026-02-25T03:18:06.418677Z","level":"ERROR","message":"Error while joining PBQ reader and reducer","e":"JoinError::Panic(Id(35), \"Receiver dropped: SendError { .. }\", ...)","target":"numaflow_core::pipeline::forwarder::reduce_forwarder"}
{"timestamp":"2026-02-25T03:18:06.418759Z","level":"INFO","message":"Stopped the Lag-Reader Expose tasks","target":"numaflow_core::metrics"}
{"timestamp":"2026-02-25T03:18:06.418939Z","level":"ERROR","message":"Error running pipeline","e":"Forwarder(\"Error while joining PBQ reader and reducer: task 35 panicked with message \\\"Receiver dropped: SendError { .. }\\\"\")","target":"numaflow_core"}
{"timestamp":"2026-02-25T03:18:06.419441Z","level":"INFO","message":"Gracefully Exiting...","target":"numaflow_core"}
{"timestamp":"2026-02-25T03:18:06.419473Z","level":"INFO","message":"Exited.","target":"numaflow"}
{"timestamp":"2026-02-25T03:18:06.421082Z","level":"ERROR","message":"TrackerState dropped with 1 unacknowledged messages still tracked","total_entries":1,"target":"numaflow_core::tracker"}

Memory usage of the reduce pod:

Image

Environment

  • Kubernetes: [e.g. v1.33.2]
  • Numaflow: [e.g. nightly-20260206]

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/reduceReduce operations like GroupByKeybugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions