You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by pt...@apache.org on 2024/01/26 08:53:28 UTC
(ignite-3) branch main updated: IGNITE-21360 Fix ClientComputeTest (#3100)
This is an automated email from the ASF dual-hosted git repository.
ptupitsyn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 7a1225662c IGNITE-21360 Fix ClientComputeTest (#3100)
7a1225662c is described below
commit 7a1225662ce4cd780d32f4db6204847d6c0044d1
Author: Vadim Pakhnushev <86...@users.noreply.github.com>
AuthorDate: Fri Jan 26 11:53:22 2024 +0300
IGNITE-21360 Fix ClientComputeTest (#3100)
`JobStatus` static field in the `FakeCompute` is accessed concurrently from several executions, we need to mimic what the implementation is doing by storing statuses in the map.
---
.../apache/ignite/client/ClientComputeTest.java | 1 -
.../apache/ignite/client/fakes/FakeCompute.java | 27 +++++++++++-----------
2 files changed, 13 insertions(+), 15 deletions(-)
diff --git a/modules/client/src/test/java/org/apache/ignite/client/ClientComputeTest.java b/modules/client/src/test/java/org/apache/ignite/client/ClientComputeTest.java
index c9ed725386..d93bf92996 100644
--- a/modules/client/src/test/java/org/apache/ignite/client/ClientComputeTest.java
+++ b/modules/client/src/test/java/org/apache/ignite/client/ClientComputeTest.java
@@ -73,7 +73,6 @@ public class ClientComputeTest extends BaseIgniteAbstractTest {
void tearDown() throws Exception {
IgniteUtils.closeAll(server1, server2, server3);
FakeCompute.future = null;
- FakeCompute.status = null;
}
@Test
diff --git a/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeCompute.java b/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeCompute.java
index 3b119ea0aa..c3e69d688c 100644
--- a/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeCompute.java
+++ b/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeCompute.java
@@ -31,6 +31,7 @@ import java.util.Set;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionException;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CountDownLatch;
import java.util.stream.Collectors;
import org.apache.ignite.compute.DeploymentUnit;
@@ -57,7 +58,7 @@ public class FakeCompute implements IgniteComputeInternal {
public static volatile @Nullable RuntimeException err;
- public static volatile @Nullable JobStatus status;
+ private final Map<UUID, JobStatus> statuses = new ConcurrentHashMap<>();
public static volatile CountDownLatch latch = new CountDownLatch(0);
@@ -74,8 +75,6 @@ public class FakeCompute implements IgniteComputeInternal {
String jobClassName,
JobExecutionOptions options,
Object... args) {
- initStatus();
-
if (Objects.equals(jobClassName, GET_UNITS)) {
String unitString = units.stream().map(DeploymentUnit::render).collect(Collectors.joining(","));
return completedExecution((R) unitString);
@@ -119,7 +118,6 @@ public class FakeCompute implements IgniteComputeInternal {
JobExecutionOptions options,
Object... args
) {
- initStatus();
return jobExecution(future != null ? future : completedFuture((R) nodeName));
}
@@ -133,7 +131,6 @@ public class FakeCompute implements IgniteComputeInternal {
JobExecutionOptions options,
Object... args
) {
- initStatus();
return jobExecution(future != null ? future : completedFuture((R) nodeName));
}
@@ -183,23 +180,25 @@ public class FakeCompute implements IgniteComputeInternal {
return null;
}
- private static <R> JobExecution<R> completedExecution(R result) {
+ private <R> JobExecution<R> completedExecution(R result) {
return jobExecution(completedFuture(result));
}
- private static void initStatus() {
- status = JobStatus.builder()
- .id(UUID.randomUUID())
+ private <R> JobExecution<R> jobExecution(CompletableFuture<R> result) {
+ UUID jobId = UUID.randomUUID();
+
+ JobStatus status = JobStatus.builder()
+ .id(jobId)
.state(EXECUTING)
.createTime(Instant.now())
.startTime(Instant.now())
.build();
- }
+ statuses.put(jobId, status);
- private static <R> JobExecution<R> jobExecution(CompletableFuture<R> result) {
result.whenComplete((r, throwable) -> {
JobState state = throwable != null ? FAILED : COMPLETED;
- status = status.toBuilder().state(state).finishTime(Instant.now()).build();
+ JobStatus newStatus = status.toBuilder().state(state).finishTime(Instant.now()).build();
+ statuses.put(jobId, newStatus);
});
return new JobExecution<>() {
@Override
@@ -209,7 +208,7 @@ public class FakeCompute implements IgniteComputeInternal {
@Override
public CompletableFuture<@Nullable JobStatus> statusAsync() {
- return completedFuture(status);
+ return completedFuture(statuses.get(jobId));
}
@Override
@@ -226,7 +225,7 @@ public class FakeCompute implements IgniteComputeInternal {
@Override
public CompletableFuture<@Nullable JobStatus> statusAsync(UUID jobId) {
- return completedFuture(status);
+ return completedFuture(statuses.get(jobId));
}
@Override