IGNITE-14219 Wait for Grid process instead of Kill process (#8816)
diff --git a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/clients/AbstractClientCompatibilityTest.java b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/clients/AbstractClientCompatibilityTest.java
index f1ed37b..07ba238 100644
--- a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/clients/AbstractClientCompatibilityTest.java
+++ b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/clients/AbstractClientCompatibilityTest.java
@@ -34,7 +34,6 @@
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
import org.apache.ignite.testframework.GridTestUtils;
-import org.apache.ignite.testframework.junits.multijvm.IgniteProcessProxy;
import org.jetbrains.annotations.NotNull;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -149,31 +148,19 @@
*/
@Test
public void testCurrentClientToOldServer() throws Exception {
- IgniteProcessProxy proxy = null;
-
try {
if (verFormatted.equals(IgniteVersionUtils.VER_STR)) {
Ignite ignite = startGrid(0);
initNode(ignite);
}
- else {
- Ignite ignite = startGrid(1, verFormatted, this::processRemoteConfiguration, this::initNode);
-
- proxy = IgniteProcessProxy.ignite(ignite.name());
- }
+ else
+ startGrid(1, verFormatted, this::processRemoteConfiguration, this::initNode);
testClient(verFormatted);
}
finally {
stopAllGrids();
-
- if (proxy != null) {
- Process proc = proxy.getProcess().getProcess();
-
- // We should wait until process exits, or it can affect next tests.
- assertTrue(GridTestUtils.waitForCondition(() -> !proc.isAlive(), 5_000L));
- }
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridJavaProcess.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridJavaProcess.java
index d1971ea..a770b51 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridJavaProcess.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/GridJavaProcess.java
@@ -27,6 +27,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.concurrent.TimeUnit;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.internal.util.lang.GridAbsClosure;
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -189,12 +190,16 @@
Runtime.getRuntime().exec(new String[] {"taskkill", "/pid", pid, "/f", "/t"}) :
Runtime.getRuntime().exec(new String[] {"kill", "-9", pid});
- killProc.waitFor();
+ if (!killProc.waitFor(5000, TimeUnit.MILLISECONDS))
+ throw new IllegalStateException("The kill process is hanging.");
int exitVal = killProc.exitValue();
if (exitVal != 0 && log.isInfoEnabled())
- log.info(String.format("Abnormal exit value of %s for pid %s", exitVal, pid));
+ log.info(String.format("Abnormal exit value of %s for trying to kill the pid %s", exitVal, pid));
+
+ if (!proc.waitFor(5000, TimeUnit.MILLISECONDS))
+ throw new IllegalStateException("Failed to kill grid java process.");
if (procKilledC != null)
procKilledC.apply();