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/06/14 07:17:04 UTC

[4/4] ignite git commit: IGNITE-3294: More reliable stream close.

IGNITE-3294: More reliable stream close.


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

Branch: refs/heads/ignite-3294
Commit: 87237ceef82e62d471bb90fd9553e36f19b74909
Parents: fbc5d96
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Jun 14 09:43:59 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Jun 14 09:43:59 2016 +0300

----------------------------------------------------------------------
 .../processors/igfs/IgfsMetaManager.java        | 30 ++++++++++++--------
 .../processors/igfs/IgfsPathsCreateResult.java  | 16 +----------
 2 files changed, 19 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/87237cee/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 a7f8336..c08d6a0 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
@@ -1729,7 +1729,7 @@ public class IgfsMetaManager extends IgfsManager {
     /**
      * Transfer entry from one directory to another.
      *
-     * @param entry Entry to be transfered.
+     * @param entry Entry to be transferred.
      * @param srcId Source ID.
      * @param srcName Source name.
      * @param destId Destination ID.
@@ -2806,6 +2806,8 @@ public class IgfsMetaManager extends IgfsManager {
 
         while (true) {
             if (busyLock.enterBusy()) {
+                OutputStream secondaryOut = null;
+
                 try {
                     // Prepare path IDs.
                     IgfsPathIds pathIds = pathIds(path);
@@ -2878,8 +2880,6 @@ public class IgfsMetaManager extends IgfsManager {
                             long newLen;
                             int newBlockSize;
 
-                            OutputStream secondaryOut = null;
-
                             if (secondaryCtx != null) {
                                 secondaryOut = secondaryCtx.create();
 
@@ -2919,6 +2919,9 @@ public class IgfsMetaManager extends IgfsManager {
                         }
                         else {
                             // Create file and parent folders.
+                            if (secondaryCtx != null)
+                                secondaryOut = secondaryCtx.create();
+
                             IgfsPathsCreateResult res = createFile(pathIds, lockInfos, dirProps, fileProps, blockSize,
                                 affKey, evictExclude, secondaryCtx);
 
@@ -2931,11 +2934,20 @@ public class IgfsMetaManager extends IgfsManager {
                             // Generate events.
                             generateCreateEvents(res.createdPaths(), true);
 
-                            // TODO: Set correct output stream.
-                            return new IgfsCreateResult(res.info(), res.secondaryOutputStream());
+                            return new IgfsCreateResult(res.info(), secondaryOut);
                         }
                     }
                 }
+                catch (IgniteException | IgniteCheckedException e) {
+                    U.closeQuiet(secondaryOut);
+
+                    throw e;
+                }
+                catch (Exception e) {
+                    U.closeQuiet(secondaryOut);
+
+                    throw new IgniteCheckedException("Create failed due to unexpected exception: " + path, e);
+                }
                 finally {
                     busyLock.leaveBusy();
                 }
@@ -3026,12 +3038,6 @@ public class IgfsMetaManager extends IgfsManager {
         if (lastExistingInfo.hasChild(curPart))
             return null;
 
-        // Invoke secondary file system if needed.
-        OutputStream secondaryOut = null;
-
-        if (secondaryCtx != null)
-            secondaryOut = secondaryCtx.create();
-
         Map<IgniteUuid, EntryProcessor> procMap = new HashMap<>();
 
         // First step: add new entry to the last existing element.
@@ -3161,7 +3167,7 @@ public class IgfsMetaManager extends IgfsManager {
 
         IgfsEntryInfo info = (IgfsEntryInfo)invokeRes.get(curId).get();
 
-        return new IgfsPathsCreateResult(createdPaths, info, secondaryOut);
+        return new IgfsPathsCreateResult(createdPaths, info);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/87237cee/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPathsCreateResult.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPathsCreateResult.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPathsCreateResult.java
index 5f53f37..bd13555 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPathsCreateResult.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPathsCreateResult.java
@@ -19,9 +19,7 @@ package org.apache.ignite.internal.processors.igfs;
 
 import org.apache.ignite.igfs.IgfsPath;
 import org.apache.ignite.internal.util.typedef.internal.S;
-import org.jetbrains.annotations.Nullable;
 
-import java.io.OutputStream;
 import java.util.List;
 
 /**
@@ -34,20 +32,15 @@ public class IgfsPathsCreateResult {
     /** Info of the last created file. */
     private final IgfsEntryInfo info;
 
-    /** Secondary output stream. */
-    private final OutputStream secondaryOut;
-
     /**
      * Constructor.
      *
      * @param paths Created paths.
      * @param info Info of the last created file.
-     * @param secondaryOut Secondary output stream.
      */
-    public IgfsPathsCreateResult(List<IgfsPath> paths, IgfsEntryInfo info, @Nullable OutputStream secondaryOut) {
+    public IgfsPathsCreateResult(List<IgfsPath> paths, IgfsEntryInfo info) {
         this.paths = paths;
         this.info = info;
-        this.secondaryOut = secondaryOut;
     }
 
     /**
@@ -64,13 +57,6 @@ public class IgfsPathsCreateResult {
         return info;
     }
 
-    /**
-     * @return Secondary output stream.
-     */
-    public OutputStream secondaryOutputStream() {
-        return secondaryOut;
-    }
-
     /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(IgfsPathsCreateResult.class, this);