Stefano Messina
04/14/2026, 8:05 AMreplication-job-36869-attempt-0 pod is in the NotReady status and the last log message says: 2026-04-14 07:46:54,370 [pool-12-thread-1] ERROR i.a.w.i.HeartbeatTimeoutChaperone(monitor):161 - Source has stopped heart beating.kapa.ai
04/14/2026, 8:07 AMSource has stopped heart beating indicates that the Airbyte platform's heartbeat monitor detected that the source connector stopped emitting RECORD or STATE messages for longer than the configured threshold. [Heartbeats docs] What's happening The Airbyte platform monitors both RECORD and STATE messages from the source as heartbeats. If the time between messages exceeds the configured threshold, the sync attempt is failed with the cause "The source is unresponsive." [Heartbeats docs]
The default maximum time allowed between messages is 3 hours, which aligns with what you're observing. [Heartbeats docs] Possible causes • The source connector is processing data but not emitting any RECORD or STATE messages during that time (e.g., doing heavy client-side filtering without emitting intermediate messages).
• The source pod became unresponsive or was killed externally (e.g., by a node scaling event on spot instances). [Sync attempt with killed pod]
• For CDC-based connectors (MySQL, MSSQL, Postgres), Debezium may be hanging when the LSN/commit position doesn't advance (e.g., data written in a single large transaction). [MySQL CDC fix] What you can do 1. Check if the pod was killed externally — look for node eviction or OOM events in your cluster around the time the sync stalled.
2. Adjust the heartbeat configuration — you can tune the heartbeat behavior via `flags.yaml`:
◦ `heartbeat-max-seconds-between-messages`: maximum time allowed between 2 messages (default: 3 hours).
◦ `heartbeat.failSync`: if true (default), the sync will be failed on a missed heartbeat; if false, it will only log a warning. [Heartbeats docs]
1. For CDC connectors — if you're using MySQL, MSSQL, or Postgres in CDC mode, check whether the Initial Waiting Time (or AIRBYTE_HEARTBEAT_TIMEOUT_SECONDS) is configured appropriately for your data volume, especially if large transactions are involved. [MySQL CDC fix; MSSQL CDC issue]
2. For non-CDC connectors — if the source is doing extended silent processing (e.g., client-side filtering), consider increasing maxSecondsBetweenMessages in the connector's metadata.yaml, as was done for the Intercom connector. [Intercom heartbeat bump]
The fact that the pod is in NotReady status suggests the source container may have become unhealthy or was evicted, which would explain why no heartbeat messages were emitted for 3 hours. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Stefano Messina
04/14/2026, 8:22 AMkapa.ai
04/14/2026, 8:22 AMflags.yaml heartbeat configuration (heartbeat-max-seconds-between-messages, heartbeat.failSync, destination-timeout-max-seconds, destination-timeout.failSync).
What the Helm values.yaml does support is passing extra environment variables to the relevant pods (e.g., the worker or workload-launcher). You could try passing the heartbeat settings as environment variables via extraEnv. For example, in your Helm values override file:
worker:
extraEnv:
- name: HEARTBEAT_MAX_SECONDS_BETWEEN_MESSAGES
value: "14400" # e.g., 4 hours in seconds
or for the workload-launcher:
workload-launcher:
extraEnv:
- name: HEARTBEAT_MAX_SECONDS_BETWEEN_MESSAGES
value: "14400"
[values.yaml reference]
However, I want to be transparent: the knowledge sources confirm that the heartbeat is configured via flags.yaml [Heartbeats docs], but they do not explicitly document the exact Helm values path or environment variable names that map to those flags.yaml entries. I'd recommend checking the Airbyte platform GitHub repository directly for the full values reference, or reaching out on the Airbyte Slack community for confirmation on the exact mapping. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.