Skip to content

Commit df44155

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

File tree

4 files changed

+105
-34
lines changed

4 files changed

+105
-34
lines changed

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

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import io.fabric8.kubernetes.api.model.HasMetadata;
2121
import io.javaoperatorsdk.operator.api.config.Utils;
2222
import io.javaoperatorsdk.operator.processing.event.ResourceID;
23+
import io.javaoperatorsdk.operator.processing.event.source.ResourceAction;
2324

2425
public class MDCUtils {
2526

@@ -34,6 +35,38 @@ public class MDCUtils {
3435
private static final boolean enabled =
3536
Utils.getBooleanFromSystemPropsOrDefault(Utils.USE_MDC_ENV_KEY, true);
3637

38+
private static final String INFORMER_EVENT_RESOURCE_NAME = "informer.event.resource.name";
39+
private static final String INFORMER_EVENT_RESOURCE_NAMESPACE =
40+
"informer.event.resource.namespace";
41+
private static final String INFORMER_EVENT_RESOURCE_KIND = "informer.event.resource.kind";
42+
private static final String INFORMER_EVENT_RESOURCE_VERSION =
43+
"informer.event.resource.resourceVersion";
44+
private static final String INFORMER_EVENT_ACTION = "informer.event.action";
45+
private static final String INFORMER_NAME = "informer.name";
46+
47+
public static void addInformerEventInfo(
48+
HasMetadata resource, ResourceAction action, String eventSourceName) {
49+
if (enabled) {
50+
MDC.put(INFORMER_EVENT_RESOURCE_NAME, resource.getMetadata().getName());
51+
MDC.put(INFORMER_EVENT_RESOURCE_NAMESPACE, resource.getMetadata().getNamespace());
52+
MDC.put(INFORMER_EVENT_RESOURCE_KIND, HasMetadata.getKind(resource.getClass()));
53+
MDC.put(INFORMER_EVENT_RESOURCE_VERSION, resource.getMetadata().getNamespace());
54+
MDC.put(INFORMER_EVENT_ACTION, action.name());
55+
MDC.put(INFORMER_NAME, eventSourceName);
56+
}
57+
}
58+
59+
public static void removeInformerEventInfo() {
60+
if (enabled) {
61+
MDC.remove(INFORMER_EVENT_RESOURCE_NAME);
62+
MDC.remove(INFORMER_EVENT_RESOURCE_NAMESPACE);
63+
MDC.remove(INFORMER_EVENT_RESOURCE_KIND);
64+
MDC.remove(INFORMER_EVENT_RESOURCE_VERSION);
65+
MDC.remove(INFORMER_EVENT_ACTION);
66+
MDC.remove(INFORMER_NAME);
67+
}
68+
}
69+
3770
public static void addResourceIDInfo(ResourceID resourceID) {
3871
if (enabled) {
3972
MDC.put(NAME, resourceID.getName());

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/controller/ControllerEventSource.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,18 @@ private boolean isAcceptedByFilters(ResourceAction action, T resource, T oldReso
135135

136136
@Override
137137
public synchronized void onAdd(T resource) {
138-
handleOnAddOrUpdate(ResourceAction.ADDED, null, resource);
138+
withMDC(
139+
resource,
140+
ResourceAction.ADDED,
141+
() -> handleOnAddOrUpdate(ResourceAction.ADDED, null, resource));
139142
}
140143

141144
@Override
142145
public synchronized void onUpdate(T oldCustomResource, T newCustomResource) {
143-
handleOnAddOrUpdate(ResourceAction.UPDATED, oldCustomResource, newCustomResource);
146+
withMDC(
147+
newCustomResource,
148+
ResourceAction.UPDATED,
149+
() -> handleOnAddOrUpdate(ResourceAction.UPDATED, oldCustomResource, newCustomResource));
144150
}
145151

146152
private void handleOnAddOrUpdate(
@@ -160,10 +166,16 @@ private void handleOnAddOrUpdate(
160166

161167
@Override
162168
public synchronized void onDelete(T resource, boolean deletedFinalStateUnknown) {
163-
temporaryResourceCache.onDeleteEvent(resource, deletedFinalStateUnknown);
164-
// delete event is quite special here, that requires special care, since we clean up caches on
165-
// delete event.
166-
handleEvent(ResourceAction.DELETED, resource, null, deletedFinalStateUnknown);
169+
withMDC(
170+
resource,
171+
ResourceAction.DELETED,
172+
() -> {
173+
temporaryResourceCache.onDeleteEvent(resource, deletedFinalStateUnknown);
174+
// delete event is quite special here, that requires special care, since we clean up
175+
// caches on
176+
// delete event.
177+
handleEvent(ResourceAction.DELETED, resource, null, deletedFinalStateUnknown);
178+
});
167179
}
168180

169181
@Override

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerEventSource.java

Lines changed: 44 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -100,42 +100,58 @@ private InformerEventSource(
100100

101101
@Override
102102
public void onAdd(R newResource) {
103-
if (log.isDebugEnabled()) {
104-
log.debug(
105-
"On add event received for resource id: {} type: {} version: {}",
106-
ResourceID.fromResource(newResource),
107-
resourceType().getSimpleName(),
108-
newResource.getMetadata().getResourceVersion());
109-
}
110-
onAddOrUpdate(ResourceAction.ADDED, newResource, null);
103+
withMDC(
104+
newResource,
105+
ResourceAction.ADDED,
106+
() -> {
107+
if (log.isDebugEnabled()) {
108+
log.debug(
109+
"On add event received for resource id: {} type: {} version: {}",
110+
ResourceID.fromResource(newResource),
111+
resourceType().getSimpleName(),
112+
newResource.getMetadata().getResourceVersion());
113+
}
114+
onAddOrUpdate(ResourceAction.ADDED, newResource, null);
115+
});
111116
}
112117

113118
@Override
114119
public void onUpdate(R oldObject, R newObject) {
115-
if (log.isDebugEnabled()) {
116-
log.debug(
117-
"On update event received for resource id: {} type: {} version: {} old version: {} ",
118-
ResourceID.fromResource(newObject),
119-
resourceType().getSimpleName(),
120-
newObject.getMetadata().getResourceVersion(),
121-
oldObject.getMetadata().getResourceVersion());
122-
}
123-
onAddOrUpdate(ResourceAction.UPDATED, newObject, oldObject);
120+
withMDC(
121+
newObject,
122+
ResourceAction.UPDATED,
123+
() -> {
124+
if (log.isDebugEnabled()) {
125+
log.debug(
126+
"On update event received for resource id: {} type: {} version: {} old version: {}"
127+
+ " ",
128+
ResourceID.fromResource(newObject),
129+
resourceType().getSimpleName(),
130+
newObject.getMetadata().getResourceVersion(),
131+
oldObject.getMetadata().getResourceVersion());
132+
}
133+
onAddOrUpdate(ResourceAction.UPDATED, newObject, oldObject);
134+
});
124135
}
125136

126137
@Override
127138
public synchronized void onDelete(R resource, boolean b) {
128-
if (log.isDebugEnabled()) {
129-
log.debug(
130-
"On delete event received for resource id: {} type: {}",
131-
ResourceID.fromResource(resource),
132-
resourceType().getSimpleName());
133-
}
134-
primaryToSecondaryIndex.onDelete(resource);
135-
temporaryResourceCache.onDeleteEvent(resource, b);
136-
if (acceptedByDeleteFilters(resource, b)) {
137-
propagateEvent(resource);
138-
}
139+
withMDC(
140+
resource,
141+
ResourceAction.DELETED,
142+
() -> {
143+
if (log.isDebugEnabled()) {
144+
log.debug(
145+
"On delete event received for resource id: {} type: {}",
146+
ResourceID.fromResource(resource),
147+
resourceType().getSimpleName());
148+
}
149+
primaryToSecondaryIndex.onDelete(resource);
150+
temporaryResourceCache.onDeleteEvent(resource, b);
151+
if (acceptedByDeleteFilters(resource, b)) {
152+
propagateEvent(resource);
153+
}
154+
});
139155
}
140156

141157
@Override

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/ManagedInformerEventSource.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import io.javaoperatorsdk.operator.health.InformerHealthIndicator;
4141
import io.javaoperatorsdk.operator.health.InformerWrappingEventSourceHealthIndicator;
4242
import io.javaoperatorsdk.operator.health.Status;
43+
import io.javaoperatorsdk.operator.processing.MDCUtils;
4344
import io.javaoperatorsdk.operator.processing.event.ResourceID;
4445
import io.javaoperatorsdk.operator.processing.event.source.*;
4546
import io.javaoperatorsdk.operator.processing.event.source.ResourceAction;
@@ -266,4 +267,13 @@ public String toString() {
266267
public void setControllerConfiguration(ControllerConfiguration<R> controllerConfiguration) {
267268
this.controllerConfiguration = controllerConfiguration;
268269
}
270+
271+
protected void withMDC(R resource, ResourceAction action, Runnable runnable) {
272+
try {
273+
MDCUtils.addInformerEventInfo(resource, action, name());
274+
runnable.run();
275+
} finally {
276+
MDCUtils.removeInformerEventInfo();
277+
}
278+
}
269279
}

0 commit comments

Comments
 (0)