Repository: ignite Updated Branches: refs/heads/master ee8ac73f2 -> 82504a0e5
IGNITE-3331 IGFS: Route client tasks to primary node when metadata co-location is enabled. This closes #921. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/a596e67a Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/a596e67a Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/a596e67a Branch: refs/heads/master Commit: a596e67a1cf329ef07ebeef250166829a05ce901 Parents: 8c4a1c7 Author: tledkov-gridgain <[email protected]> Authored: Thu Aug 4 17:04:41 2016 +0300 Committer: vozerov-gridgain <[email protected]> Committed: Thu Aug 4 17:04:41 2016 +0300 ---------------------------------------------------------------------- .../processors/igfs/IgfsMetaManager.java | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/a596e67a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java index 0d14a3a..d1151c5 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java @@ -248,7 +248,25 @@ public class IgfsMetaManager extends IgfsManager { */ <T> T runClientTask(IgfsClientAbstractCallable<T> task) { try { - return clientCompute().call(task); + return runClientTask(IgfsUtils.ROOT_ID, task); + } + catch (ClusterTopologyException e) { + throw new IgfsException("Failed to execute operation because there are no IGFS metadata nodes." , e); + } + } + + /** + * Run client task. + * + * @param affinityFileId Affinity fileId. + * @param task Task. + * @return Result. + */ + <T> T runClientTask(IgniteUuid affinityFileId, IgfsClientAbstractCallable<T> task) { + try { + return (cfg.isColocateMetadata()) ? + clientCompute().affinityCall(cfg.getMetaCacheName(), affinityFileId, task) : + clientCompute().call(task); } catch (ClusterTopologyException e) { throw new IgfsException("Failed to execute operation because there are no IGFS metadata nodes." , e);
