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/07 14:07:08 UTC
ignite git commit: Removed "writeComplextoinFuture" field.
Repository: ignite
Updated Branches:
refs/heads/ignite-3264 153a63b79 -> 1e528b4dd
Removed "writeComplextoinFuture" field.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/1e528b4d
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/1e528b4d
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/1e528b4d
Branch: refs/heads/ignite-3264
Commit: 1e528b4ddd7df720cb09c13136c294520293564d
Parents: 153a63b
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Jun 7 17:07:00 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Jun 7 17:07:00 2016 +0300
----------------------------------------------------------------------
.../processors/igfs/IgfsDataManager.java | 10 ++++++++--
.../processors/igfs/IgfsOutputStreamImpl.java | 19 +++----------------
.../processors/igfs/IgfsDataManagerSelfTest.java | 6 +++---
3 files changed, 14 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/1e528b4d/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
index f470521..34d77f9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDataManager.java
@@ -494,12 +494,18 @@ public class IgfsDataManager extends IgfsManager {
* Notifies data manager that no further writes will be performed on stream.
*
* @param fileId File ID.
+ * @param await Await completion.
+ * @throws IgniteCheckedException If failed.
*/
- public void writeClose(IgniteUuid fileId) {
+ public void writeClose(IgniteUuid fileId, boolean await) throws IgniteCheckedException {
WriteCompletionFuture fut = pendingWrites.get(fileId);
- if (fut != null)
+ if (fut != null) {
fut.markWaitingLastAck();
+
+ if (await)
+ fut.get();
+ }
else {
if (log.isDebugEnabled())
log.debug("Failed to find write completion future for file in pending write map (most likely it was " +
http://git-wip-us.apache.org/repos/asf/ignite/blob/1e528b4d/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsOutputStreamImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsOutputStreamImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsOutputStreamImpl.java
index a642d63..fb2ed3b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsOutputStreamImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsOutputStreamImpl.java
@@ -24,7 +24,6 @@ import org.apache.ignite.igfs.IgfsMode;
import org.apache.ignite.igfs.IgfsOutputStream;
import org.apache.ignite.igfs.IgfsPath;
import org.apache.ignite.igfs.IgfsPathNotFoundException;
-import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.managers.eventstorage.GridEventStorageManager;
import org.apache.ignite.internal.util.typedef.internal.A;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -63,9 +62,6 @@ class IgfsOutputStreamImpl extends IgfsOutputStream {
/** File worker batch. */
private final IgfsFileWorkerBatch batch;
- /** Write completion future. */
- private final IgniteInternalFuture<Boolean> writeCompletionFut;
-
/** Mutex for synchronization. */
private final Object mux = new Object();
@@ -127,7 +123,8 @@ class IgfsOutputStreamImpl extends IgfsOutputStream {
this.batch = batch;
streamRange = initialStreamRange(fileInfo);
- writeCompletionFut = igfsCtx.data().writeStart(fileInfo.id());
+
+ igfsCtx.data().writeStart(fileInfo.id());
}
igfsCtx.igfs().localMetrics().incrementFilesOpenedForWrite();
@@ -287,9 +284,7 @@ class IgfsOutputStreamImpl extends IgfsOutputStream {
IOException err = null;
try {
- igfsCtx.data().writeClose(fileInfo.id());
-
- writeCompletionFut.get();
+ igfsCtx.data().writeClose(fileInfo.id(), true);
}
catch (IgniteCheckedException e) {
err = new IOException("Failed to close stream [path=" + path +
@@ -418,14 +413,6 @@ class IgfsOutputStreamImpl extends IgfsOutputStream {
assert data instanceof ByteBuffer || data instanceof DataInput;
try {
- // Check if pending writes are ok.
- if (writeCompletionFut.isDone()) {
- if (data instanceof DataInput)
- ((DataInput) data).skipBytes(writeLen);
-
- writeCompletionFut.get();
- }
-
// Increment metrics.
bytes += writeLen;
space += writeLen;
http://git-wip-us.apache.org/repos/asf/ignite/blob/1e528b4d/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDataManagerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDataManagerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDataManagerSelfTest.java
index 70d6b99..0d1a66f 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDataManagerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsDataManagerSelfTest.java
@@ -195,7 +195,7 @@ public class IgfsDataManagerSelfTest extends IgfsCommonAbstractTest {
assert remainder == null;
- mgr.writeClose(info.id());
+ mgr.writeClose(info.id(), false);
fut.get(3000);
@@ -287,7 +287,7 @@ public class IgfsDataManagerSelfTest extends IgfsCommonAbstractTest {
assert left2 == null;
- mgr.writeClose(info.id());
+ mgr.writeClose(info.id(), false);
fut.get(3000);
@@ -369,7 +369,7 @@ public class IgfsDataManagerSelfTest extends IgfsCommonAbstractTest {
assert left == null : "No remainder should be returned if flush is true: " + Arrays.toString(left);
}
- mgr.writeClose(info.id());
+ mgr.writeClose(info.id(), false);
assertTrue(range.regionEqual(new IgfsFileAffinityRange(0, writesCnt * chunkSize - 1, null)));