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