Skip to content

Commit cb3182a

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

File tree

7 files changed

+69
-117
lines changed

7 files changed

+69
-117
lines changed

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

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,21 @@ to
2626
<version>5.3.0<version>
2727
<scope>test</scope>
2828
</dependency>
29-
```
29+
```
30+
31+
32+
## Metrics interface changes
33+
34+
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)
35+
interface changed in non backwards compatible way, in order to make the API cleaner:
36+
37+
The following table show the relevant changes:
38+
39+
1. `reconcileCustomResource` -> `submittedForReconciliation`
40+
2. `reconciliationExecutionStarted` -> `reconciliationStarted`
41+
3. `reconciliationExecutionFinished` -> `successfulReconciliation`
42+
4. `cleanupDoneFor` -> `cleanupDone`
43+
44+
Other changes:
45+
46+
- `finishedReconciliation(..)` method was extended with `RetryInfo`

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ public void receivedEvent(Event event, Map<String, Object> metadata) {
202202
}
203203

204204
@Override
205-
public void cleanupDoneFor(ResourceID resourceID, Map<String, Object> metadata) {
205+
public void cleanupDone(ResourceID resourceID, Map<String, Object> metadata) {
206206
incrementCounter(resourceID, EVENTS_DELETE, metadata);
207207

208208
cleaner.removeMetersFor(resourceID);
@@ -230,20 +230,19 @@ public void reconcileCustomResource(
230230
}
231231

232232
@Override
233-
public void successfullyFinishedReconciliation(
234-
HasMetadata resource, Map<String, Object> metadata) {
233+
public void successfulReconciliation(HasMetadata resource, Map<String, Object> metadata) {
235234
incrementCounter(ResourceID.fromResource(resource), RECONCILIATIONS_SUCCESS, metadata);
236235
}
237236

238237
@Override
239-
public void reconciliationExecutionStarted(HasMetadata resource, Map<String, Object> metadata) {
238+
public void reconciliationStarted(HasMetadata resource, Map<String, Object> metadata) {
240239
var reconcilerExecutions =
241240
gauges.get(RECONCILIATIONS_EXECUTIONS + metadata.get(CONTROLLER_NAME));
242241
reconcilerExecutions.incrementAndGet();
243242
}
244243

245244
@Override
246-
public void reconciliationExecutionFinished(
245+
public void reconciliationFinished(
247246
HasMetadata resource, RetryInfo retryInfo, Map<String, Object> metadata) {
248247
var reconcilerExecutions =
249248
gauges.get(RECONCILIATIONS_EXECUTIONS + metadata.get(CONTROLLER_NAME));

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ public void receivedEvent(Event event, Map<String, Object> metadata) {
193193
}
194194

195195
@Override
196-
public void cleanupDoneFor(ResourceID resourceID, Map<String, Object> metadata) {
196+
public void cleanupDone(ResourceID resourceID, Map<String, Object> metadata) {
197197
gauges.get(numberOfResourcesRefName(getControllerName(metadata))).decrementAndGet();
198198
incrementCounter(EVENTS_DELETE, resourceID.getNamespace().orElse(null), metadata);
199199
}
@@ -217,20 +217,19 @@ public void submittedForReconciliation(
217217
}
218218

219219
@Override
220-
public void successfullyFinishedReconciliation(
221-
HasMetadata resource, Map<String, Object> metadata) {
220+
public void successfulReconciliation(HasMetadata resource, Map<String, Object> metadata) {
222221
incrementCounter(RECONCILIATIONS_SUCCESS, resource.getMetadata().getNamespace(), metadata);
223222
}
224223

225224
@Override
226-
public void reconciliationExecutionStarted(HasMetadata resource, Map<String, Object> metadata) {
225+
public void reconciliationStarted(HasMetadata resource, Map<String, Object> metadata) {
227226
var reconcilerExecutions =
228227
gauges.get(reconciliationExecutionGaugeRefKey(getControllerName(metadata)));
229228
reconcilerExecutions.incrementAndGet();
230229
}
231230

232231
@Override
233-
public void reconciliationExecutionFinished(
232+
public void reconciliationFinished(
234233
HasMetadata resource, RetryInfo retryInfo, Map<String, Object> metadata) {
235234
var reconcilerExecutions =
236235
gauges.get(reconciliationExecutionGaugeRefKey(metadata.get(CONTROLLER_NAME).toString()));

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

Lines changed: 8 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -75,19 +75,11 @@ public void receivedEvent(Event event, Map<String, Object> metadata) {
7575
metricsList.forEach(metrics -> metrics.receivedEvent(event, metadata));
7676
}
7777

78-
@Override
79-
@Deprecated(forRemoval = true)
80-
public void reconcileCustomResource(
81-
HasMetadata resource, RetryInfo retryInfo, Map<String, Object> metadata) {
82-
metricsList.forEach(metrics -> metrics.reconcileCustomResource(resource, retryInfo, metadata));
83-
}
84-
8578
@Override
8679
public void submittedForReconciliation(
8780
HasMetadata resource, RetryInfo retryInfo, Map<String, Object> metadata) {
8881
metricsList.forEach(
8982
metrics -> metrics.submittedForReconciliation(resource, retryInfo, metadata));
90-
reconcileCustomResource(resource, retryInfo, metadata);
9183
}
9284

9385
@Override
@@ -98,44 +90,28 @@ public void failedReconciliation(
9890
}
9991

10092
@Override
101-
public void reconciliationExecutionStarted(HasMetadata resource, Map<String, Object> metadata) {
102-
metricsList.forEach(metrics -> metrics.reconciliationExecutionStarted(resource, metadata));
93+
public void reconciliationStarted(HasMetadata resource, Map<String, Object> metadata) {
94+
metricsList.forEach(metrics -> metrics.reconciliationStarted(resource, metadata));
10395
}
10496

10597
@Override
106-
public void reconciliationExecutionFinished(
98+
public void reconciliationFinished(
10799
HasMetadata resource, RetryInfo retryInfo, Map<String, Object> metadata) {
108-
metricsList.forEach(
109-
metrics -> metrics.reconciliationExecutionFinished(resource, retryInfo, metadata));
100+
metricsList.forEach(metrics -> metrics.reconciliationFinished(resource, retryInfo, metadata));
110101
}
111102

112103
@Override
113-
public void cleanupDoneFor(ResourceID resourceID, Map<String, Object> metadata) {
114-
metricsList.forEach(metrics -> metrics.cleanupDoneFor(resourceID, metadata));
104+
public void cleanupDone(ResourceID resourceID, Map<String, Object> metadata) {
105+
metricsList.forEach(metrics -> metrics.cleanupDone(resourceID, metadata));
115106
}
116107

117108
@Override
118-
@Deprecated(forRemoval = true)
119-
public void finishedReconciliation(HasMetadata resource, Map<String, Object> metadata) {
120-
metricsList.forEach(metrics -> metrics.finishedReconciliation(resource, metadata));
121-
}
122-
123-
@Override
124-
public void successfullyFinishedReconciliation(
125-
HasMetadata resource, Map<String, Object> metadata) {
126-
metricsList.forEach(metrics -> metrics.successfullyFinishedReconciliation(resource, metadata));
127-
finishedReconciliation(resource, metadata);
109+
public void successfulReconciliation(HasMetadata resource, Map<String, Object> metadata) {
110+
metricsList.forEach(metrics -> metrics.successfulReconciliation(resource, metadata));
128111
}
129112

130113
@Override
131114
public <T> T timeControllerExecution(ControllerExecution<T> execution) throws Exception {
132115
return metricsList.get(0).timeControllerExecution(execution);
133116
}
134-
135-
@Override
136-
@Deprecated(forRemoval = true)
137-
public <T extends Map<?, ?>> T monitorSizeOf(T map, String name) {
138-
metricsList.forEach(metrics -> metrics.monitorSizeOf(map, name));
139-
return map;
140-
}
141117
}

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

Lines changed: 11 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -42,25 +42,14 @@ public interface Metrics {
4242
default void controllerRegistered(Controller<? extends HasMetadata> controller) {}
4343

4444
/**
45-
* Called when an event has been accepted by the SDK from an event source, which would result in
46-
* potentially triggering the associated Reconciler.
45+
* Called when an event has been accepted by the SDK from an event source, which would potentially
46+
* trigger the Reconciler.
4747
*
4848
* @param event the event
4949
* @param metadata metadata associated with the resource being processed
5050
*/
5151
default void receivedEvent(Event event, Map<String, Object> metadata) {}
5252

53-
/**
54-
* @deprecated use {@link Metrics#submittedForReconciliation(HasMetadata, RetryInfo, Map)} Called
55-
* right before a resource is dispatched to the ExecutorService for reconciliation.
56-
* @param resource the associated with the resource
57-
* @param retryInfo the current retry state information for the reconciliation request
58-
* @param metadata metadata associated with the resource being processed
59-
*/
60-
@Deprecated(forRemoval = true)
61-
default void reconcileCustomResource(
62-
HasMetadata resource, RetryInfo retryInfo, Map<String, Object> metadata) {}
63-
6453
/**
6554
* Called right before a resource is submitted to the ExecutorService for reconciliation.
6655
*
@@ -69,11 +58,9 @@ default void reconcileCustomResource(
6958
* @param metadata metadata associated with the resource being processed
7059
*/
7160
default void submittedForReconciliation(
72-
HasMetadata resource, RetryInfo retryInfo, Map<String, Object> metadata) {
73-
reconcileCustomResource(resource, retryInfo, metadata);
74-
}
61+
HasMetadata resource, RetryInfo retryInfo, Map<String, Object> metadata) {}
7562

76-
default void reconciliationExecutionStarted(HasMetadata resource, Map<String, Object> metadata) {}
63+
default void reconciliationStarted(HasMetadata resource, Map<String, Object> metadata) {}
7764

7865
/**
7966
* Called when a precedent reconciliation for the resource associated with the specified {@link
@@ -99,38 +86,28 @@ default void failedReconciliation(
9986
* @param resource the {@link ResourceID} associated with the resource being processed
10087
* @param metadata metadata associated with the resource being processed
10188
*/
102-
default void successfullyFinishedReconciliation(
103-
HasMetadata resource, Map<String, Object> metadata) {
104-
finishedReconciliation(resource, metadata);
105-
}
89+
default void successfulReconciliation(HasMetadata resource, Map<String, Object> metadata) {}
10690

10791
/**
108-
* Always called not only if successfully finished.
92+
* Always called when the reconciliation is finished, not only if reconciliation successfully
93+
* finished.
10994
*
11095
* @param resource the {@link ResourceID} associated with the resource being processed
11196
* @param retryInfo note that this retry info is in state after {@link RetryExecution#nextDelay()}
11297
* is called in case of exception.
11398
* @param metadata metadata associated with the resource being processed
11499
*/
115-
default void reconciliationExecutionFinished(
100+
default void reconciliationFinished(
116101
HasMetadata resource, RetryInfo retryInfo, Map<String, Object> metadata) {}
117102

118103
/**
119104
* Called when the resource associated with the specified {@link ResourceID} has been successfully
120-
* deleted and the clean-up performed by the associated reconciler is finished.
105+
* deleted and the cleanup of internal caches is completed.
121106
*
122-
* @param resourceID the {@link ResourceID} associated with the resource being processed
107+
* @param resourceID the {@link ResourceID} associated with the primary resource being processed
123108
* @param metadata metadata associated with the resource being processed
124109
*/
125-
default void cleanupDoneFor(ResourceID resourceID, Map<String, Object> metadata) {}
126-
127-
/**
128-
* @deprecated use {@link Metrics#successfullyFinishedReconciliation(HasMetadata, Map)}
129-
* @param resource the {@link ResourceID} associated with the resource being processed
130-
* @param metadata metadata associated with the resource being processed
131-
*/
132-
@Deprecated(forRemoval = true)
133-
default void finishedReconciliation(HasMetadata resource, Map<String, Object> metadata) {}
110+
default void cleanupDone(ResourceID resourceID, Map<String, Object> metadata) {}
134111

135112
/**
136113
* Encapsulates the information about a controller execution i.e. a call to either {@link
@@ -210,20 +187,4 @@ interface ControllerExecution<T> {
210187
default <T> T timeControllerExecution(ControllerExecution<T> execution) throws Exception {
211188
return execution.execute();
212189
}
213-
214-
/**
215-
* Monitors the size of the specified map. This currently isn't used directly by the SDK but could
216-
* be used by operators to monitor some of their structures, such as cache size.
217-
*
218-
* @param map the Map which size is to be monitored
219-
* @param name the name of the provided Map to be used in metrics data
220-
* @return the Map that was passed in so the registration can be done as part of an assignment
221-
* statement.
222-
* @param <T> the type of the Map being monitored
223-
*/
224-
@SuppressWarnings("unused")
225-
@Deprecated(forRemoval = true)
226-
default <T extends Map<?, ?>> T monitorSizeOf(T map, String name) {
227-
return map;
228-
}
229190
}

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
@@ -286,7 +286,7 @@ synchronized void eventProcessingFinished(
286286
return;
287287
}
288288
cleanupOnSuccessfulExecution(executionScope);
289-
metrics.successfullyFinishedReconciliation(executionScope.getResource(), metricsMetadata);
289+
metrics.successfulReconciliation(executionScope.getResource(), metricsMetadata);
290290
if ((triggerOnAllEvents() && executionScope.isDeleteEvent())
291291
|| (!triggerOnAllEvents() && state.deleteEventPresent())) {
292292
cleanupForDeletedEvent(executionScope.getResourceID());
@@ -432,7 +432,7 @@ private ResourceState getOrInitRetryExecution(ExecutionScope<P> executionScope)
432432
private void cleanupForDeletedEvent(ResourceID resourceID) {
433433
log.debug("Cleaning up for delete event");
434434
resourceStateManager.remove(resourceID);
435-
metrics.cleanupDoneFor(resourceID, metricsMetadata);
435+
metrics.cleanupDone(resourceID, metricsMetadata);
436436
}
437437

438438
private boolean isControllerUnderExecution(ResourceState state) {
@@ -529,13 +529,13 @@ public void run() {
529529
}
530530
actualResource.ifPresent(executionScope::setResource);
531531
MDCUtils.addResourceInfo(executionScope.getResource());
532-
metrics.reconciliationExecutionStarted(executionScope.getResource(), metricsMetadata);
532+
metrics.reconciliationStarted(executionScope.getResource(), metricsMetadata);
533533
thread.setName("ReconcilerExecutor-" + controllerName() + "-" + thread.getId());
534534
PostExecutionControl<P> postExecutionControl =
535535
reconciliationDispatcher.handleExecution(executionScope);
536536
eventProcessingFinished(executionScope, postExecutionControl);
537537
} finally {
538-
metrics.reconciliationExecutionFinished(
538+
metrics.reconciliationFinished(
539539
executionScope.getResource(), executionScope.getRetryInfo(), metricsMetadata);
540540
// restore original name
541541
thread.setName(name);

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

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -107,46 +107,46 @@ void failedReconciliation_shouldDelegateToAllMetricsInOrder() {
107107
}
108108

109109
@Test
110-
void reconciliationExecutionStarted_shouldDelegateToAllMetricsInOrder() {
111-
aggregatedMetrics.reconciliationExecutionStarted(resource, metadata);
110+
void reconciliationStarted_shouldDelegateToAllMetricsInOrder() {
111+
aggregatedMetrics.reconciliationStarted(resource, metadata);
112112

113113
final var inOrder = inOrder(metrics1, metrics2, metrics3);
114-
inOrder.verify(metrics1).reconciliationExecutionStarted(resource, metadata);
115-
inOrder.verify(metrics2).reconciliationExecutionStarted(resource, metadata);
116-
inOrder.verify(metrics3).reconciliationExecutionStarted(resource, metadata);
114+
inOrder.verify(metrics1).reconciliationStarted(resource, metadata);
115+
inOrder.verify(metrics2).reconciliationStarted(resource, metadata);
116+
inOrder.verify(metrics3).reconciliationStarted(resource, metadata);
117117
verifyNoMoreInteractions(metrics1, metrics2, metrics3);
118118
}
119119

120120
@Test
121-
void reconciliationExecutionFinished_shouldDelegateToAllMetricsInOrder() {
122-
aggregatedMetrics.reconciliationExecutionFinished(resource, retryInfo, metadata);
121+
void reconciliationFinished_shouldDelegateToAllMetricsInOrder() {
122+
aggregatedMetrics.reconciliationFinished(resource, retryInfo, metadata);
123123

124124
final var inOrder = inOrder(metrics1, metrics2, metrics3);
125-
inOrder.verify(metrics1).reconciliationExecutionFinished(resource, retryInfo, metadata);
126-
inOrder.verify(metrics2).reconciliationExecutionFinished(resource, retryInfo, metadata);
127-
inOrder.verify(metrics3).reconciliationExecutionFinished(resource, retryInfo, metadata);
125+
inOrder.verify(metrics1).reconciliationFinished(resource, retryInfo, metadata);
126+
inOrder.verify(metrics2).reconciliationFinished(resource, retryInfo, metadata);
127+
inOrder.verify(metrics3).reconciliationFinished(resource, retryInfo, metadata);
128128
verifyNoMoreInteractions(metrics1, metrics2, metrics3);
129129
}
130130

131131
@Test
132-
void cleanupDoneFor_shouldDelegateToAllMetricsInOrder() {
133-
aggregatedMetrics.cleanupDoneFor(resourceID, metadata);
132+
void cleanupDone_shouldDelegateToAllMetricsInOrder() {
133+
aggregatedMetrics.cleanupDone(resourceID, metadata);
134134

135135
final var inOrder = inOrder(metrics1, metrics2, metrics3);
136-
inOrder.verify(metrics1).cleanupDoneFor(resourceID, metadata);
137-
inOrder.verify(metrics2).cleanupDoneFor(resourceID, metadata);
138-
inOrder.verify(metrics3).cleanupDoneFor(resourceID, metadata);
136+
inOrder.verify(metrics1).cleanupDone(resourceID, metadata);
137+
inOrder.verify(metrics2).cleanupDone(resourceID, metadata);
138+
inOrder.verify(metrics3).cleanupDone(resourceID, metadata);
139139
verifyNoMoreInteractions(metrics1, metrics2, metrics3);
140140
}
141141

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

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

152152
@Test

0 commit comments

Comments
 (0)