[HTTP] Default to oldest in dev (#203225)

## Summary

Changes the default HTTP version resolution in dev to `oldest` (matches
non-dev).

The original intention was to guide developers to always sending a
versioned header when interacting with Kibana. In practice, however,
developers just set-and-forget the following configuration to get around
this annoyance:

```yaml
server.versioned.versionResolution: 'oldest'
```

...undoing the original intention. Having this guidance does not justify
the confusion/annoyance that this dev-only default creates and so this
proposal simply removes it.

To better guide developers we can consider other options like: make
`version` required in core's HTTP client interface (lots of updates...),
doing something in tests, adding docs, something else or any combo of
these.

Given the fact that developers generally discover this workaround and
undo the originally intended guidance, I'm proposing not blocking on
first having another approach in place.
This commit is contained in:
Jean-Louis Leysens 2024-12-17 17:10:34 +01:00 committed by GitHub
parent 3e06d6a088
commit c1bda1d501
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 4 additions and 4 deletions

View file

@ -517,9 +517,9 @@ describe('versioned', () => {
).toThrow(/failed validation/);
});
it('defaults version resolution "none" when in dev', () => {
it('defaults version resolution "oldest" when in dev', () => {
expect(config.schema.validate({}, { dev: true })).toMatchObject({
versioned: { versionResolution: 'none' },
versioned: { versionResolution: 'oldest' },
});
});
});

View file

@ -213,7 +213,7 @@ const configSchema = schema.object(
* Which handler resolution algo to use for public routes: "newest" or "oldest".
*
* @note Internal routes always require a version to be specified.
* @note in development we have an additional option "none" which is also the default in dev.
* @note in development we have an additional option "none".
* This prevents any fallbacks and requires that a version specified.
* Useful for ensuring that a given client always specifies a version.
*/
@ -221,7 +221,7 @@ const configSchema = schema.object(
schema.contextRef('dev'),
true,
schema.oneOf([schema.literal('newest'), schema.literal('oldest'), schema.literal('none')], {
defaultValue: 'none',
defaultValue: 'oldest',
}),
schema.oneOf([schema.literal('newest'), schema.literal('oldest')], {
defaultValue: 'oldest',