Skip to content

Commit 5e09a95

Browse files
committed
wip
Signed-off-by: Attila Mészáros <a_meszaros@apple.com>
1 parent a31573d commit 5e09a95

File tree

9 files changed

+79
-76
lines changed

9 files changed

+79
-76
lines changed

docs/content/en/docs/migration/v5-3-migration.md

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,24 @@ to
2828
</dependency>
2929
```
3030

31-
3231
## Metrics interface changes
3332

3433
The [Metrics](https://github.com/operator-framework/java-operator-sdk/blob/main/operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/monitoring/Metrics.java)
3534
interface changed in non backwards compatible way, in order to make the API cleaner:
3635

37-
The following table show the relevant changes:
36+
The following table shows the relevant method renames:
3837

39-
1. `reconcileCustomResource` -> `submittedForReconciliation`
40-
2. `reconciliationExecutionStarted` -> `reconciliationStarted`
41-
3. `reconciliationExecutionFinished` -> `successfulReconciliation`
42-
4. `cleanupDoneFor` -> `cleanupDone`
38+
| v5.2 method | v5.3 method |
39+
|------------------------------------|------------------------------|
40+
| `reconcileCustomResource` | `reconciliationSubmitted` |
41+
| `reconciliationExecutionStarted` | `reconciliationStarted` |
42+
| `reconciliationExecutionFinished` | `reconciliationSucceeded` |
43+
| `failedReconciliation` | `reconciliationFailed` |
44+
| `finishedReconciliation` | `reconciliationFinished` |
45+
| `cleanupDoneFor` | `cleanupDone` |
46+
| `receivedEvent` | `eventReceived` |
47+
| `timeControllerExecution` | `timedControllerExecution` |
4348

4449
Other changes:
45-
46-
- `finishedReconciliation(..)` method was extended with `RetryInfo`
50+
- `reconciliationFinished(..)` method is extended with `RetryInfo`
51+
- `monitorSizeOf(..)` method is removed.

micrometer-support/src/main/java/io/javaoperatorsdk/operator/monitoring/micrometer/MicrometerMetrics.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ public void controllerRegistered(Controller<? extends HasMetadata> controller) {
146146
}
147147

148148
@Override
149-
public <T> T timeControllerExecution(ControllerExecution<T> execution) {
149+
public <T> T timedControllerExecution(ControllerExecution<T> execution) {
150150
final var name = execution.controllerName();
151151
final var execName = PREFIX + CONTROLLERS_EXECUTION + execution.name();
152152
final var resourceID = execution.resourceID();
@@ -183,7 +183,7 @@ public <T> T timeControllerExecution(ControllerExecution<T> execution) {
183183
}
184184

185185
@Override
186-
public void receivedEvent(Event event, Map<String, Object> metadata) {
186+
public void eventReceived(Event event, Map<String, Object> metadata) {
187187
if (event instanceof ResourceEvent) {
188188
incrementCounter(
189189
event.getRelatedCustomResourceID(),
@@ -209,7 +209,7 @@ public void cleanupDone(ResourceID resourceID, Map<String, Object> metadata) {
209209
}
210210

211211
@Override
212-
public void submittedForReconciliation(
212+
public void reconciliationSubmitted(
213213
HasMetadata resource, RetryInfo retryInfoNullable, Map<String, Object> metadata) {
214214
Optional<RetryInfo> retryInfo = Optional.ofNullable(retryInfoNullable);
215215
incrementCounter(
@@ -229,7 +229,7 @@ public void submittedForReconciliation(
229229
}
230230

231231
@Override
232-
public void successfulReconciliation(HasMetadata resource, Map<String, Object> metadata) {
232+
public void reconciliationSucceeded(HasMetadata resource, Map<String, Object> metadata) {
233233
incrementCounter(ResourceID.fromResource(resource), RECONCILIATIONS_SUCCESS, metadata);
234234
}
235235

@@ -253,7 +253,7 @@ public void reconciliationFinished(
253253
}
254254

255255
@Override
256-
public void failedReconciliation(
256+
public void reconciliationFailed(
257257
HasMetadata resource, RetryInfo retry, Exception exception, Map<String, Object> metadata) {
258258
var cause = exception.getCause();
259259
if (cause == null) {

micrometer-support/src/main/java/io/javaoperatorsdk/operator/monitoring/micrometer/MicrometerMetricsV2.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ private String numberOfResourcesRefName(String name) {
156156
}
157157

158158
@Override
159-
public <T> T timeControllerExecution(ControllerExecution<T> execution) {
159+
public <T> T timedControllerExecution(ControllerExecution<T> execution) {
160160
final var name = execution.controllerName();
161161
final var timer = executionTimers.get(name);
162162
return timer.record(
@@ -170,7 +170,7 @@ public <T> T timeControllerExecution(ControllerExecution<T> execution) {
170170
}
171171

172172
@Override
173-
public void receivedEvent(Event event, Map<String, Object> metadata) {
173+
public void eventReceived(Event event, Map<String, Object> metadata) {
174174
if (event instanceof ResourceEvent resourceEvent) {
175175
if (resourceEvent.getAction() == ResourceAction.ADDED) {
176176
gauges.get(numberOfResourcesRefName(getControllerName(metadata))).incrementAndGet();
@@ -199,7 +199,7 @@ public void cleanupDone(ResourceID resourceID, Map<String, Object> metadata) {
199199
}
200200

201201
@Override
202-
public void submittedForReconciliation(
202+
public void reconciliationSubmitted(
203203
HasMetadata resource, RetryInfo retryInfoNullable, Map<String, Object> metadata) {
204204
Optional<RetryInfo> retryInfo = Optional.ofNullable(retryInfoNullable);
205205

@@ -217,7 +217,7 @@ public void submittedForReconciliation(
217217
}
218218

219219
@Override
220-
public void successfulReconciliation(HasMetadata resource, Map<String, Object> metadata) {
220+
public void reconciliationSucceeded(HasMetadata resource, Map<String, Object> metadata) {
221221
incrementCounter(RECONCILIATIONS_SUCCESS, resource.getMetadata().getNamespace(), metadata);
222222
}
223223

@@ -241,7 +241,7 @@ public void reconciliationFinished(
241241
}
242242

243243
@Override
244-
public void failedReconciliation(
244+
public void reconciliationFailed(
245245
HasMetadata resource, RetryInfo retry, Exception exception, Map<String, Object> metadata) {
246246
incrementCounter(RECONCILIATIONS_FAILED, resource.getMetadata().getNamespace(), metadata);
247247
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/monitoring/AggregatedMetrics.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
* All method calls are delegated to each metrics instance in the list in the order they were
3535
* provided to the constructor.
3636
*
37-
* <p><strong>Important:</strong> The {@link #timeControllerExecution(ControllerExecution)} method
37+
* <p><strong>Important:</strong> The {@link #timedControllerExecution(ControllerExecution)} method
3838
* is handled specially - it is only invoked on the first metrics instance in the list, since it's
3939
* not an idempotent operation and can only be executed once. The controller execution cannot be
4040
* repeated multiple times as it would produce side effects and potentially inconsistent results.
@@ -71,22 +71,21 @@ public void controllerRegistered(Controller<? extends HasMetadata> controller) {
7171
}
7272

7373
@Override
74-
public void receivedEvent(Event event, Map<String, Object> metadata) {
75-
metricsList.forEach(metrics -> metrics.receivedEvent(event, metadata));
74+
public void eventReceived(Event event, Map<String, Object> metadata) {
75+
metricsList.forEach(metrics -> metrics.eventReceived(event, metadata));
7676
}
7777

7878
@Override
79-
public void submittedForReconciliation(
79+
public void reconciliationSubmitted(
8080
HasMetadata resource, RetryInfo retryInfo, Map<String, Object> metadata) {
81-
metricsList.forEach(
82-
metrics -> metrics.submittedForReconciliation(resource, retryInfo, metadata));
81+
metricsList.forEach(metrics -> metrics.reconciliationSubmitted(resource, retryInfo, metadata));
8382
}
8483

8584
@Override
86-
public void failedReconciliation(
85+
public void reconciliationFailed(
8786
HasMetadata resource, RetryInfo retry, Exception exception, Map<String, Object> metadata) {
8887
metricsList.forEach(
89-
metrics -> metrics.failedReconciliation(resource, retry, exception, metadata));
88+
metrics -> metrics.reconciliationFailed(resource, retry, exception, metadata));
9089
}
9190

9291
@Override
@@ -106,12 +105,12 @@ public void cleanupDone(ResourceID resourceID, Map<String, Object> metadata) {
106105
}
107106

108107
@Override
109-
public void successfulReconciliation(HasMetadata resource, Map<String, Object> metadata) {
110-
metricsList.forEach(metrics -> metrics.successfulReconciliation(resource, metadata));
108+
public void reconciliationSucceeded(HasMetadata resource, Map<String, Object> metadata) {
109+
metricsList.forEach(metrics -> metrics.reconciliationSucceeded(resource, metadata));
111110
}
112111

113112
@Override
114-
public <T> T timeControllerExecution(ControllerExecution<T> execution) throws Exception {
115-
return metricsList.get(0).timeControllerExecution(execution);
113+
public <T> T timedControllerExecution(ControllerExecution<T> execution) throws Exception {
114+
return metricsList.get(0).timedControllerExecution(execution);
116115
}
117116
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/monitoring/Metrics.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ default void controllerRegistered(Controller<? extends HasMetadata> controller)
4848
* @param event the event
4949
* @param metadata metadata associated with the resource being processed
5050
*/
51-
default void receivedEvent(Event event, Map<String, Object> metadata) {}
51+
default void eventReceived(Event event, Map<String, Object> metadata) {}
5252

5353
/**
5454
* Called right before a resource is submitted to the ExecutorService for reconciliation.
@@ -57,7 +57,7 @@ default void receivedEvent(Event event, Map<String, Object> metadata) {}
5757
* @param retryInfo the current retry state information for the reconciliation request
5858
* @param metadata metadata associated with the resource being processed
5959
*/
60-
default void submittedForReconciliation(
60+
default void reconciliationSubmitted(
6161
HasMetadata resource, RetryInfo retryInfo, Map<String, Object> metadata) {}
6262

6363
default void reconciliationStarted(HasMetadata resource, Map<String, Object> metadata) {}
@@ -71,7 +71,7 @@ default void reconciliationStarted(HasMetadata resource, Map<String, Object> met
7171
* @param exception the exception that caused the failed reconciliation resulting in a retry
7272
* @param metadata metadata associated with the resource being processed
7373
*/
74-
default void failedReconciliation(
74+
default void reconciliationFailed(
7575
HasMetadata resource,
7676
RetryInfo retryInfo,
7777
Exception exception,
@@ -86,7 +86,7 @@ default void failedReconciliation(
8686
* @param resource the {@link ResourceID} associated with the resource being processed
8787
* @param metadata metadata associated with the resource being processed
8888
*/
89-
default void successfulReconciliation(HasMetadata resource, Map<String, Object> metadata) {}
89+
default void reconciliationSucceeded(HasMetadata resource, Map<String, Object> metadata) {}
9090

9191
/**
9292
* Always called when the reconciliation is finished, not only if reconciliation successfully
@@ -115,7 +115,7 @@ default void cleanupDone(ResourceID resourceID, Map<String, Object> metadata) {}
115115
* {@link io.javaoperatorsdk.operator.api.reconciler.Cleaner#cleanup(HasMetadata, Context)}. Note
116116
* that instances are automatically created for you by the SDK and passed to your Metrics
117117
* implementation at the appropriate time to the {@link
118-
* #timeControllerExecution(ControllerExecution)} method.
118+
* #timedControllerExecution(ControllerExecution)} method.
119119
*
120120
* @param <T> the outcome type associated with the controller execution. Currently, one of {@link
121121
* io.javaoperatorsdk.operator.api.reconciler.UpdateControl} or {@link
@@ -184,7 +184,7 @@ interface ControllerExecution<T> {
184184
* @throws Exception if an error occurred during the controller's execution, usually this should
185185
* just be a pass-through of whatever the controller returned
186186
*/
187-
default <T> T timeControllerExecution(ControllerExecution<T> execution) throws Exception {
187+
default <T> T timedControllerExecution(ControllerExecution<T> execution) throws Exception {
188188
return execution.execute();
189189
}
190190
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/Controller.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ public Controller(
143143

144144
@Override
145145
public UpdateControl<P> reconcile(P resource, Context<P> context) throws Exception {
146-
return metrics.timeControllerExecution(
146+
return metrics.timedControllerExecution(
147147
new ControllerExecution<>() {
148148
@Override
149149
public String name() {
@@ -196,7 +196,7 @@ public UpdateControl<P> execute() throws Exception {
196196
@Override
197197
public DeleteControl cleanup(P resource, Context<P> context) {
198198
try {
199-
return metrics.timeControllerExecution(
199+
return metrics.timedControllerExecution(
200200
new ControllerExecution<>() {
201201
@Override
202202
public String name() {

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventProcessor.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ public synchronized void handleEvent(Event event) {
127127
var state = optionalState.orElseThrow();
128128
final var resourceID = event.getRelatedCustomResourceID();
129129
MDCUtils.addResourceIDInfo(resourceID);
130-
metrics.receivedEvent(event, metricsMetadata);
130+
metrics.eventReceived(event, metricsMetadata);
131131
handleEventMarking(event, state);
132132
if (!this.running) {
133133
if (state.deleteEventPresent()) {
@@ -180,7 +180,7 @@ private void submitReconciliationExecution(ResourceState state) {
180180
state.deleteEventPresent(),
181181
state.isDeleteFinalStateUnknown());
182182
state.unMarkEventReceived(triggerOnAllEvents());
183-
metrics.submittedForReconciliation(latest, state.getRetry(), metricsMetadata);
183+
metrics.reconciliationSubmitted(latest, state.getRetry(), metricsMetadata);
184184
log.debug("Executing events for custom resource. Scope: {}", executionScope);
185185
executor.execute(new ReconcilerExecutor(resourceID, executionScope));
186186
} else {
@@ -286,7 +286,7 @@ synchronized void eventProcessingFinished(
286286
return;
287287
}
288288
cleanupOnSuccessfulExecution(executionScope);
289-
metrics.successfulReconciliation(executionScope.getResource(), metricsMetadata);
289+
metrics.reconciliationSucceeded(executionScope.getResource(), metricsMetadata);
290290
if ((triggerOnAllEvents() && executionScope.isDeleteEvent())
291291
|| (!triggerOnAllEvents() && state.deleteEventPresent())) {
292292
cleanupForDeletedEvent(executionScope.getResourceID());
@@ -362,7 +362,7 @@ private void handleRetryOnException(ExecutionScope<P> executionScope, Exception
362362
|| (triggerOnAllEvents() && state.isAdditionalEventPresentAfterDeleteEvent());
363363
state.markEventReceived(triggerOnAllEvents());
364364
retryAwareErrorLogging(state.getRetry(), eventPresent, exception, executionScope);
365-
metrics.failedReconciliation(
365+
metrics.reconciliationFailed(
366366
executionScope.getResource(), state.getRetry(), exception, metricsMetadata);
367367
if (eventPresent) {
368368
log.debug("New events exist for resource id");

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/api/monitoring/AggregatedMetricsTest.java

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -73,36 +73,36 @@ void controllerRegistered_shouldDelegateToAllMetricsInOrder() {
7373
}
7474

7575
@Test
76-
void receivedEvent_shouldDelegateToAllMetricsInOrder() {
77-
aggregatedMetrics.receivedEvent(event, metadata);
76+
void eventReceived_shouldDelegateToAllMetricsInOrder() {
77+
aggregatedMetrics.eventReceived(event, metadata);
7878

7979
final var inOrder = inOrder(metrics1, metrics2, metrics3);
80-
inOrder.verify(metrics1).receivedEvent(event, metadata);
81-
inOrder.verify(metrics2).receivedEvent(event, metadata);
82-
inOrder.verify(metrics3).receivedEvent(event, metadata);
80+
inOrder.verify(metrics1).eventReceived(event, metadata);
81+
inOrder.verify(metrics2).eventReceived(event, metadata);
82+
inOrder.verify(metrics3).eventReceived(event, metadata);
8383
verifyNoMoreInteractions(metrics1, metrics2, metrics3);
8484
}
8585

8686
@Test
87-
void submittedForReconciliation_shouldDelegateToAllMetricsInOrder() {
88-
aggregatedMetrics.submittedForReconciliation(resource, retryInfo, metadata);
87+
void reconciliationSubmitted_shouldDelegateToAllMetricsInOrder() {
88+
aggregatedMetrics.reconciliationSubmitted(resource, retryInfo, metadata);
8989

9090
final var inOrder = inOrder(metrics1, metrics2, metrics3);
91-
inOrder.verify(metrics1).submittedForReconciliation(resource, retryInfo, metadata);
92-
inOrder.verify(metrics2).submittedForReconciliation(resource, retryInfo, metadata);
93-
inOrder.verify(metrics3).submittedForReconciliation(resource, retryInfo, metadata);
91+
inOrder.verify(metrics1).reconciliationSubmitted(resource, retryInfo, metadata);
92+
inOrder.verify(metrics2).reconciliationSubmitted(resource, retryInfo, metadata);
93+
inOrder.verify(metrics3).reconciliationSubmitted(resource, retryInfo, metadata);
9494
verifyNoMoreInteractions(metrics1, metrics2, metrics3);
9595
}
9696

9797
@Test
98-
void failedReconciliation_shouldDelegateToAllMetricsInOrder() {
98+
void reconciliationFailed_shouldDelegateToAllMetricsInOrder() {
9999
final var exception = new RuntimeException("Test exception");
100-
aggregatedMetrics.failedReconciliation(resource, retryInfo, exception, metadata);
100+
aggregatedMetrics.reconciliationFailed(resource, retryInfo, exception, metadata);
101101

102102
final var inOrder = inOrder(metrics1, metrics2, metrics3);
103-
inOrder.verify(metrics1).failedReconciliation(resource, retryInfo, exception, metadata);
104-
inOrder.verify(metrics2).failedReconciliation(resource, retryInfo, exception, metadata);
105-
inOrder.verify(metrics3).failedReconciliation(resource, retryInfo, exception, metadata);
103+
inOrder.verify(metrics1).reconciliationFailed(resource, retryInfo, exception, metadata);
104+
inOrder.verify(metrics2).reconciliationFailed(resource, retryInfo, exception, metadata);
105+
inOrder.verify(metrics3).reconciliationFailed(resource, retryInfo, exception, metadata);
106106
verifyNoMoreInteractions(metrics1, metrics2, metrics3);
107107
}
108108

@@ -140,40 +140,40 @@ void cleanupDone_shouldDelegateToAllMetricsInOrder() {
140140
}
141141

142142
@Test
143-
void successfulReconciliation_shouldDelegateToAllMetricsInOrder() {
144-
aggregatedMetrics.successfulReconciliation(resource, metadata);
143+
void reconciliationSucceeded_shouldDelegateToAllMetricsInOrder() {
144+
aggregatedMetrics.reconciliationSucceeded(resource, metadata);
145145

146146
final var inOrder = inOrder(metrics1, metrics2, metrics3);
147-
inOrder.verify(metrics1).successfulReconciliation(resource, metadata);
148-
inOrder.verify(metrics2).successfulReconciliation(resource, metadata);
149-
inOrder.verify(metrics3).successfulReconciliation(resource, metadata);
147+
inOrder.verify(metrics1).reconciliationSucceeded(resource, metadata);
148+
inOrder.verify(metrics2).reconciliationSucceeded(resource, metadata);
149+
inOrder.verify(metrics3).reconciliationSucceeded(resource, metadata);
150150
}
151151

152152
@Test
153-
void timeControllerExecution_shouldOnlyDelegateToFirstMetrics() throws Exception {
153+
void timedControllerExecution_shouldOnlyDelegateToFirstMetrics() throws Exception {
154154
final var expectedResult = "execution result";
155-
when(metrics1.timeControllerExecution(controllerExecution)).thenReturn(expectedResult);
155+
when(metrics1.timedControllerExecution(controllerExecution)).thenReturn(expectedResult);
156156

157-
final var result = aggregatedMetrics.timeControllerExecution(controllerExecution);
157+
final var result = aggregatedMetrics.timedControllerExecution(controllerExecution);
158158

159159
assertThat(result).isEqualTo(expectedResult);
160-
verify(metrics1).timeControllerExecution(controllerExecution);
161-
verify(metrics2, never()).timeControllerExecution(any());
162-
verify(metrics3, never()).timeControllerExecution(any());
160+
verify(metrics1).timedControllerExecution(controllerExecution);
161+
verify(metrics2, never()).timedControllerExecution(any());
162+
verify(metrics3, never()).timedControllerExecution(any());
163163
verifyNoMoreInteractions(metrics1, metrics2, metrics3);
164164
}
165165

166166
@Test
167-
void timeControllerExecution_shouldPropagateException() throws Exception {
167+
void timedControllerExecution_shouldPropagateException() throws Exception {
168168
final var expectedException = new RuntimeException("Controller execution failed");
169-
when(metrics1.timeControllerExecution(controllerExecution)).thenThrow(expectedException);
169+
when(metrics1.timedControllerExecution(controllerExecution)).thenThrow(expectedException);
170170

171-
assertThatThrownBy(() -> aggregatedMetrics.timeControllerExecution(controllerExecution))
171+
assertThatThrownBy(() -> aggregatedMetrics.timedControllerExecution(controllerExecution))
172172
.isSameAs(expectedException);
173173

174-
verify(metrics1).timeControllerExecution(controllerExecution);
175-
verify(metrics2, never()).timeControllerExecution(any());
176-
verify(metrics3, never()).timeControllerExecution(any());
174+
verify(metrics1).timedControllerExecution(controllerExecution);
175+
verify(metrics2, never()).timedControllerExecution(any());
176+
verify(metrics3, never()).timedControllerExecution(any());
177177
verifyNoMoreInteractions(metrics1, metrics2, metrics3);
178178
}
179179
}

0 commit comments

Comments
 (0)