IGNITE-1487: Exceptions on normal execution path avoided.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/541ba403 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/541ba403 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/541ba403 Branch: refs/heads/ignite-1607 Commit: 541ba4037dbde7f93ec7951e57fca46ad1a9ec50 Parents: 52a733f Author: iveselovskiy <[email protected]> Authored: Thu Oct 15 13:25:11 2015 +0300 Committer: vozerov-gridgain <[email protected]> Committed: Thu Oct 15 13:25:11 2015 +0300 ---------------------------------------------------------------------- .../hadoop/igfs/HadoopIgfsWrapper.java | 54 +++++++++++--------- 1 file changed, 29 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/541ba403/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsWrapper.java ---------------------------------------------------------------------- diff --git a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsWrapper.java b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsWrapper.java index 857db71..69df381 100644 --- a/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsWrapper.java +++ b/modules/hadoop/src/main/java/org/apache/ignite/internal/processors/hadoop/igfs/HadoopIgfsWrapper.java @@ -26,6 +26,10 @@ import org.apache.commons.logging.Log; import org.apache.hadoop.conf.Configuration; import org.apache.ignite.Ignite; import org.apache.ignite.IgniteCheckedException; +import org.apache.ignite.IgniteFileSystem; +import org.apache.ignite.IgniteIllegalStateException; +import org.apache.ignite.IgniteState; +import org.apache.ignite.Ignition; import org.apache.ignite.igfs.IgfsBlockLocation; import org.apache.ignite.igfs.IgfsFile; import org.apache.ignite.igfs.IgfsPath; @@ -34,11 +38,11 @@ import org.apache.ignite.internal.processors.igfs.IgfsEx; import org.apache.ignite.internal.processors.igfs.IgfsHandshakeResponse; import org.apache.ignite.internal.processors.igfs.IgfsStatus; import org.apache.ignite.internal.util.typedef.F; -import org.apache.ignite.internal.util.typedef.G; import org.apache.ignite.internal.util.typedef.internal.SB; import org.apache.ignite.internal.util.typedef.internal.U; import org.jetbrains.annotations.Nullable; +import static org.apache.ignite.IgniteState.STARTED; import static org.apache.ignite.internal.processors.hadoop.igfs.HadoopIgfsEndpoint.LOCALHOST; import static org.apache.ignite.internal.processors.hadoop.igfs.HadoopIgfsUtils.PARAM_IGFS_ENDPOINT_NO_EMBED; import static org.apache.ignite.internal.processors.hadoop.igfs.HadoopIgfsUtils.PARAM_IGFS_ENDPOINT_NO_LOCAL_SHMEM; @@ -354,30 +358,7 @@ public class HadoopIgfsWrapper implements HadoopIgfs { boolean skipInProc = parameter(conf, PARAM_IGFS_ENDPOINT_NO_EMBED, authority, false); if (!skipInProc) { - IgfsEx igfs = null; - - if (endpoint.grid() == null) { - try { - Ignite ignite = G.ignite(); - - igfs = (IgfsEx)ignite.fileSystem(endpoint.igfs()); - } - catch (Exception ignore) { - // No-op. - } - } - else { - for (Ignite ignite : G.allGrids()) { - try { - igfs = (IgfsEx)ignite.fileSystem(endpoint.igfs()); - - break; - } - catch (Exception ignore) { - // No-op. - } - } - } + IgfsEx igfs = getIgfsEx(endpoint.grid(), endpoint.igfs()); if (igfs != null) { HadoopIgfsEx hadoop = null; @@ -540,4 +521,27 @@ public class HadoopIgfsWrapper implements HadoopIgfs { hadoop.close(force); } } + + /** + * Helper method to find Igfs of the given name in the given Ignite instance. + * + * @param gridName The name of the grid to check. + * @param igfsName The name of Igfs. + * @return The file system instance, or null if not found. + */ + private static IgfsEx getIgfsEx(@Nullable String gridName, @Nullable String igfsName) { + if (Ignition.state(gridName) == STARTED) { + try { + for (IgniteFileSystem fs : Ignition.ignite(gridName).fileSystems()) { + if (F.eq(fs.name(), igfsName)) + return (IgfsEx)fs; + } + } + catch (IgniteIllegalStateException ignore) { + // May happen if the grid state has changed: + } + } + + return null; + } } \ No newline at end of file
