From be01ebbb5fdb43e2a30a4de599c2e6fcfce7689c Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Mon, 20 Feb 2017 21:10:25 +0300 Subject: [PATCH] javac ast indices: do not throw exceptions to javac internals 2 --- .../CompilerBackwardReferenceIndex.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/backwardRefs/CompilerBackwardReferenceIndex.java b/jps/jps-builders/src/org/jetbrains/jps/backwardRefs/CompilerBackwardReferenceIndex.java index 3efa18afb5ce..2e783cc29aed 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/backwardRefs/CompilerBackwardReferenceIndex.java +++ b/jps/jps-builders/src/org/jetbrains/jps/backwardRefs/CompilerBackwardReferenceIndex.java @@ -116,17 +116,20 @@ public class CompilerBackwardReferenceIndex { public void close() { myLowMemoryWatcher.stop(); - final CommonProcessors.FindFirstProcessor exceptionProc = + final CommonProcessors.FindFirstProcessor exceptionProc = new CommonProcessors.FindFirstProcessor<>(); close(myFilePathEnumerator, exceptionProc); close(myNameEnumerator, exceptionProc); for (InvertedIndex index : myIndices.values()) { close(index, exceptionProc); } - final BuildDataCorruptedException exception = exceptionProc.getFoundValue(); + final Exception exception = exceptionProc.getFoundValue(); if (exception != null) { removeIndexFiles(myIndicesDir); - throw exception; + if (myRebuildRequestCause == null) { + throw new RuntimeException(exception); + } + return; } if (myRebuildRequestCause != null) { removeIndexFiles(myIndicesDir); @@ -194,16 +197,16 @@ public class CompilerBackwardReferenceIndex { myRebuildRequestCause = e; } - private static void close(InvertedIndex index, CommonProcessors.FindFirstProcessor exceptionProcessor) { + private static void close(InvertedIndex index, CommonProcessors.FindFirstProcessor exceptionProcessor) { try { index.dispose(); } - catch (BuildDataCorruptedException e) { + catch (RuntimeException e) { exceptionProcessor.process(e); } } - private static void close(Closeable closeable, Processor exceptionProcessor) { + private static void close(Closeable closeable, Processor exceptionProcessor) { //noinspection SynchronizationOnLocalVariableOrMethodParameter synchronized (closeable) { try {