From f18c44eb7b7d290c3e70f2568493d237749fe151 Mon Sep 17 00:00:00 2001 From: James Nord Date: Thu, 9 Jun 2016 11:58:55 +0100 Subject: [PATCH] Ensure a message is logged if we can not create an override (#80) * Ensure a message is logged if we can not create an override If the first access of the ClassFilter is from a class being auto wired then the root cause of the Issue can get swallowed and it is not clear in the logs what is wrong. So if something goes wrong always log the error at the expense that it gets logged twice (which is not a bad thing as it is fatal anyway and will cause Jenkins to pretty much not work at all) * Move the loading of the pattern override into the try block --- .../java/hudson/remoting/ClassFilter.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/hudson/remoting/ClassFilter.java b/src/main/java/hudson/remoting/ClassFilter.java index f28233c64..6536842df 100644 --- a/src/main/java/hudson/remoting/ClassFilter.java +++ b/src/main/java/hudson/remoting/ClassFilter.java @@ -81,13 +81,20 @@ public final Class check(Class c) { * values provide for user specified overrides - see {@link #FILE_OVERRIDE_LOCATION_PROPERTY}. */ /*package*/ static ClassFilter createDefaultInstance() { - List patternOverride = loadPatternOverride(); - if (patternOverride != null) { - LOGGER.log(Level.FINE, "Using user specified overrides for class blacklisting"); - return new RegExpClassFilter(patternOverride); - } else { - LOGGER.log(Level.FINE, "Using default in built class blacklisting"); - return new RegExpClassFilter(DEFAULT_PATTERNS); + try { + List patternOverride = loadPatternOverride(); + if (patternOverride != null) { + LOGGER.log(Level.FINE, "Using user specified overrides for class blacklisting"); + return new RegExpClassFilter(patternOverride); + } else { + LOGGER.log(Level.FINE, "Using default in built class blacklisting"); + return new RegExpClassFilter(DEFAULT_PATTERNS); + } + } + catch (Error e) { + // when being used by something like XStream the actual cause gets swallowed + LOGGER.log(Level.SEVERE, "Failed to initialize the default class filter", e); + throw e; } }