Skip to content

feat: Support for canary deployments in gRPC controller#1081

Open
tylbees wants to merge 1 commit into
mainfrom
tyler/infra-2403-canary-deployments
Open

feat: Support for canary deployments in gRPC controller#1081
tylbees wants to merge 1 commit into
mainfrom
tyler/infra-2403-canary-deployments

Conversation

@tylbees

@tylbees tylbees commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

No description provided.

@linear-code

linear-code Bot commented Jun 11, 2026

Copy link
Copy Markdown

INFRA-2403

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 18810603c6

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +713 to +714
message CanaryInfoResponse {
CanaryInfo info = 1;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Regenerate the canary response schema consistently

When clients generate code from this committed .proto, CanaryInfoResponse is a wrapper containing info, but the committed Python artifacts describe CanaryInfoResponse itself as the scalar canary-info message with active/revision/ratio/runners fields (for example controller_pb2.pyi defines those fields directly). In a mixed environment where a non-Python server or client is generated from controller.proto, the CanaryInfo RPC response wire shape disagrees with the published Python package, so Python clients will ignore the length-delimited info field or other clients will miss the direct scalar fields. Please regenerate the artifacts from this schema or rename/split the messages so the source proto and generated files match.

Useful? React with 👍 / 👎.

Comment on lines 298 to +301
enum DeploymentStrategy {
RECREATE = 0;
ROLLING = 1;
CANARY = 2;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add CANARY to SDK strategy handling

Adding CANARY to the shared DeploymentStrategy enum makes it a valid value for fields like RegisterApplicationRequest.deployment_strategy and SetAliasRequest.deployment_strategy, but the Python SDK/CLI still only allows "recreate" and "rolling" (projects/fal/src/fal/sdk.py:52, projects/fal/src/fal/sdk.py:462-484, and CLI choices in projects/fal/src/fal/cli/apps.py:385-386). In those paths, a user trying to select the newly advertised canary strategy is rejected by argparse or hits DeploymentStrategy[deployment_strategy.upper()] with no enum member, so the public Python tooling cannot send this new proto value.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant