You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2016/09/14 11:10:49 UTC

[33/50] ignite git commit: IGNITE-3853 IGFS: Support direct PROXY mode invocation in method: update. This closes #1041.

IGNITE-3853 IGFS: Support direct PROXY mode invocation in method: update. This closes #1041.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9389328a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9389328a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9389328a

Branch: refs/heads/ignite-3661
Commit: 9389328afdad8478b16f124f16cb45dde6c33aaf
Parents: 216477e
Author: tledkov-gridgain <tl...@gridgain.com>
Authored: Wed Sep 7 17:35:45 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Wed Sep 7 17:35:45 2016 +0300

----------------------------------------------------------------------
 .../internal/processors/igfs/IgfsImpl.java      | 52 +++++++++++++-------
 1 file changed, 33 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/9389328a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
index 439e9ba..27618be 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsImpl.java
@@ -628,36 +628,50 @@ public final class IgfsImpl implements IgfsEx {
 
                 IgfsMode mode = resolveMode(path);
 
-                if (mode != PRIMARY) {
-                    assert IgfsUtils.isDualMode(mode);
+                switch (mode) {
+                    case PRIMARY:
+                    {
+                        List<IgniteUuid> fileIds = meta.idsForPath(path);
 
-                    await(path);
+                        IgniteUuid fileId = fileIds.get(fileIds.size() - 1);
 
-                    IgfsEntryInfo info = meta.updateDual(secondaryFs, path, props);
+                        if (fileId != null) {
+                            IgfsEntryInfo info = meta.updateProperties(fileId, props);
 
-                    if (info == null)
-                        return null;
+                            if (info != null) {
+                                if (evts.isRecordable(EVT_IGFS_META_UPDATED))
+                                    evts.record(new IgfsEvent(path, localNode(), EVT_IGFS_META_UPDATED, props));
 
-                    return new IgfsFileImpl(path, info, data.groupBlockSize());
-                }
+                                return new IgfsFileImpl(path, info, data.groupBlockSize());
+                            }
+                        }
 
-                List<IgniteUuid> fileIds = meta.idsForPath(path);
+                        break;
+                    }
 
-                IgniteUuid fileId = fileIds.get(fileIds.size() - 1);
+                    case DUAL_ASYNC:
+                    case DUAL_SYNC:
+                    {
+                        await(path);
 
-                if (fileId == null)
-                    return null;
+                        IgfsEntryInfo info = meta.updateDual(secondaryFs, path, props);
 
-                IgfsEntryInfo info = meta.updateProperties(fileId, props);
+                        if (info != null)
+                            return new IgfsFileImpl(path, info, data.groupBlockSize());
 
-                if (info != null) {
-                    if (evts.isRecordable(EVT_IGFS_META_UPDATED))
-                        evts.record(new IgfsEvent(path, localNode(), EVT_IGFS_META_UPDATED, props));
+                        break;
+                    }
+
+                    default:
+                        assert mode == PROXY : "Unknown mode: " + mode;
 
-                    return new IgfsFileImpl(path, info, data.groupBlockSize());
+                        IgfsFile file = secondaryFs.update(path, props);
+
+                        if (file != null)
+                            return new IgfsFileImpl(secondaryFs.update(path, props), data.groupBlockSize());
                 }
-                else
-                    return null;
+
+                return null;
             }
         });
     }