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")