From ea1f69d5e3811c6a8d3aaf9dd8ed9f0a40c67d83 Mon Sep 17 00:00:00 2001 From: Eryk Szymanski Date: Thu, 19 Jun 2014 14:36:14 +0200 Subject: [PATCH] Fix consultRules so that it does not bail out on RuntimeException This problem was causing internal server error in Gerrit GUI on browsing open changes in case one or more projects had broken rules.pl in meta config. Change-Id: Ib1395a5d48abd0150a9b2e0c3680cb39ae186f1a Signed-off-by: Eryk Szymanski --- .../java/com/google/gerrit/rules/RulesCache.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/rules/RulesCache.java b/gerrit-server/src/main/java/com/google/gerrit/rules/RulesCache.java index 4a3cd9a7ad..f263bed1db 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/rules/RulesCache.java +++ b/gerrit-server/src/main/java/com/google/gerrit/rules/RulesCache.java @@ -196,14 +196,17 @@ public class RulesCache { return pmc; } - private PrologMachineCopy consultRules(String name, Reader rules) { + private PrologMachineCopy consultRules(String name, Reader rules) + throws CompileException { BufferingPrologControl ctl = newEmptyMachine(systemLoader); PushbackReader in = new PushbackReader(rules, Prolog.PUSHBACK_SIZE); - if (!ctl.execute( - Prolog.BUILTIN, "consult_stream", - SymbolTerm.intern(name), - new JavaObjectTerm(in))) { - return null; + try { + if (!ctl.execute(Prolog.BUILTIN, "consult_stream", + SymbolTerm.intern(name), new JavaObjectTerm(in))) { + return null; + } + } catch (RuntimeException e) { + throw new CompileException("Error while consulting rules from " + name, e); } return save(ctl); }