[RJ-Servi] Add catch of all throwables when cleaning up node resourcers

Backport-of: 088b523af51d689ed014a8dc3aed58693f863636
Change-Id: I671fc207335992e29a171571757d950f1b15531e
diff --git a/servi/org.eclipse.statet.rj.servi/src/org/eclipse/statet/internal/rj/servi/LocalNodeFactory.java b/servi/org.eclipse.statet.rj.servi/src/org/eclipse/statet/internal/rj/servi/LocalNodeFactory.java
index 1f6e438..5698e1b 100644
--- a/servi/org.eclipse.statet.rj.servi/src/org/eclipse/statet/internal/rj/servi/LocalNodeFactory.java
+++ b/servi/org.eclipse.statet.rj.servi/src/org/eclipse/statet/internal/rj/servi/LocalNodeFactory.java
@@ -685,21 +685,33 @@
 			}
 		}
 		
-		if (!this.verbose && handler.dir != null
-				&& handler.dir.exists() && handler.dir.isDirectory() ) {
-			for (int i= 0; i < 20; i++) {
-				try {
-					Thread.sleep(200);
-				}
-				catch (final InterruptedException e) {
-				}
-				
-				if (!handler.dir.exists() || ServerUtils.delDir(handler.dir)) {
-					return;
+		if (!this.verbose && handler.dir != null) {
+			cleanupNode(handler);
+		}
+	}
+	
+	private void cleanupNode(final NodeHandler handler) {
+		Throwable deleteException= null;
+		try {
+			if (handler.dir.exists() && handler.dir.isDirectory()) {
+				for (int i= 0; i < 20; i++) {
+					try {
+						Thread.sleep(200);
+					}
+					catch (final InterruptedException e) {
+					}
+					
+					if (!handler.dir.exists() || ServerUtils.delDir(handler.dir)) {
+						return;
+					}
 				}
 			}
-			Utils.logWarning("Failed to delete the RServi node working directory '" + handler.dir.toString() + "'.");
 		}
+		catch (final Throwable e) {
+			deleteException= e;
+		}
+		Utils.logWarning("Failed to delete the RServi node working directory '" + handler.dir.toString() + "'.",
+				deleteException );
 	}
 	
 }
diff --git a/servi/org.eclipse.statet.rj.servi/src/org/eclipse/statet/internal/rj/servi/Utils.java b/servi/org.eclipse.statet.rj.servi/src/org/eclipse/statet/internal/rj/servi/Utils.java
index c2ad446..c1de0ef 100644
--- a/servi/org.eclipse.statet.rj.servi/src/org/eclipse/statet/internal/rj/servi/Utils.java
+++ b/servi/org.eclipse.statet.rj.servi/src/org/eclipse/statet/internal/rj/servi/Utils.java
@@ -176,7 +176,7 @@
 		CommonsRuntime.log(new WarningStatus(RServiUtils.RJ_SERVI_ID, message));
 	}
 	
-	public static void logWarning(final String message, final Throwable e) {
+	public static void logWarning(final String message, final @Nullable Throwable e) {
 		CommonsRuntime.log(new WarningStatus(RServiUtils.RJ_SERVI_ID, message, e));
 	}