You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2018/10/24 09:05:20 UTC
ignite git commit: IGNITE-9914 Use correct subject ID for TaskEvents
for remote clients - Fixes #5030.
Repository: ignite
Updated Branches:
refs/heads/master a9b65d6e4 -> 5e989bddb
IGNITE-9914 Use correct subject ID for TaskEvents for remote clients - Fixes #5030.
Signed-off-by: Alexey Goncharuk <al...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/5e989bdd
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/5e989bdd
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/5e989bdd
Branch: refs/heads/master
Commit: 5e989bddbef04f4d70d7ab361634f7000fe21ec0
Parents: a9b65d6
Author: Andrei Aleksandrov <ae...@gmail.com>
Authored: Wed Oct 24 12:01:00 2018 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Wed Oct 24 12:04:00 2018 +0300
----------------------------------------------------------------------
.../internal/TaskEventSubjectIdSelfTest.java | 9 +++--
.../processors/task/GridTaskProcessor.java | 5 ++-
.../internal/GridJobSubjectIdSelfTest.java | 40 ++++++++++++++++++++
3 files changed, 50 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/5e989bdd/modules/clients/src/test/java/org/apache/ignite/internal/TaskEventSubjectIdSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/clients/src/test/java/org/apache/ignite/internal/TaskEventSubjectIdSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/internal/TaskEventSubjectIdSelfTest.java
index 46aaa6b..ee6e9f1 100644
--- a/modules/clients/src/test/java/org/apache/ignite/internal/TaskEventSubjectIdSelfTest.java
+++ b/modules/clients/src/test/java/org/apache/ignite/internal/TaskEventSubjectIdSelfTest.java
@@ -308,6 +308,9 @@ public class TaskEventSubjectIdSelfTest extends GridCommonAbstractTest {
}
/**
+ * Events for class tasks that was started from external clients should contain
+ * client subject id instead of the node where it was started. This test checks it.
+ *
* @throws Exception If failed.
*/
public void testClient() throws Exception {
@@ -328,7 +331,7 @@ public class TaskEventSubjectIdSelfTest extends GridCommonAbstractTest {
assert evt != null;
assertEquals(EVT_TASK_STARTED, evt.type());
- assertEquals(nodeId, evt.subjectId());
+ assertEquals(client.id(), evt.subjectId());
assert it.hasNext();
@@ -337,7 +340,7 @@ public class TaskEventSubjectIdSelfTest extends GridCommonAbstractTest {
assert evt != null;
assertEquals(EVT_TASK_REDUCED, evt.type());
- assertEquals(nodeId, evt.subjectId());
+ assertEquals(client.id(), evt.subjectId());
assert it.hasNext();
@@ -346,7 +349,7 @@ public class TaskEventSubjectIdSelfTest extends GridCommonAbstractTest {
assert evt != null;
assertEquals(EVT_TASK_FINISHED, evt.type());
- assertEquals(nodeId, evt.subjectId());
+ assertEquals(client.id(), evt.subjectId());
assert !it.hasNext();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/5e989bdd/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java
index 313f6c3..fb6be71 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java
@@ -702,7 +702,10 @@ public class GridTaskProcessor extends GridProcessorAdapter implements IgniteCha
top = nodes != null ? F.nodeIds(nodes) : null;
}
- UUID subjId = getThreadContext(TC_SUBJ_ID);
+ UUID subjId = (UUID)map.get(TC_SUBJ_ID);
+
+ if (subjId == null)
+ subjId = getThreadContext(TC_SUBJ_ID);
if (subjId == null)
subjId = ctx.localNodeId();
http://git-wip-us.apache.org/repos/asf/ignite/blob/5e989bdd/modules/core/src/test/java/org/apache/ignite/internal/GridJobSubjectIdSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/GridJobSubjectIdSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/GridJobSubjectIdSelfTest.java
index 0772067..95a7926 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/GridJobSubjectIdSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/GridJobSubjectIdSelfTest.java
@@ -37,6 +37,8 @@ import org.apache.ignite.resources.TaskSessionResource;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.jetbrains.annotations.Nullable;
+import static org.apache.ignite.internal.processors.task.GridTaskThreadContextKey.TC_SUBJ_ID;
+
/**
* Test job subject ID propagation.
*/
@@ -59,6 +61,7 @@ public class GridJobSubjectIdSelfTest extends GridCommonAbstractTest {
/** {@inheritDoc} */
@Override protected void beforeTest() throws Exception {
node1 = startGrid(1);
+
node2 = startGrid(2);
}
@@ -67,7 +70,14 @@ public class GridJobSubjectIdSelfTest extends GridCommonAbstractTest {
stopAllGrids();
node1 = null;
+
node2 = null;
+
+ evtSubjId = null;
+
+ taskSubjId = null;
+
+ jobSubjId = null;
}
/**
@@ -91,10 +101,40 @@ public class GridJobSubjectIdSelfTest extends GridCommonAbstractTest {
node1.compute().execute(new Task(node2.cluster().localNode().id()), null);
assertEquals(taskSubjId, jobSubjId);
+
assertEquals(taskSubjId, evtSubjId);
}
/**
+ * Test job subject ID propagation in case if was changed.
+ *
+ * @throws Exception If failed.
+ */
+ public void testModifiedSubjectId() throws Exception {
+ node1.events().localListen(new IgnitePredicate<Event>() {
+ @Override public boolean apply(Event evt) {
+ JobEvent evt0 = (JobEvent)evt;
+
+ assert evtSubjId == null;
+
+ evtSubjId = evt0.taskSubjectId();
+
+ return false;
+ }
+ }, EventType.EVT_JOB_STARTED);
+
+ UUID uuid = new UUID(100, 100);
+
+ ((IgniteEx) node1).context().task().setThreadContextIfNotNull(TC_SUBJ_ID, uuid);
+
+ ((IgniteEx) node1).context().task().execute(new Task(node1.cluster().localNode().id()), null).get();
+
+ assertEquals(uuid, jobSubjId);
+
+ assertEquals(uuid, evtSubjId);
+ }
+
+ /**
* Task class.
*/
@SuppressWarnings("PublicInnerClass")