Bug description
The launcher S3 provider override path uses the default provider's maxRetries value when an override supplies its own value.
In backend/src/v2/config/s3.go, the matching override branch checks override.MaxRetries != nil but writes *p.Default.MaxRetries into session parameters. This has two incorrect outcomes:
- an override value is silently ignored in favor of the default value; and
- if the override sets
maxRetries while the default omits it, dereferencing p.Default.MaxRetries can panic.
This was found while auditing frontend reconstruction of kfp-launcher provider selection after MLMD removal. It is a backend launcher bug rather than a frontend migration fix, so it should be corrected and validated in the authoritative Go implementation.
Reproduction
Configure an S3 provider with a matching bucket/key-prefix override:
s3:
default:
maxRetries: 3
credentials:
fromEnv: true
Overrides:
- bucketName: team-bucket
keyPrefix: team-a
maxRetries: 9
credentials:
fromEnv: true
Resolve session information for s3://team-bucket/team-a/model.
Expected: maxRetries is 9.
Actual: maxRetries is 3.
If default.maxRetries is omitted while the override supplies maxRetries, the same path may dereference a nil default pointer.
Acceptance criteria
Love this idea? Give it a 👍.
Bug description
The launcher S3 provider override path uses the default provider's
maxRetriesvalue when an override supplies its own value.In
backend/src/v2/config/s3.go, the matching override branch checksoverride.MaxRetries != nilbut writes*p.Default.MaxRetriesinto session parameters. This has two incorrect outcomes:maxRetrieswhile the default omits it, dereferencingp.Default.MaxRetriescan panic.This was found while auditing frontend reconstruction of
kfp-launcherprovider selection after MLMD removal. It is a backend launcher bug rather than a frontend migration fix, so it should be corrected and validated in the authoritative Go implementation.Reproduction
Configure an S3 provider with a matching bucket/key-prefix override:
Resolve session information for
s3://team-bucket/team-a/model.Expected:
maxRetriesis9.Actual:
maxRetriesis3.If
default.maxRetriesis omitted while the override suppliesmaxRetries, the same path may dereference a nil default pointer.Acceptance criteria
override.MaxRetriesinto session parameters.maxRetrieswhen the default omits it without panicking.maxRetries, the documented default/provider inheritance behavior is preserved.Love this idea? Give it a 👍.