You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2016/06/27 03:22:47 UTC
[03/22] ignite git commit: IGNITE-3353: IGFS: Fixed "out-of-space"
handling.
IGNITE-3353: IGFS: Fixed "out-of-space" handling.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/212dc068
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/212dc068
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/212dc068
Branch: refs/heads/master
Commit: 212dc068f807a055ae3755a9eebf55fe7722c574
Parents: 8e6473a
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Wed Jun 22 16:40:49 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Wed Jun 22 16:54:47 2016 +0300
----------------------------------------------------------------------
.../internal/processors/cache/GridCacheAdapter.java | 16 +++-------------
.../internal/processors/igfs/IgfsDataManager.java | 14 ++------------
.../processors/igfs/IgfsOutputStreamImpl.java | 10 ++++++++--
.../processors/igfs/IgfsDataManagerSelfTest.java | 6 +++---
4 files changed, 16 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/212dc068/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
index 3dbd0f9..944a6b0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
@@ -340,19 +340,9 @@ public abstract class GridCacheAdapter<K, V> implements IgniteInternalCache<K, V
igfsDataSpaceMax = igfsCfg.getMaxSpaceSize();
- if (igfsDataSpaceMax == 0) {
- long maxMem = Runtime.getRuntime().maxMemory();
-
- // We leave JVM at least 500M of memory for correct operation.
- long jvmFreeSize = (maxMem - 512 * 1024 * 1024);
-
- if (jvmFreeSize <= 0)
- jvmFreeSize = maxMem / 2;
-
- long dfltMaxSize = (long)(0.8f * maxMem);
-
- igfsDataSpaceMax = Math.min(dfltMaxSize, jvmFreeSize);
- }
+ // Do we have limits?
+ if (igfsDataSpaceMax <= 0)
+ igfsDataSpaceMax = Long.MAX_VALUE;
}
break;
http://git-wip-us.apache.org/repos/asf/ignite/blob/212dc068/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 ca8a3af..1397e4e 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
@@ -465,23 +465,13 @@ 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, boolean await) throws IgniteCheckedException {
+ public void writeClose(IgniteUuid fileId) 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 " +
- "failed): " + fileId);
- }
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/212dc068/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 7741a25..f6b1104 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
@@ -23,6 +23,7 @@ import org.apache.ignite.igfs.IgfsException;
import org.apache.ignite.igfs.IgfsMode;
import org.apache.ignite.igfs.IgfsOutputStream;
import org.apache.ignite.igfs.IgfsPath;
+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;
@@ -64,6 +65,9 @@ class IgfsOutputStreamImpl extends IgfsOutputStream {
/** Mutex for synchronization. */
private final Object mux = new Object();
+ /** Write completion future. */
+ private final IgniteInternalFuture<Boolean> writeFut;
+
/** Flag for this stream open/closed state. */
private boolean closed;
@@ -120,7 +124,7 @@ class IgfsOutputStreamImpl extends IgfsOutputStream {
streamRange = initialStreamRange(fileInfo);
- igfsCtx.data().writeStart(fileInfo.id());
+ writeFut = igfsCtx.data().writeStart(fileInfo.id());
}
igfsCtx.igfs().localMetrics().incrementFilesOpenedForWrite();
@@ -300,7 +304,9 @@ class IgfsOutputStreamImpl extends IgfsOutputStream {
flushRemainder();
- igfsCtx.data().writeClose(fileInfo.id(), true);
+ igfsCtx.data().writeClose(fileInfo.id());
+
+ writeFut.get();
flushSuccess = true;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/212dc068/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 0d1a66f..70d6b99 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(), false);
+ mgr.writeClose(info.id());
fut.get(3000);
@@ -287,7 +287,7 @@ public class IgfsDataManagerSelfTest extends IgfsCommonAbstractTest {
assert left2 == null;
- mgr.writeClose(info.id(), false);
+ mgr.writeClose(info.id());
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(), false);
+ mgr.writeClose(info.id());
assertTrue(range.regionEqual(new IgfsFileAffinityRange(0, writesCnt * chunkSize - 1, null)));