Bug 571382: [RServi] Fix RServiRJComClient.handleServerStatus
Change-Id: I8e3c8495b6ad05a94284d236557b17c18fe91b28
diff --git a/servi/org.eclipse.statet.rj.servi/src/org/eclipse/statet/internal/rj/servi/RServiImpl.java b/servi/org.eclipse.statet.rj.servi/src/org/eclipse/statet/internal/rj/servi/RServiImpl.java
index d54b83d..f934b40 100644
--- a/servi/org.eclipse.statet.rj.servi/src/org/eclipse/statet/internal/rj/servi/RServiImpl.java
+++ b/servi/org.eclipse.statet.rj.servi/src/org/eclipse/statet/internal/rj/servi/RServiImpl.java
@@ -31,7 +31,6 @@
import org.eclipse.statet.jcommons.lang.Nullable;
import org.eclipse.statet.jcommons.runtime.CommonsRuntime;
import org.eclipse.statet.jcommons.status.ErrorStatus;
-import org.eclipse.statet.jcommons.status.InfoStatus;
import org.eclipse.statet.jcommons.status.ProgressMonitor;
import org.eclipse.statet.jcommons.status.Status;
import org.eclipse.statet.jcommons.status.StatusException;
@@ -103,10 +102,12 @@
throw new IllegalStateException();
}
- if (!isClosed()) {
- setClosed(true);
- handleStatus(new InfoStatus(RJ_SERVI_ID, "RServi is disconnected."),
- m );
+ synchronized (RServiImpl.this) {
+ if (!isClosed()) {
+ CommonsRuntime.log(new WarningStatus(RJ_SERVI_ID,
+ "RServi is disconnected." ));
+ forceClose();
+ }
}
throw new StatusException(new ErrorStatus(RJ_SERVI_ID, "RServi is closed."));
}