Skip to content

Clean up and deprecate no wait for ready#8608

Merged
beautifulentropy merged 4 commits intoletsencrypt:mainfrom
maen-bn:clean-up-and-deprecate-no-wait-for-ready
Feb 6, 2026
Merged

Clean up and deprecate no wait for ready#8608
beautifulentropy merged 4 commits intoletsencrypt:mainfrom
maen-bn:clean-up-and-deprecate-no-wait-for-ready

Conversation

@maen-bn
Copy link
Contributor

@maen-bn maen-bn commented Jan 28, 2026

Part of #7843

@maen-bn maen-bn requested a review from a team as a code owner January 28, 2026 12:49
Copy link
Member

@beautifulentropy beautifulentropy left a comment

Choose a reason for hiding this comment

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

Thanks for the pull request! I have just a couple comments, that mostly come down to Wait-For-Ready being off by default for gRPC implementations, this is honored by grpc-go.

// Disable wait for ready so RPCs will retry until deadline, even if all backends
// are down.
opts = append(opts, grpc.WaitForReady(cmi.waitForReady))
opts = append(opts, grpc.WaitForReady(false))
Copy link
Member

Choose a reason for hiding this comment

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

With the configuration corresponding field deprecated, we can just remove this whole block.

// because non-WaitForReady mode is most similar to the old AMQP RPC layer: If a
// client makes a request while all backends are briefly down (e.g. for a restart),
// the request doesn't necessarily fail. A backend can service the request if it
// comes back up within the timeout. Under gRPC the same effect is achieved by
Copy link
Member

Choose a reason for hiding this comment

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

Here we can remove anything that talks about WaitForReady.

Comment on lines 397 to 399
// Disable wait for ready so RPCs will retry until deadline, even if all backends
// are down.
opts = append(opts, grpc.WaitForReady(cmi.waitForReady))
opts = append(opts, grpc.WaitForReady(false))
Copy link
Member

Choose a reason for hiding this comment

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

We can also remove this whole block.

Comment on lines 95 to 101
func TestThereIsNoWaitForReady(t *testing.T) {
clientMetrics, err := newClientMetrics(metrics.NoopRegisterer)
test.AssertNotError(t, err, "creating client metrics")
ci := &clientMetadataInterceptor{
timeout: time.Second,
metrics: clientMetrics,
clk: clock.NewFake(),
waitForReady: false,
timeout: time.Second,
metrics: clientMetrics,
clk: clock.NewFake(),
Copy link
Member

Choose a reason for hiding this comment

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

This test can also be removed, we shouldn't test the default state.

cmd/config.go Outdated
// backends are down, it will wait until either one becomes available or the RPC
// times out.
//
// Deprecated: Is ignored and always never waits for ready
Copy link
Member

Choose a reason for hiding this comment

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

Add a small note here so that we remember to come back and remove it completely.

Suggested change
// Deprecated: Is ignored and always never waits for ready
// Deprecated: This field no longer has any effect.
//
// TODO(#7843): Remove this field entirely once it is no longer referenced
// in our production configuration.

@maen-bn maen-bn force-pushed the clean-up-and-deprecate-no-wait-for-ready branch from a27560a to 76b4e74 Compare February 6, 2026 17:47
@beautifulentropy beautifulentropy merged commit c9ea2bb into letsencrypt:main Feb 6, 2026
51 of 53 checks passed
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.

3 participants