Skip to content

Commit 8d890db

Browse files
authored
Merge pull request #384 from oracle/conflict-flow
Better conflict flow resolution so that Operator resumes
2 parents b855d6e + 2349441 commit 8d890db

15 files changed

+645
-488
lines changed

operator/src/main/java/oracle/kubernetes/operator/DomainStatusUpdater.java

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
package oracle.kubernetes.operator;
66

7-
import io.kubernetes.client.ApiException;
87
import io.kubernetes.client.models.V1ObjectMeta;
98
import io.kubernetes.client.models.V1Pod;
109
import java.util.ArrayList;
@@ -14,14 +13,15 @@
1413
import java.util.Map;
1514
import java.util.TreeMap;
1615
import java.util.concurrent.ConcurrentMap;
16+
import oracle.kubernetes.operator.calls.CallResponse;
1717
import oracle.kubernetes.operator.helpers.CallBuilder;
1818
import oracle.kubernetes.operator.helpers.DomainPresenceInfo;
1919
import oracle.kubernetes.operator.helpers.DomainPresenceInfo.ServerStartupInfo;
20-
import oracle.kubernetes.operator.helpers.ResponseStep;
2120
import oracle.kubernetes.operator.helpers.ServerKubernetesObjects;
2221
import oracle.kubernetes.operator.logging.LoggingFacade;
2322
import oracle.kubernetes.operator.logging.LoggingFactory;
2423
import oracle.kubernetes.operator.logging.MessageKeys;
24+
import oracle.kubernetes.operator.steps.DefaultResponseStep;
2525
import oracle.kubernetes.operator.wlsconfig.WlsClusterConfig;
2626
import oracle.kubernetes.operator.wlsconfig.WlsDomainConfig;
2727
import oracle.kubernetes.operator.wlsconfig.WlsServerConfig;
@@ -295,7 +295,8 @@ public NextAction apply(Packet packet) {
295295
madeChange = true;
296296
}
297297

298-
// This will control if we need to re-check states soon or if we can slow down checks
298+
// This will control if we need to re-check states soon or if we can slow down
299+
// checks
299300
packet.put(ProcessingConstants.STATUS_UNCHANGED, Boolean.valueOf(!madeChange));
300301

301302
if (madeChange) {
@@ -643,33 +644,43 @@ private static NextAction doDomainUpdate(
643644
meta.getName(),
644645
meta.getNamespace(),
645646
dom,
646-
new ResponseStep<Domain>(next) {
647+
new DefaultResponseStep<Domain>(next) {
647648
@Override
648-
public NextAction onFailure(
649-
Packet packet,
650-
ApiException e,
651-
int statusCode,
652-
Map<String, List<String>> responseHeaders) {
653-
if (statusCode == CallBuilder.NOT_FOUND) {
649+
public NextAction onFailure(Packet packet, CallResponse<Domain> callResponse) {
650+
if (callResponse.getStatusCode() == CallBuilder.NOT_FOUND) {
654651
return doNext(packet); // Just ignore update
655652
}
656-
return super.onFailure(conflictStep, packet, e, statusCode, responseHeaders);
653+
return super.onFailure(
654+
getRereadDomainConflictStep(info, meta, conflictStep),
655+
packet,
656+
callResponse);
657657
}
658658

659659
@Override
660-
public NextAction onSuccess(
661-
Packet packet,
662-
Domain result,
663-
int statusCode,
664-
Map<String, List<String>> responseHeaders) {
665-
info.setDomain(result);
660+
public NextAction onSuccess(Packet packet, CallResponse<Domain> callResponse) {
661+
info.setDomain(callResponse.getResult());
666662
return doNext(packet);
667663
}
668664
}),
669665
packet);
670666
return na;
671667
}
672668

669+
private static Step getRereadDomainConflictStep(
670+
DomainPresenceInfo info, V1ObjectMeta meta, Step next) {
671+
return new CallBuilder()
672+
.readDomainAsync(
673+
meta.getName(),
674+
meta.getNamespace(),
675+
new DefaultResponseStep<Domain>(next) {
676+
@Override
677+
public NextAction onSuccess(Packet packet, CallResponse<Domain> callResponse) {
678+
info.setDomain(callResponse.getResult());
679+
return doNext(packet);
680+
}
681+
});
682+
}
683+
673684
/**
674685
* Asynchronous step to set Domain condition to Failed
675686
*

0 commit comments

Comments
 (0)