Expected Behavior
When a channel resource is created, it specifies the bus to be provisioned on. That bus will then manage the channel and subscriptions for the channel. The channel should not be able to mutate to later point to a different bus. Instead, the channel should be deleted and a new channel created.
Actual Behavior
When the channel's bus reference is changed from A to B, the channel is concurrently unprovisioned from A and provisioned on B. There is a period where a request for a channel could be routed to a bus that no longer hosts that channel. Likewise, all subscriptions for that channel need to be re-estabilied on the new bus.
Additional Info
The same concerns also apply to how subscription resources reference a channel.
Logically migrating a channel from one bus to another is a deletion and an addition. Since we cannot provide a zero downtime migration, it's better to force the deletion and creation semantics on users.
An admission controller webhook can preform this validation. There is no such webhook in eventing currently, but it can be modeled on the webhook in serving.
Refs #88 (comment)
/assign scothis
Expected Behavior
When a channel resource is created, it specifies the bus to be provisioned on. That bus will then manage the channel and subscriptions for the channel. The channel should not be able to mutate to later point to a different bus. Instead, the channel should be deleted and a new channel created.
Actual Behavior
When the channel's bus reference is changed from
AtoB, the channel is concurrently unprovisioned fromAand provisioned onB. There is a period where a request for a channel could be routed to a bus that no longer hosts that channel. Likewise, all subscriptions for that channel need to be re-estabilied on the new bus.Additional Info
The same concerns also apply to how subscription resources reference a channel.
Logically migrating a channel from one bus to another is a deletion and an addition. Since we cannot provide a zero downtime migration, it's better to force the deletion and creation semantics on users.
An admission controller webhook can preform this validation. There is no such webhook in eventing currently, but it can be modeled on the webhook in serving.
Refs #88 (comment)
/assign scothis