Skip to content

Prevent mutation of Bus/Channel references in Channels and Subscriptions #107

@scothis

Description

@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 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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions