Skip to content

KeyValuePairs::extend implements a nonsense merge #887

Closed
@nightkr

Description

@nightkr

Affected version

sble-operator 0.76.0

Current and expected behavior

If you try to merge the following KVP sets:

a: b
b: a
---
a: a
b: b

and then build a k8s_openapi label map from it you get

a: b
b: b

Which is nonsense, I'd expect one of them to take precedence (and according to convention/ObjectMetaBuilder::with_label docs) it should be the latter ({a: a, b: b}).

Possible solution

Ultimately, this comes down to that we try to store reified KeyValuePairs in a BTreeSet. This isn't what sets exist for.

As a "quick fix" we could change the backing store for KeyValuePairs to BTreeMap<Key, V> (though its Deref<BTreeSet> impl makes that problematic too, on top of a bunch of lifetime issues). Ultimately I'd like to rip the band-aid and just kill KeyValuePair.

Additional context

No response

Environment

No response

Would you like to work on fixing this bug?

yes

Metadata

Metadata

Assignees

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions