-
Notifications
You must be signed in to change notification settings - Fork 780
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Systems with conflicting mutators may not converge #1216
Comments
I can take this |
An example of mutators with conflicting schemas would be:
The first assumes The following class of conflict is considered out of scope for this issue (it is left to the user to prevent this):
|
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com>
When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: #1216 Signed-off-by: Will Beason <willbeason@google.com>
This issue isn't yet closed... #1364 sets the stage for fixing the issue, but we still:
gatekeeper/pkg/mutation/system.go Lines 53 to 56 in a88df07
IIRC those issues were going to be addressed in a follow-on PR |
…1364) When multiple Pods are running mutators, it is possible that they will ingest mutators in different orders. Before this PR, we would essentially randomly pick which mutator to honor and discard future mutators which conflicted. Fixes: open-policy-agent#1216 Signed-off-by: Will Beason <willbeason@google.com> Signed-off-by: juliankatz <juliankatz@google.com>
If a system has conflicting mutators (i.e. they disagree as to the schema of the resource they're mutating), currently the first mutator to be ingested is recognized and the second is ignored.
In an eventually consistent system with mutiple pods, this is broken and will not converge. If mutators A and B are in conflict and pod 1 recognizes mutator A, while pod 2 recognizes mutator B, the system will not be idempotent... it's answer may change depending on which pod processes the request.
The solution is to disallow all conflicting mutators. Such a rule would lead to convergence regardless of order.
The text was updated successfully, but these errors were encountered: