-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix configuration timeout defaulting #15617
base: main
Are you sure you want to change the base?
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #15617 +/- ##
==========================================
- Coverage 80.80% 80.79% -0.01%
==========================================
Files 222 222
Lines 18034 18044 +10
==========================================
+ Hits 14572 14579 +7
- Misses 3090 3093 +3
Partials 372 372 ☔ View full report in Codecov by Sentry. |
@dprotaso gentle ping. |
Name: config.DefaultsConfigName, | ||
}, | ||
Data: map[string]string{ | ||
"revision-timeout-seconds": "423", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why was 423
chosen as the timeout value? Consider using a named constant or variable to make the
intent clear and maintain consistency across test files.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just picked a number. I will update with a constant.
}, | ||
}, | ||
}, | ||
ctx: func() context.Context { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The context setup logic is duplicated between configuration_defaults_test.go and
revision_defaults_test.go. Consider extracting this into a test helper function to improve
maintainability.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually they are using a different config store although the func seems similar, which makes things harder because configs are of different types and don't inherit similar methods. I will give it a shot.
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: skonto The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
610bdc8
to
308d56c
Compare
cc @dprotaso |
/retest |
configurationConfig := cconfig.FromContext(ctx) | ||
apisConfig := config.Config{} | ||
if configurationConfig != nil && configurationConfig.Defaults != nil { | ||
apisConfig.Defaults = configurationConfig.Defaults.DeepCopy() | ||
} | ||
if configurationConfig != nil && configurationConfig.Features != nil { | ||
apisConfig.Features = configurationConfig.Features.DeepCopy() | ||
} | ||
ctx = config.ToContext(ctx, &apisConfig) | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
configurationConfig := cconfig.FromContext(ctx)
This will always be nil - the webhook has a config map watcher that updates the api's config store.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we need a different fix - but I haven't dug into why the default of 300 is being applied - when in fact the default is here and it should be using what's in the config map
serving/pkg/apis/config/defaults.go
Lines 140 to 146 in c3f2bfe
nc.RevisionResponseStartTimeoutSeconds = nc.RevisionTimeoutSeconds | |
if err := cm.Parse(data, | |
cm.AsInt64("revision-response-start-timeout-seconds", &nc.RevisionResponseStartTimeoutSeconds), | |
); err != nil { | |
return nil, err | |
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this has only been an issue because before when we default we set all the properties - but this one setting is different
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The fix should be to add the apiconfig.Store into the context using the same key that's in the apiconfig package
eg. here
func (s *Store) ToContext(ctx context.Context) context.Context { |
we should call
serving/pkg/apis/config/store.go
Line 69 in c3f2bfe
func ToContext(ctx context.Context, c *Config) context.Context { |
Other stores in reconciler could have similar issues
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixes #15616
Proposed Changes
revision-response-start-timeout-seconds
,revision-idle-timeout-seconds
, so that when they are equal to therevision-timeout-seconds
in the defaults cm, they will not be set to 300 (default) at a revision that has no overrides of those values. Instead they are set to nil at the revision (0
at the QP side). Semantically this is correct, since when the timeouts are equal we don't need both anyway.Release Note