Skip to content

Commit 51ee0ff

Browse files
metacosmCopilot
andauthored
fix: unify how resource information is added, prevent NPEs (#3185)
* fix: unify how resource information is added, prevent NPEs Fixes #3183 Some (all?) MDC implementations prevent adding null values so default should be provided or the key omitted. Signed-off-by: Chris Laprun <metacosm@gmail.com> * fix: prefix name Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix: cosmetic Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * refactor: remove unused methods Signed-off-by: Chris Laprun <metacosm@gmail.com> --------- Signed-off-by: Chris Laprun <metacosm@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent fc23fef commit 51ee0ff

File tree

1 file changed

+32
-54
lines changed
  • operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing

1 file changed

+32
-54
lines changed

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

Lines changed: 32 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -35,44 +35,28 @@ public class MDCUtils {
3535
private static final boolean enabled =
3636
Utils.getBooleanFromSystemPropsOrDefault(Utils.USE_MDC_ENV_KEY, true);
3737

38-
private static final String EVENT_RESOURCE_NAME = "eventsource.event.resource.name";
39-
private static final String EVENT_RESOURCE_UID = "eventsource.event.resource.uid";
40-
private static final String EVENT_RESOURCE_NAMESPACE = "eventsource.event.resource.namespace";
41-
private static final String EVENT_RESOURCE_KIND = "eventsource.event.resource.kind";
42-
private static final String EVENT_RESOURCE_VERSION = "eventsource.event.resource.resourceVersion";
43-
private static final String EVENT_ACTION = "eventsource.event.action";
38+
private static final String EVENT_SOURCE_PREFIX = "eventsource.event.";
39+
private static final String EVENT_ACTION = EVENT_SOURCE_PREFIX + "action";
4440
private static final String EVENT_SOURCE_NAME = "eventsource.name";
41+
private static final String UNKNOWN_ACTION = "unknown action";
4542

4643
public static void addInformerEventInfo(
4744
HasMetadata resource, ResourceAction action, String eventSourceName) {
4845
if (enabled) {
49-
MDC.put(EVENT_RESOURCE_NAME, resource.getMetadata().getName());
50-
MDC.put(EVENT_RESOURCE_NAMESPACE, resource.getMetadata().getNamespace());
51-
MDC.put(EVENT_RESOURCE_KIND, HasMetadata.getKind(resource.getClass()));
52-
MDC.put(EVENT_RESOURCE_VERSION, resource.getMetadata().getResourceVersion());
53-
MDC.put(EVENT_RESOURCE_UID, resource.getMetadata().getUid());
54-
MDC.put(EVENT_ACTION, action == null ? null : action.name());
46+
addResourceInfo(resource, true);
47+
MDC.put(EVENT_ACTION, action == null ? UNKNOWN_ACTION : action.name());
5548
MDC.put(EVENT_SOURCE_NAME, eventSourceName);
5649
}
5750
}
5851

5952
public static void removeInformerEventInfo() {
6053
if (enabled) {
61-
MDC.remove(EVENT_RESOURCE_NAME);
62-
MDC.remove(EVENT_RESOURCE_NAMESPACE);
63-
MDC.remove(EVENT_RESOURCE_KIND);
64-
MDC.remove(EVENT_RESOURCE_VERSION);
65-
MDC.remove(EVENT_RESOURCE_UID);
54+
removeResourceInfo(true);
6655
MDC.remove(EVENT_ACTION);
6756
MDC.remove(EVENT_SOURCE_NAME);
6857
}
6958
}
7059

71-
public static void withMDCForEvent(
72-
HasMetadata resource, Runnable runnable, String eventSourceName) {
73-
withMDCForEvent(resource, null, runnable, eventSourceName);
74-
}
75-
7660
public static void withMDCForEvent(
7761
HasMetadata resource, ResourceAction action, Runnable runnable, String eventSourceName) {
7862
try {
@@ -83,24 +67,6 @@ public static void withMDCForEvent(
8367
}
8468
}
8569

86-
public static void withMDCForResourceID(ResourceID resourceID, Runnable runnable) {
87-
try {
88-
MDCUtils.addResourceIDInfo(resourceID);
89-
runnable.run();
90-
} finally {
91-
MDCUtils.removeResourceIDInfo();
92-
}
93-
}
94-
95-
public static void withMDCForPrimary(HasMetadata primary, Runnable runnable) {
96-
try {
97-
MDCUtils.addResourceInfo(primary);
98-
runnable.run();
99-
} finally {
100-
MDCUtils.removeResourceInfo();
101-
}
102-
}
103-
10470
public static void addResourceIDInfo(ResourceID resourceID) {
10571
if (enabled) {
10672
MDC.put(NAME, resourceID.getName());
@@ -116,33 +82,45 @@ public static void removeResourceIDInfo() {
11682
}
11783

11884
public static void addResourceInfo(HasMetadata resource) {
85+
addResourceInfo(resource, false);
86+
}
87+
88+
public static void addResourceInfo(HasMetadata resource, boolean forEventSource) {
11989
if (enabled) {
120-
MDC.put(API_VERSION, resource.getApiVersion());
121-
MDC.put(KIND, resource.getKind());
90+
MDC.put(key(API_VERSION, forEventSource), resource.getApiVersion());
91+
MDC.put(key(KIND, forEventSource), resource.getKind());
12292
final var metadata = resource.getMetadata();
12393
if (metadata != null) {
124-
MDC.put(NAME, metadata.getName());
94+
MDC.put(key(NAME, forEventSource), metadata.getName());
12595
if (metadata.getNamespace() != null) {
126-
MDC.put(NAMESPACE, metadata.getNamespace());
96+
MDC.put(key(NAMESPACE, forEventSource), metadata.getNamespace());
12797
}
128-
MDC.put(RESOURCE_VERSION, metadata.getResourceVersion());
98+
MDC.put(key(RESOURCE_VERSION, forEventSource), metadata.getResourceVersion());
12999
if (metadata.getGeneration() != null) {
130-
MDC.put(GENERATION, metadata.getGeneration().toString());
100+
MDC.put(key(GENERATION, forEventSource), metadata.getGeneration().toString());
131101
}
132-
MDC.put(UID, metadata.getUid());
102+
MDC.put(key(UID, forEventSource), metadata.getUid());
133103
}
134104
}
135105
}
136106

107+
private static String key(String baseKey, boolean forEventSource) {
108+
return forEventSource ? EVENT_SOURCE_PREFIX + baseKey : baseKey;
109+
}
110+
137111
public static void removeResourceInfo() {
112+
removeResourceInfo(false);
113+
}
114+
115+
public static void removeResourceInfo(boolean forEventSource) {
138116
if (enabled) {
139-
MDC.remove(API_VERSION);
140-
MDC.remove(KIND);
141-
MDC.remove(NAME);
142-
MDC.remove(NAMESPACE);
143-
MDC.remove(RESOURCE_VERSION);
144-
MDC.remove(GENERATION);
145-
MDC.remove(UID);
117+
MDC.remove(key(API_VERSION, forEventSource));
118+
MDC.remove(key(KIND, forEventSource));
119+
MDC.remove(key(NAME, forEventSource));
120+
MDC.remove(key(NAMESPACE, forEventSource));
121+
MDC.remove(key(RESOURCE_VERSION, forEventSource));
122+
MDC.remove(key(GENERATION, forEventSource));
123+
MDC.remove(key(UID, forEventSource));
146124
}
147125
}
148126
}

0 commit comments

Comments
 (0)