Skip to content

Commit ec3670b

Browse files
committed
KEP 1645: clarify the chosen conflict resolution algorithm
This PR attempt to explain the reasons why the resolution algorithm was chosen by considering other conflict resolution algorithm in the alternatives sections and explaining why those were not selected. Signed-off-by: Arthur Outhenin-Chalandre <[email protected]>
1 parent 4758de0 commit ec3670b

File tree

1 file changed

+17
-0
lines changed
  • keps/sig-multicluster/1645-multi-cluster-services-api

1 file changed

+17
-0
lines changed

keps/sig-multicluster/1645-multi-cluster-services-api/README.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ tags, and then generate with `hack/update-toc.sh`.
118118
- [<code>ObjectReference</code> in <code>ServiceExport.Spec</code> to directly map to a Service](#objectreference-in-serviceexportspec-to-directly-map-to-a-service)
119119
- [Export services via label selector](#export-services-via-label-selector)
120120
- [Export via annotation](#export-via-annotation)
121+
- [Other conflict resolution algorithms](#other-conflict-resolution-algorithms)
121122
- [Infrastructure Needed](#infrastructure-needed)
122123
<!-- /toc -->
123124

@@ -1240,6 +1241,22 @@ achieve the same result. As the use of a multi-cluster service implementation
12401241
would be an optional addon, it doesn't warrant a change to such a fundamental
12411242
resource.
12421243

1244+
### Other conflict resolution algorithms
1245+
1246+
When a service has a ServiceExport and a ServiceImport, we could have taken the
1247+
approach of favoring a "local truth" by giving a higher precedence to the locally
1248+
exported Service in the conflict resolution algorithm. This alternative
1249+
approach was not adopted, as in this KEP we favored global consistency across
1250+
the ClusterSet.
1251+
1252+
The conflict resolutions algorithm could also have been based on majority
1253+
instead of ServiceExport oldness. However, with this approach, we would have
1254+
to consider a tie breaking factor that could have also been based on age. This
1255+
would complicate the implementation of MCS-API and, most importantly, might be
1256+
more confusing for users. Having just one simple deciding factor based on
1257+
ServiceExport oldness makes resolving conflicts straightforward, and this
1258+
alternative conflict resolution algorithm could hinder this ease of use.
1259+
12431260
## Infrastructure Needed
12441261
<!--
12451262
Use this section if you need things from the project/SIG. Examples include a

0 commit comments

Comments
 (0)