convoy docs
Search

KB-18 Confirmed

The API docs say that waveStrategy.timeout waits without a limit, but a syncWave mutation gets 30s

Feature
Sync waves
convoy versions
0.9.0
Found
2026-11-01

Behavior#

spec.syncPolicy.waveStrategy and the syncWave mutation use the same type. Its timeout field has this description: “If not set, controller will wait indefinitely”. You see this text in kubectl explain and in the API Reference.

  • For spec.syncPolicy.waveStrategy.timeout, the text is true. Without timeout, a Release waits without a time limit.
  • For mutations[].waveStrategy.timeout, the text is not true. Without timeout, the mutation does not write the convoy.kumodo.io/sync-timeout annotation. A wave with waitForHealthyWithTimeout then gets the default time limit of 30s.

Effect#

A syncWave mutation with strategy: waitForHealthyWithTimeout and no timeout fails the wave after 30 seconds. The result is WaveFailed, RolloutFailed or a rollback, not a wait without a limit.

Workaround#

Always set timeout in a syncWave mutation with waitForHealthyWithTimeout. To wait without a time limit, use strategy: waitForHealthy.

Fix direction#

Give the mutation field its own description with the 30s default. Or make a missing timeout mean “no time limit” in both places.

In the code

convoy v0.9.0