Skip to content

Commit 67e3b1b

Browse files
committed
fix: filter abortion should fail the predicates
1 parent 2ebac6d commit 67e3b1b

File tree

1 file changed

+25
-32
lines changed

1 file changed

+25
-32
lines changed

spring/src/main/java/io/kubernetes/client/spring/extended/controller/factory/KubernetesControllerFactory.java

Lines changed: 25 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -213,9 +213,22 @@ private List<ReadyFuncAdaptor> getReadyFuncs(Reconciler reconciler) {
213213
return readyFuncs;
214214
}
215215

216+
private static boolean invokePredicate(
217+
String name, Object target, Method method, Object... args) {
218+
try {
219+
return (boolean) method.invoke(target, args);
220+
} catch (IllegalAccessException e) {
221+
log.error("ignoring invalid {} method signature {} ", name, method, e);
222+
return true;
223+
} catch (InvocationTargetException e) {
224+
log.error("{} {} failed", name, method, e);
225+
return false;
226+
}
227+
}
228+
216229
private static class AddFilterAdaptor implements Predicate {
217-
private Method method;
218-
private Object target;
230+
private final Method method;
231+
private final Object target;
219232

220233
private AddFilterAdaptor(Object target, Method method) {
221234
this.method = method;
@@ -224,18 +237,13 @@ private AddFilterAdaptor(Object target, Method method) {
224237

225238
@Override
226239
public boolean test(Object addedObj) {
227-
try {
228-
return (boolean) method.invoke(target, addedObj);
229-
} catch (IllegalAccessException | InvocationTargetException e) {
230-
log.error("invalid EventAddFilter method signature", e);
231-
return true;
232-
}
240+
return invokePredicate("ADD-EventFilter", target, method, addedObj);
233241
}
234242
}
235243

236244
private static class UpdateFilterAdaptor implements BiPredicate {
237-
private Method method;
238-
private Object target;
245+
private final Method method;
246+
private final Object target;
239247

240248
private UpdateFilterAdaptor(Object target, Method method) {
241249
this.method = method;
@@ -244,18 +252,13 @@ private UpdateFilterAdaptor(Object target, Method method) {
244252

245253
@Override
246254
public boolean test(Object oldObj, Object newObj) {
247-
try {
248-
return (boolean) method.invoke(target, oldObj, newObj);
249-
} catch (IllegalAccessException | InvocationTargetException e) {
250-
log.error("invalid EventUpdateFilter method signature", e);
251-
return true;
252-
}
255+
return invokePredicate("UPDATE-EventFilter", target, method, oldObj, newObj);
253256
}
254257
}
255258

256259
private static class DeleteFilterAdaptor implements BiPredicate {
257-
private Method method;
258-
private Object target;
260+
private final Method method;
261+
private final Object target;
259262

260263
private DeleteFilterAdaptor(Object target, Method method) {
261264
this.method = method;
@@ -264,18 +267,13 @@ private DeleteFilterAdaptor(Object target, Method method) {
264267

265268
@Override
266269
public boolean test(Object deleteObj, Object cacheStatusUnknown) {
267-
try {
268-
return (boolean) method.invoke(target, deleteObj, cacheStatusUnknown);
269-
} catch (IllegalAccessException | InvocationTargetException e) {
270-
log.error("invalid EventDeleteFilter method signature", e);
271-
return true;
272-
}
270+
return invokePredicate("DELETE-EventFilter", target, method, deleteObj, cacheStatusUnknown);
273271
}
274272
}
275273

276274
private static class ReadyFuncAdaptor implements Supplier<Boolean> {
277-
private Method method;
278-
private Object target;
275+
private final Method method;
276+
private final Object target;
279277

280278
private ReadyFuncAdaptor(Object target, Method method) {
281279
this.method = method;
@@ -284,12 +282,7 @@ private ReadyFuncAdaptor(Object target, Method method) {
284282

285283
@Override
286284
public Boolean get() {
287-
try {
288-
return (boolean) method.invoke(target);
289-
} catch (IllegalAccessException | InvocationTargetException e) {
290-
log.error("invalid ReadyFunc method signature", e);
291-
return false;
292-
}
285+
return invokePredicate("READY-Func", target, method);
293286
}
294287
}
295288

0 commit comments

Comments
 (0)