You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2017/06/01 15:32:35 UTC
[10/28] ignite git commit: IGNITE-5342 - Skip permission check for
TASK_EXECUTE for service jobs
IGNITE-5342 - Skip permission check for TASK_EXECUTE for service jobs
(cherry picked from commit d77a134)
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/858d11b3
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/858d11b3
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/858d11b3
Branch: refs/heads/ignite-5075-pds
Commit: 858d11b33e14c799d90134cf936384532c2d0f7a
Parents: a7e5660
Author: dkarachentsev <dk...@gridgain.com>
Authored: Tue May 30 19:00:47 2017 +0300
Committer: dkarachentsev <dk...@gridgain.com>
Committed: Wed May 31 16:10:45 2017 +0300
----------------------------------------------------------------------
.../processors/affinity/GridAffinityProcessor.java | 2 +-
.../internal/processors/cache/GridCacheAdapter.java | 3 ++-
.../cache/datastructures/CacheDataStructuresManager.java | 4 ++--
.../processors/closure/GridClosureProcessor.java | 11 ++++++++---
.../processors/service/GridServiceProcessor.java | 4 ++--
.../internal/processors/service/GridServiceProxy.java | 4 ++--
.../internal/processors/task/GridTaskProcessor.java | 7 ++++---
.../processors/task/GridTaskThreadContextKey.java | 5 ++++-
.../internal/IgniteComputeTopologyExceptionTest.java | 2 +-
9 files changed, 26 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/858d11b3/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
index e57cf54..87c424a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/GridAffinityProcessor.java
@@ -499,7 +499,7 @@ public class GridAffinityProcessor extends GridProcessorAdapter {
private AffinityInfo affinityInfoFromNode(String cacheName, AffinityTopologyVersion topVer, ClusterNode n)
throws IgniteCheckedException {
GridTuple3<GridAffinityMessage, GridAffinityMessage, GridAffinityAssignment> t = ctx.closure()
- .callAsyncNoFailover(BROADCAST, affinityJob(cacheName, topVer), F.asList(n), true/*system pool*/, 0).get();
+ .callAsyncNoFailover(BROADCAST, affinityJob(cacheName, topVer), F.asList(n), true/*system pool*/, 0, false).get();
AffinityFunction f = (AffinityFunction)unmarshall(ctx, n.id(), t.get1());
AffinityKeyMapper m = (AffinityKeyMapper)unmarshall(ctx, n.id(), t.get2());
http://git-wip-us.apache.org/repos/asf/ignite/blob/858d11b3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
index 307c5cf..ff25dd9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
@@ -3541,7 +3541,8 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
new LoadKeysCallable<>(ctx.name(), keys, update, plc, keepBinary),
nodes,
true,
- 0);
+ 0,
+ false);
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/858d11b3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/datastructures/CacheDataStructuresManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/datastructures/CacheDataStructuresManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/datastructures/CacheDataStructuresManager.java
index 45f0cee..0b81e7a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/datastructures/CacheDataStructuresManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/datastructures/CacheDataStructuresManager.java
@@ -526,7 +526,7 @@ public class CacheDataStructuresManager extends GridCacheManagerAdapter {
new BlockSetCallable(cctx.name(), id),
nodes,
true,
- 0).get();
+ 0, false).get();
}
catch (IgniteCheckedException e) {
if (e.hasCause(ClusterTopologyCheckedException.class)) {
@@ -550,7 +550,7 @@ public class CacheDataStructuresManager extends GridCacheManagerAdapter {
new RemoveSetDataCallable(cctx.name(), id, topVer),
nodes,
true,
- 0).get();
+ 0, false).get();
}
catch (IgniteCheckedException e) {
if (e.hasCause(ClusterTopologyCheckedException.class)) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/858d11b3/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java
index 1051807..40e21a0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/closure/GridClosureProcessor.java
@@ -75,6 +75,7 @@ import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.compute.ComputeJobResultPolicy.FAILOVER;
import static org.apache.ignite.compute.ComputeJobResultPolicy.REDUCE;
import static org.apache.ignite.internal.processors.task.GridTaskThreadContextKey.TC_NO_FAILOVER;
+import static org.apache.ignite.internal.processors.task.GridTaskThreadContextKey.TC_SKIP_AUTH;
import static org.apache.ignite.internal.processors.task.GridTaskThreadContextKey.TC_SUBGRID;
import static org.apache.ignite.internal.processors.task.GridTaskThreadContextKey.TC_TIMEOUT;
@@ -558,12 +559,13 @@ public class GridClosureProcessor extends GridProcessorAdapter {
}
/**
+ * @param <R> Type.
* @param mode Distribution mode.
* @param job Closure to execute.
* @param nodes Grid nodes.
* @param sys If {@code true}, then system pool will be used.
* @param timeout Timeout.
- * @param <R> Type.
+ * @param skipAuth Skip authorization check.
* @return Grid future for collection of closure results.
*/
public <R> IgniteInternalFuture<R> callAsyncNoFailover(
@@ -571,8 +573,8 @@ public class GridClosureProcessor extends GridProcessorAdapter {
@Nullable Callable<R> job,
@Nullable Collection<ClusterNode> nodes,
boolean sys,
- long timeout
- ) {
+ long timeout,
+ boolean skipAuth) {
assert mode != null;
assert timeout >= 0 : timeout;
@@ -588,6 +590,9 @@ public class GridClosureProcessor extends GridProcessorAdapter {
ctx.task().setThreadContext(TC_NO_FAILOVER, true);
ctx.task().setThreadContext(TC_SUBGRID, nodes);
+ if (skipAuth)
+ ctx.task().setThreadContext(TC_SKIP_AUTH, true);
+
if (timeout > 0)
ctx.task().setThreadContext(TC_TIMEOUT, timeout);
http://git-wip-us.apache.org/repos/asf/ignite/blob/858d11b3/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
index dda4328..c2fee02 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java
@@ -708,8 +708,8 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite
call,
Collections.singletonList(node),
false,
- timeout
- ).get();
+ timeout,
+ true).get();
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/858d11b3/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java
index d2e96ba..d16a4c4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProxy.java
@@ -192,8 +192,8 @@ public class GridServiceProxy<T> implements Serializable {
new ServiceProxyCallable(mtd.getName(), name, mtd.getParameterTypes(), args),
Collections.singleton(node),
false,
- waitTimeout
- ).get();
+ waitTimeout,
+ true).get();
}
}
catch (GridServiceNotFoundException | ClusterTopologyCheckedException e) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/858d11b3/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 22d5716..e73d292 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
@@ -59,7 +59,6 @@ import org.apache.ignite.internal.managers.communication.GridMessageListener;
import org.apache.ignite.internal.managers.deployment.GridDeployment;
import org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener;
import org.apache.ignite.internal.processors.GridProcessorAdapter;
-import org.apache.ignite.internal.processors.cache.CachePeekModes;
import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
import org.apache.ignite.internal.util.GridConcurrentFactory;
import org.apache.ignite.internal.util.GridSpinReadWriteLock;
@@ -82,6 +81,7 @@ import static org.apache.ignite.internal.GridTopic.TOPIC_JOB_SIBLINGS;
import static org.apache.ignite.internal.GridTopic.TOPIC_TASK;
import static org.apache.ignite.internal.GridTopic.TOPIC_TASK_CANCEL;
import static org.apache.ignite.internal.managers.communication.GridIoPolicy.SYSTEM_POOL;
+import static org.apache.ignite.internal.processors.task.GridTaskThreadContextKey.TC_SKIP_AUTH;
import static org.apache.ignite.internal.processors.task.GridTaskThreadContextKey.TC_SUBGRID;
import static org.apache.ignite.internal.processors.task.GridTaskThreadContextKey.TC_SUBJ_ID;
import static org.apache.ignite.internal.processors.task.GridTaskThreadContextKey.TC_TASK_NAME;
@@ -533,8 +533,6 @@ public class GridTaskProcessor extends GridProcessorAdapter {
else
taskClsName = taskCls != null ? taskCls.getName() : taskName;
- ctx.security().authorize(taskClsName, SecurityPermission.TASK_EXECUTE, null);
-
// Get values from thread-local context.
Map<GridTaskThreadContextKey, Object> map = thCtx.get();
@@ -544,6 +542,9 @@ public class GridTaskProcessor extends GridProcessorAdapter {
// Reset thread-local context.
thCtx.set(null);
+ if (map.get(TC_SKIP_AUTH) == null)
+ ctx.security().authorize(taskClsName, SecurityPermission.TASK_EXECUTE, null);
+
Long timeout = (Long)map.get(TC_TIMEOUT);
long timeout0 = timeout == null || timeout == 0 ? Long.MAX_VALUE : timeout;
http://git-wip-us.apache.org/repos/asf/ignite/blob/858d11b3/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskThreadContextKey.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskThreadContextKey.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskThreadContextKey.java
index 2ec63df..f0e56c7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskThreadContextKey.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskThreadContextKey.java
@@ -37,5 +37,8 @@ public enum GridTaskThreadContextKey {
TC_SUBJ_ID,
/** IO manager policy. */
- TC_IO_POLICY
+ TC_IO_POLICY,
+
+ /** Skip authorization for the task. */
+ TC_SKIP_AUTH
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/858d11b3/modules/core/src/test/java/org/apache/ignite/internal/IgniteComputeTopologyExceptionTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/IgniteComputeTopologyExceptionTest.java b/modules/core/src/test/java/org/apache/ignite/internal/IgniteComputeTopologyExceptionTest.java
index 3ed91e8..a82373b 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/IgniteComputeTopologyExceptionTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/IgniteComputeTopologyExceptionTest.java
@@ -89,7 +89,7 @@ public class IgniteComputeTopologyExceptionTest extends GridCommonAbstractTest {
},
nodes,
false,
- 0);
+ 0, false);
try {
fut.get();