Skip to content

Commit 56d2590

Browse files
committed
avoid repeated logging of errors when ReadHealthStep for only some servers fail
1 parent ef9a511 commit 56d2590

File tree

5 files changed

+24
-7
lines changed

5 files changed

+24
-7
lines changed

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.concurrent.ConcurrentMap;
2222
import java.util.concurrent.ScheduledFuture;
2323
import java.util.concurrent.TimeUnit;
24+
import java.util.concurrent.atomic.AtomicInteger;
2425
import javax.annotation.Nullable;
2526
import oracle.kubernetes.operator.TuningParameters.MainTuning;
2627
import oracle.kubernetes.operator.calls.CallResponse;
@@ -314,7 +315,9 @@ public void run() {
314315
new CompletionCallback() {
315316
@Override
316317
public void onCompletion(Packet packet) {
317-
if (Boolean.TRUE.equals(packet.get(ProcessingConstants.SERVER_HEALTH_READ))) {
318+
AtomicInteger serverHealthRead =
319+
packet.getValue(ProcessingConstants.REMAINING_SERVERS_HEALTH_READ);
320+
if (serverHealthRead == null || serverHealthRead.get() == 0) {
318321
loggingFilter.setFiltering(false).resetLogHistory();
319322
} else {
320323
loggingFilter.setFiltering(true);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@ public interface ProcessingConstants {
3232
public static final String DOMAIN_INTROSPECTOR_LOG_RESULT = "domainIntrospectorLogResult";
3333
public static final String SIT_CONFIG_MAP = "sitConfigMap";
3434

35-
public static final String SERVER_HEALTH_READ = "serverHealthRead";
35+
public static final String REMAINING_SERVERS_HEALTH_READ = "serverHealthRead";
3636
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.concurrent.ConcurrentHashMap;
2222
import java.util.concurrent.ConcurrentMap;
2323
import java.util.concurrent.TimeUnit;
24+
import java.util.concurrent.atomic.AtomicInteger;
2425
import java.util.function.Function;
2526
import java.util.stream.Collectors;
2627
import oracle.kubernetes.operator.helpers.ClientPool;
@@ -68,6 +69,9 @@ public NextAction apply(Packet packet) {
6869
packet.put(SERVER_STATE_MAP, new ConcurrentHashMap<String, String>());
6970
packet.put(SERVER_HEALTH_MAP, new ConcurrentHashMap<String, ServerHealth>());
7071

72+
AtomicInteger serverHealthRead = new AtomicInteger();
73+
packet.put(ProcessingConstants.REMAINING_SERVERS_HEALTH_READ, serverHealthRead);
74+
7175
Collection<StepAndPacket> startDetails =
7276
info.getServerPods()
7377
.map(pod -> createStatusReaderStep(packet, pod))
@@ -76,6 +80,7 @@ public NextAction apply(Packet packet) {
7680
if (startDetails.isEmpty()) {
7781
return doNext(packet);
7882
} else {
83+
serverHealthRead.set(startDetails.size());
7984
return doForkJoin(getNext(), packet, startDetails);
8085
}
8186
}

operator/src/main/java/oracle/kubernetes/operator/steps/ReadHealthStep.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.util.Iterator;
1717
import java.util.List;
1818
import java.util.concurrent.ConcurrentMap;
19+
import java.util.concurrent.atomic.AtomicInteger;
1920
import oracle.kubernetes.operator.ProcessingConstants;
2021
import oracle.kubernetes.operator.helpers.DomainPresenceInfo;
2122
import oracle.kubernetes.operator.http.HttpClient;
@@ -153,7 +154,9 @@ public NextAction apply(Packet packet) {
153154
(ConcurrentMap<String, ServerHealth>)
154155
packet.get(ProcessingConstants.SERVER_HEALTH_MAP);
155156
serverHealthMap.put((String) packet.get(ProcessingConstants.SERVER_NAME), health);
156-
packet.put(ProcessingConstants.SERVER_HEALTH_READ, Boolean.TRUE);
157+
AtomicInteger serverHealthRead =
158+
packet.getValue(ProcessingConstants.REMAINING_SERVERS_HEALTH_READ);
159+
serverHealthRead.getAndDecrement();
157160
}
158161
}
159162
return doNext(packet);

operator/src/test/java/oracle/kubernetes/operator/steps/ReadHealthStepTest.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import static oracle.kubernetes.operator.logging.MessageKeys.WLS_HEALTH_READ_FAILED_NO_HTTPCLIENT;
1010
import static org.hamcrest.MatcherAssert.assertThat;
1111
import static org.hamcrest.Matchers.is;
12-
import static org.hamcrest.core.IsNull.nullValue;
1312

1413
import com.meterware.simplestub.Memento;
1514
import com.meterware.simplestub.Stub;
@@ -19,6 +18,7 @@
1918
import java.util.ArrayList;
2019
import java.util.List;
2120
import java.util.concurrent.ConcurrentHashMap;
21+
import java.util.concurrent.atomic.AtomicInteger;
2222
import java.util.logging.Level;
2323
import java.util.logging.LogRecord;
2424
import oracle.kubernetes.TestUtils;
@@ -91,17 +91,20 @@ public void withHttpClientStep_logIfMissingHTTPClient() {
9191
final String SERVER_NAME = ADMIN_NAME;
9292
Packet packet =
9393
Stub.createStub(PacketStub.class).withServerName(SERVER_NAME).withGetKeyReturnValue(null);
94+
packet.put(ProcessingConstants.REMAINING_SERVERS_HEALTH_READ, new AtomicInteger(1));
9495

9596
ReadHealthWithHttpClientStep withHttpClientStep =
9697
new ReadHealthWithHttpClientStep(service, null, next);
9798
withHttpClientStep.apply(packet);
9899

99100
assertThat(logRecords, containsInfo(WLS_HEALTH_READ_FAILED_NO_HTTPCLIENT, SERVER_NAME));
100-
assertThat(packet.get(ProcessingConstants.SERVER_HEALTH_READ), nullValue());
101+
assertThat(
102+
((AtomicInteger) packet.get(ProcessingConstants.REMAINING_SERVERS_HEALTH_READ)).get(),
103+
is(1));
101104
}
102105

103106
@Test
104-
public void withHttpClientStep_putServerHealthReadToPacketIfSucceeded() {
107+
public void withHttpClientStep_decrmentServerHealthReadInPacketIfSucceeded() {
105108
V1Service service = Stub.createStub(V1ServiceStub.class);
106109
Step next = new MockStep(null);
107110
final String SERVER_NAME = ADMIN_NAME;
@@ -114,12 +117,15 @@ public void withHttpClientStep_putServerHealthReadToPacketIfSucceeded() {
114117
.withGetKeyReturnValue(httpClientStub);
115118
packet.put(
116119
ProcessingConstants.SERVER_HEALTH_MAP, new ConcurrentHashMap<String, ServerHealth>());
120+
packet.put(ProcessingConstants.REMAINING_SERVERS_HEALTH_READ, new AtomicInteger(1));
117121

118122
ReadHealthWithHttpClientStep withHttpClientStep =
119123
new ReadHealthWithHttpClientStep(service, null, next);
120124
withHttpClientStep.apply(packet);
121125

122-
assertThat(packet.get(ProcessingConstants.SERVER_HEALTH_READ), is(Boolean.TRUE));
126+
assertThat(
127+
((AtomicInteger) packet.get(ProcessingConstants.REMAINING_SERVERS_HEALTH_READ)).get(),
128+
is(0));
123129
}
124130

125131
abstract static class PacketStub extends Packet {

0 commit comments

Comments
 (0)