You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by nt...@apache.org on 2016/03/23 14:07:18 UTC
[1/9] ignite git commit: IGNITE-2871: IGFS: Removed "path" from
IgfsEntryInfo. Purge event is never fired now,
it will be fixed as a part of IGNITE-1679.
Repository: ignite
Updated Branches:
refs/heads/ignite-2004 1eaf5cfd7 -> 116c6ce36
IGNITE-2871: IGFS: Removed "path" from IgfsEntryInfo. Purge event is never fired now, it will be fixed as a part of IGNITE-1679.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/c3b02dca
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/c3b02dca
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/c3b02dca
Branch: refs/heads/ignite-2004
Commit: c3b02dca7246e998edd878c199abba8232dd1add
Parents: 5f7a46e
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 22 12:06:51 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 22 12:06:51 2016 +0300
----------------------------------------------------------------------
.../ignite/internal/binary/BinaryContext.java | 2 -
.../processors/igfs/IgfsDeleteWorker.java | 8 +-
.../internal/processors/igfs/IgfsEntryInfo.java | 29 ------
.../internal/processors/igfs/IgfsImpl.java | 45 ++++----
.../processors/igfs/IgfsInputStreamImpl.java | 2 +-
.../processors/igfs/IgfsMetaManager.java | 73 ++++---------
.../processors/igfs/IgfsOutputStreamImpl.java | 19 +---
.../processors/igfs/IgfsPathsCreateResult.java | 15 +--
.../IgfsSecondaryOutputStreamDescriptor.java | 17 +---
.../internal/processors/igfs/IgfsUtils.java | 20 +++-
.../igfs/meta/IgfsMetaUpdatePathProcessor.java | 102 -------------------
.../ignite/igfs/IgfsEventsAbstractSelfTest.java | 32 +-----
.../igfs/IgfsMetaManagerSelfTest.java | 8 +-
13 files changed, 78 insertions(+), 294 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/c3b02dca/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
index c9ad1e9..b357345 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/binary/BinaryContext.java
@@ -80,7 +80,6 @@ import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaFileRangeDeletePr
import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaFileRangeUpdateProcessor;
import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaFileReserveSpaceProcessor;
import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaFileUnlockProcessor;
-import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaUpdatePathProcessor;
import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaUpdatePropertiesProcessor;
import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaUpdateTimesProcessor;
import org.apache.ignite.internal.util.IgniteUtils;
@@ -135,7 +134,6 @@ public class BinaryContext {
sysClss.add(IgfsMetaFileRangeUpdateProcessor.class.getName());
sysClss.add(IgfsMetaFileReserveSpaceProcessor.class.getName());
sysClss.add(IgfsMetaFileUnlockProcessor.class.getName());
- sysClss.add(IgfsMetaUpdatePathProcessor.class.getName());
sysClss.add(IgfsMetaUpdatePropertiesProcessor.class.getName());
sysClss.add(IgfsMetaUpdateTimesProcessor.class.getName());
http://git-wip-us.apache.org/repos/asf/ignite/blob/c3b02dca/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
index f6b26ab..7e4dac8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsDeleteWorker.java
@@ -38,7 +38,6 @@ import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
-import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_PURGED;
import static org.apache.ignite.internal.GridTopic.TOPIC_IGFS;
/**
@@ -246,12 +245,7 @@ public class IgfsDeleteWorker extends IgfsThread {
// In case this node crashes, other node will re-delete the file.
data.delete(lockedInfo).get();
- boolean ret = meta.delete(trashId, name, id);
-
- if (info.path() != null)
- IgfsUtils.sendEvents(igfsCtx.kernalContext(), info.path(), EVT_IGFS_FILE_PURGED);
-
- return ret;
+ return meta.delete(trashId, name, id);
}
}
else
http://git-wip-us.apache.org/repos/asf/ignite/blob/c3b02dca/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsEntryInfo.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsEntryInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsEntryInfo.java
index 45cf828..9ff65da 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsEntryInfo.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsEntryInfo.java
@@ -19,7 +19,6 @@ package org.apache.ignite.internal.processors.igfs;
import org.apache.ignite.binary.BinaryRawReader;
import org.apache.ignite.binary.BinaryRawWriter;
-import org.apache.ignite.igfs.IgfsPath;
import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -52,9 +51,6 @@ public abstract class IgfsEntryInfo implements Externalizable {
/** Last modification time. */
protected long modificationTime;
- /** Original file path. This is a helper field used only during real file delete. */
- protected IgfsPath path;
-
/**
* Default constructor.
*/
@@ -113,13 +109,6 @@ public abstract class IgfsEntryInfo implements Externalizable {
}
/**
- * @return Original file path. This is a helper field used only in some operations like delete.
- */
- public IgfsPath path() {
- return path;
- }
-
- /**
* @return {@code True} if this is a file.
*/
public abstract boolean isFile();
@@ -155,20 +144,6 @@ public abstract class IgfsEntryInfo implements Externalizable {
}
/**
- * Update path.
- *
- * @param path Path.
- * @return Updated file info.
- */
- public IgfsEntryInfo path(IgfsPath path) {
- IgfsEntryInfo res = copy();
-
- res.path = path;
-
- return res;
- }
-
- /**
* Update access and modification time.
*
* @param accessTime Access time.
@@ -295,7 +270,6 @@ public abstract class IgfsEntryInfo implements Externalizable {
U.writeStringMap(out, props);
out.writeLong(accessTime);
out.writeLong(modificationTime);
- out.writeObject(path);
}
/** {@inheritDoc} */
@@ -304,7 +278,6 @@ public abstract class IgfsEntryInfo implements Externalizable {
props = U.readStringMap(in);
accessTime = in.readLong();
modificationTime = in.readLong();
- path = (IgfsPath)in.readObject();
}
/**
@@ -319,7 +292,6 @@ public abstract class IgfsEntryInfo implements Externalizable {
out.writeLong(accessTime);
out.writeLong(modificationTime);
- out.writeObject(path);
}
/**
@@ -334,7 +306,6 @@ public abstract class IgfsEntryInfo implements Externalizable {
accessTime = in.readLong();
modificationTime = in.readLong();
- path = in.readObject();
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/c3b02dca/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 e3a82a5..358aaf0 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
@@ -691,12 +691,7 @@ public final class IgfsImpl implements IgfsEx {
return null;
}
- IgfsEntryInfo info = meta.move(src, dest);
-
- int evtTyp = info.isFile() ? EVT_IGFS_FILE_RENAMED : EVT_IGFS_DIR_RENAMED;
-
- if (evts.isRecordable(evtTyp))
- evts.record(new IgfsEvent(src, info.path(), localNode(), evtTyp));
+ meta.move(src, dest);
return null;
}
@@ -1016,8 +1011,8 @@ public final class IgfsImpl implements IgfsEx {
batch = newBatch(path, desc.out());
- IgfsEventAwareOutputStream os = new IgfsEventAwareOutputStream(path, desc.info(), desc.parentId(),
- bufSize == 0 ? cfg.getStreamBufferSize() : bufSize, mode, batch);
+ IgfsEventAwareOutputStream os = new IgfsEventAwareOutputStream(path, desc.info(),
+ bufferSize(bufSize), mode, batch);
IgfsUtils.sendEvents(igfsCtx.kernalContext(), path, EVT_IGFS_FILE_OPENED_WRITE);
@@ -1034,7 +1029,7 @@ public final class IgfsImpl implements IgfsEx {
else
dirProps = fileProps = new HashMap<>(props);
- IgniteBiTuple<IgfsEntryInfo, IgniteUuid> t2 = meta.create(
+ IgfsEntryInfo res = meta.create(
path,
dirProps,
overwrite,
@@ -1044,10 +1039,9 @@ public final class IgfsImpl implements IgfsEx {
fileProps
);
- assert t2 != null;
+ assert res != null;
- return new IgfsEventAwareOutputStream(path, t2.get1(), t2.get2(),
- bufSize == 0 ? cfg.getStreamBufferSize() : bufSize, mode, null);
+ return new IgfsEventAwareOutputStream(path, res, bufferSize(bufSize), mode, null);
}
});
}
@@ -1082,8 +1076,7 @@ public final class IgfsImpl implements IgfsEx {
batch = newBatch(path, desc.out());
- return new IgfsEventAwareOutputStream(path, desc.info(), desc.parentId(),
- bufSize == 0 ? cfg.getStreamBufferSize() : bufSize, mode, batch);
+ return new IgfsEventAwareOutputStream(path, desc.info(), bufferSize(bufSize), mode, batch);
}
final List<IgniteUuid> ids = meta.fileIds(path);
@@ -1112,7 +1105,7 @@ public final class IgfsImpl implements IgfsEx {
else
dirProps = fileProps = new HashMap<>(props);
- IgniteBiTuple<IgfsEntryInfo, IgniteUuid> t2 = meta.append(
+ IgfsEntryInfo res = meta.append(
path,
dirProps,
create,
@@ -1122,10 +1115,9 @@ public final class IgfsImpl implements IgfsEx {
fileProps
);
- assert t2 != null;
+ assert res != null;
- return new IgfsEventAwareOutputStream(path, t2.get1(), t2.get2(),
- bufSize == 0 ? cfg.getStreamBufferSize() : bufSize, mode, null);
+ return new IgfsEventAwareOutputStream(path, res, bufferSize(bufSize), mode, null);
}
});
}
@@ -1693,14 +1685,13 @@ public final class IgfsImpl implements IgfsEx {
*
* @param path Path to stored file.
* @param fileInfo File info.
- * @param parentId Parent ID.
* @param bufSize The size of the buffer to be used.
* @param mode IGFS mode.
* @param batch Optional secondary file system batch.
*/
- IgfsEventAwareOutputStream(IgfsPath path, IgfsEntryInfo fileInfo,
- IgniteUuid parentId, int bufSize, IgfsMode mode, @Nullable IgfsFileWorkerBatch batch) {
- super(igfsCtx, path, fileInfo, parentId, bufSize, mode, batch, metrics);
+ IgfsEventAwareOutputStream(IgfsPath path, IgfsEntryInfo fileInfo, int bufSize, IgfsMode mode,
+ @Nullable IgfsFileWorkerBatch batch) {
+ super(igfsCtx, path, fileInfo, bufSize, mode, batch, metrics);
metrics.incrementFilesOpenedForWrite();
}
@@ -1964,6 +1955,16 @@ public final class IgfsImpl implements IgfsEx {
}
/**
+ * Get buffer size.
+ *
+ * @param bufSize Original buffer size.
+ * @return Real buffer size.
+ */
+ private int bufferSize(int bufSize) {
+ return bufSize == 0 ? cfg.getStreamBufferSize() : bufSize;
+ }
+
+ /**
* IGFS thread factory.
*/
@SuppressWarnings("NullableProblems")
http://git-wip-us.apache.org/repos/asf/ignite/blob/c3b02dca/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java
index 5d41543..447be93 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsInputStreamImpl.java
@@ -324,7 +324,7 @@ public class IgfsInputStreamImpl extends IgfsInputStreamAdapter {
}
}
catch (IgniteCheckedException e) {
- throw new IOException("File to close the file: " + fileInfo.path(), e);
+ throw new IOException("File to close the file: " + path, e);
}
finally {
closed = true;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c3b02dca/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 1aa49ed..d6c5995 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
@@ -52,7 +52,6 @@ import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaFileUnlockProcess
import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaDirectoryListingAddProcessor;
import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaDirectoryListingRemoveProcessor;
import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaDirectoryListingReplaceProcessor;
-import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaUpdatePathProcessor;
import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaUpdatePropertiesProcessor;
import org.apache.ignite.internal.processors.igfs.meta.IgfsMetaUpdateTimesProcessor;
import org.apache.ignite.internal.util.GridLeanMap;
@@ -61,9 +60,7 @@ import org.apache.ignite.internal.util.lang.GridClosureException;
import org.apache.ignite.internal.util.lang.IgniteOutClosureX;
import org.apache.ignite.internal.util.typedef.CI1;
import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.T2;
import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.transactions.TransactionConcurrency;
import org.apache.ignite.transactions.TransactionIsolation;
@@ -89,13 +86,15 @@ import java.util.TreeMap;
import java.util.TreeSet;
import java.util.concurrent.CountDownLatch;
+import static org.apache.ignite.events.EventType.EVT_IGFS_DIR_RENAMED;
+import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_RENAMED;
+
/**
* Cache based structure (meta data) manager.
*/
public class IgfsMetaManager extends IgfsManager {
/** Comparator for Id sorting. */
- private static final Comparator<IgniteUuid> PATH_ID_SORTING_COMPARATOR
- = new Comparator<IgniteUuid>() {
+ private static final Comparator<IgniteUuid> PATH_ID_SORTING_COMPARATOR = new Comparator<IgniteUuid>() {
@Override public int compare(IgniteUuid u1, IgniteUuid u2) {
if (u1 == u2)
return 0;
@@ -850,11 +849,10 @@ public class IgfsMetaManager extends IgfsManager {
* Move routine.
*
* @param srcPath Source path.
- * @param dstPath Destinatoin path.
- * @return File info of renamed entry.
+ * @param dstPath Destination path.
* @throws IgniteCheckedException In case of exception.
*/
- public IgfsEntryInfo move(IgfsPath srcPath, IgfsPath dstPath) throws IgniteCheckedException {
+ public void move(IgfsPath srcPath, IgfsPath dstPath) throws IgniteCheckedException {
if (busyLock.enterBusy()) {
try {
validTxState(false);
@@ -931,10 +929,11 @@ public class IgfsMetaManager extends IgfsManager {
tx.commit();
+ // Fire events.
IgfsPath newPath = new IgfsPath(dstPathIds.path(), dstName);
- // Set the new path to the info to simplify event creation:
- return srcInfo.path(newPath);
+ IgfsUtils.sendEvents(igfsCtx.kernalContext(), srcPath, newPath,
+ srcInfo.isFile() ? EVT_IGFS_FILE_RENAMED : EVT_IGFS_DIR_RENAMED);
}
}
finally {
@@ -1137,9 +1136,6 @@ public class IgfsMetaManager extends IgfsManager {
transferEntry(parentInfo.listing().get(victimName), parentId, victimName, trashId, trashName);
- if (victimInfo.isFile())
- invokeUpdatePath(victimId, path);
-
tx.commit();
delWorker.signal();
@@ -1739,19 +1735,6 @@ public class IgfsMetaManager extends IgfsManager {
}
/**
- * Invoke path update processor.
- *
- * @param id File ID.
- * @param path Path to be updated.
- * @throws IgniteCheckedException If failed.
- */
- private void invokeUpdatePath(IgniteUuid id, IgfsPath path) throws IgniteCheckedException {
- validTxState(true);
-
- id2InfoPrj.invoke(id, new IgfsMetaUpdatePathProcessor(path));
- }
-
- /**
* Invoke some processor and return new value.
*
* @param id ID.
@@ -1923,10 +1906,10 @@ public class IgfsMetaManager extends IgfsManager {
}
// Record CREATE event if needed.
- if (evts.isRecordable(EventType.EVT_IGFS_FILE_CREATED))
+ if (oldId == null && evts.isRecordable(EventType.EVT_IGFS_FILE_CREATED))
pendingEvts.add(new IgfsEvent(path, locNode, EventType.EVT_IGFS_FILE_CREATED));
- return new IgfsSecondaryOutputStreamDescriptor(parentInfo.id(), newInfo, out);
+ return new IgfsSecondaryOutputStreamDescriptor(newInfo, out);
}
@Override public IgfsSecondaryOutputStreamDescriptor onFailure(Exception err)
@@ -2018,8 +2001,7 @@ public class IgfsMetaManager extends IgfsManager {
// Set lock and return.
IgfsEntryInfo lockedInfo = invokeLock(info.id(), false);
- return new IgfsSecondaryOutputStreamDescriptor(infos.get(path.parent()).id(),
- lockedInfo, out);
+ return new IgfsSecondaryOutputStreamDescriptor(lockedInfo, out);
}
@Override public IgfsSecondaryOutputStreamDescriptor onFailure(@Nullable Exception err)
@@ -2373,9 +2355,6 @@ public class IgfsMetaManager extends IgfsManager {
softDeleteNonTx(null, path.name(), info.id(), trashId);
}
- // Update the deleted file info with path information for delete worker.
- invokeUpdatePath(info.id(), path);
-
return true; // No additional handling is required.
}
@@ -2902,10 +2881,10 @@ public class IgfsMetaManager extends IgfsManager {
* @param affKey Affinity key.
* @param evictExclude Evict exclude flag.
* @param fileProps File properties.
- * @return Tuple containing the file info and its parent id.
+ * @return Resulting info.
* @throws IgniteCheckedException If failed.
*/
- IgniteBiTuple<IgfsEntryInfo, IgniteUuid> append(
+ IgfsEntryInfo append(
final IgfsPath path,
Map<String, String> dirProps,
final boolean create,
@@ -2954,13 +2933,11 @@ public class IgfsMetaManager extends IgfsManager {
// At this point we can open the stream safely.
info = invokeLock(info.id(), false);
- IgniteBiTuple<IgfsEntryInfo, IgniteUuid> t2 = new T2<>(info, pathIds.lastParentId());
-
tx.commit();
IgfsUtils.sendEvents(igfsCtx.kernalContext(), path, EventType.EVT_IGFS_FILE_OPENED_WRITE);
- return t2;
+ return info;
}
else {
// Create file and parent folders.
@@ -2976,7 +2953,7 @@ public class IgfsMetaManager extends IgfsManager {
// Generate events.
generateCreateEvents(res.createdPaths(), true);
- return new T2<>(res.info(), res.parentId());
+ return res.info();
}
}
}
@@ -2999,10 +2976,10 @@ public class IgfsMetaManager extends IgfsManager {
* @param affKey Affinity key.
* @param evictExclude Evict exclude flag.
* @param fileProps File properties.
- * @return @return Tuple containing the created file info and its parent id.
+ * @return @return Resulting info.
* @throws IgniteCheckedException If failed.
*/
- IgniteBiTuple<IgfsEntryInfo, IgniteUuid> create(
+ IgfsEntryInfo create(
final IgfsPath path,
Map<String, String> dirProps,
final boolean overwrite,
@@ -3080,17 +3057,12 @@ public class IgfsMetaManager extends IgfsManager {
IgfsEntryInfo newInfo = invokeAndGet(overwriteId, new IgfsMetaFileCreateProcessor(createTime,
fileProps, blockSize, affKey, createFileLockId(false), evictExclude));
- // Fourth step: update path of remove file.
- invokeUpdatePath(oldId, path);
-
// Prepare result and commit.
- IgniteBiTuple<IgfsEntryInfo, IgniteUuid> t2 = new T2<>(newInfo, parentId);
-
tx.commit();
IgfsUtils.sendEvents(igfsCtx.kernalContext(), path, EventType.EVT_IGFS_FILE_OPENED_WRITE);
- return t2;
+ return newInfo;
}
else {
// Create file and parent folders.
@@ -3106,7 +3078,7 @@ public class IgfsMetaManager extends IgfsManager {
// Generate events.
generateCreateEvents(res.createdPaths(), true);
- return new T2<>(res.info(), res.parentId());
+ return res.info();
}
}
}
@@ -3190,7 +3162,6 @@ public class IgfsMetaManager extends IgfsManager {
String curPart = pathIds.part(curIdx);
IgniteUuid curId = pathIds.surrogateId(curIdx);
- IgniteUuid curParentId = lastExistingInfo.id();
if (lastExistingInfo.hasChild(curPart))
return null;
@@ -3224,8 +3195,6 @@ public class IgfsMetaManager extends IgfsManager {
// Advance things further.
curIdx++;
- curParentId = curId;
-
curPart = nextPart;
curId = nextId;
}
@@ -3241,7 +3210,7 @@ public class IgfsMetaManager extends IgfsManager {
createdPaths.add(pathIds.path());
- return new IgfsPathsCreateResult(createdPaths, info, curParentId);
+ return new IgfsPathsCreateResult(createdPaths, info);
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/c3b02dca/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 f7c85e8..21e5fb6 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
@@ -58,12 +58,6 @@ class IgfsOutputStreamImpl extends IgfsOutputStreamAdapter {
@SuppressWarnings("FieldAccessedSynchronizedAndUnsynchronized")
private IgfsEntryInfo fileInfo;
- /** Parent ID. */
- private final IgniteUuid parentId;
-
- /** File name. */
- private final String fileName;
-
/** Space in file to write data. */
@SuppressWarnings("FieldAccessedSynchronizedAndUnsynchronized")
private long space;
@@ -103,8 +97,8 @@ class IgfsOutputStreamImpl extends IgfsOutputStreamAdapter {
* @param batch Optional secondary file system batch.
* @param metrics Local IGFS metrics.
*/
- IgfsOutputStreamImpl(IgfsContext igfsCtx, IgfsPath path, IgfsEntryInfo fileInfo, IgniteUuid parentId,
- int bufSize, IgfsMode mode, @Nullable IgfsFileWorkerBatch batch, IgfsLocalMetrics metrics) {
+ IgfsOutputStreamImpl(IgfsContext igfsCtx, IgfsPath path, IgfsEntryInfo fileInfo, int bufSize, IgfsMode mode,
+ @Nullable IgfsFileWorkerBatch batch, IgfsLocalMetrics metrics) {
super(path, optimizeBufferSize(bufSize, fileInfo));
assert fileInfo != null;
@@ -126,13 +120,10 @@ class IgfsOutputStreamImpl extends IgfsOutputStreamAdapter {
this.fileInfo = fileInfo;
this.mode = mode;
this.batch = batch;
- this.parentId = parentId;
this.metrics = metrics;
streamRange = initialStreamRange(fileInfo);
- fileName = path.name();
-
writeCompletionFut = data.writeStart(fileInfo);
}
@@ -270,7 +261,7 @@ class IgfsOutputStreamImpl extends IgfsOutputStreamAdapter {
exists = meta.exists(fileInfo.id());
}
catch (IgniteCheckedException e) {
- throw new IOException("File to read file metadata: " + fileInfo.path(), e);
+ throw new IOException("File to read file metadata: " + path, e);
}
if (!exists) {
@@ -339,7 +330,7 @@ class IgfsOutputStreamImpl extends IgfsOutputStreamAdapter {
exists = !deleted && meta.exists(fileInfo.id());
}
catch (IgniteCheckedException e) {
- throw new IOException("File to read file metadata: " + fileInfo.path(), e);
+ throw new IOException("File to read file metadata: " + path, e);
}
if (exists) {
@@ -379,7 +370,7 @@ class IgfsOutputStreamImpl extends IgfsOutputStreamAdapter {
throw new IOException("File was concurrently deleted: " + path);
}
catch (IgniteCheckedException e) {
- throw new IOException("File to read file metadata: " + fileInfo.path(), e);
+ throw new IOException("File to read file metadata: " + path, e);
}
if (err != null)
http://git-wip-us.apache.org/repos/asf/ignite/blob/c3b02dca/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 9462aa4..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,7 +19,6 @@ package org.apache.ignite.internal.processors.igfs;
import org.apache.ignite.igfs.IgfsPath;
import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.lang.IgniteUuid;
import java.util.List;
@@ -33,20 +32,15 @@ public class IgfsPathsCreateResult {
/** Info of the last created file. */
private final IgfsEntryInfo info;
- /** Parent ID. */
- private final IgniteUuid parentId;
-
/**
* Constructor.
*
* @param paths Created paths.
* @param info Info of the last created file.
- * @param parentId Parent ID.
*/
- public IgfsPathsCreateResult(List<IgfsPath> paths, IgfsEntryInfo info, IgniteUuid parentId) {
+ public IgfsPathsCreateResult(List<IgfsPath> paths, IgfsEntryInfo info) {
this.paths = paths;
this.info = info;
- this.parentId = parentId;
}
/**
@@ -63,13 +57,6 @@ public class IgfsPathsCreateResult {
return info;
}
- /**
- * @return Parent ID.
- */
- public IgniteUuid parentId() {
- return parentId;
- }
-
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(IgfsPathsCreateResult.class, this);
http://git-wip-us.apache.org/repos/asf/ignite/blob/c3b02dca/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsSecondaryOutputStreamDescriptor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsSecondaryOutputStreamDescriptor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsSecondaryOutputStreamDescriptor.java
index 507ccfc..6bbc2c0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsSecondaryOutputStreamDescriptor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsSecondaryOutputStreamDescriptor.java
@@ -17,17 +17,12 @@
package org.apache.ignite.internal.processors.igfs;
-import org.apache.ignite.lang.IgniteUuid;
-
import java.io.OutputStream;
/**
* Descriptor of an output stream opened to the secondary file system.
*/
public class IgfsSecondaryOutputStreamDescriptor {
- /** Parent ID in the primary file system. */
- private final IgniteUuid parentId;
-
/** File info in the primary file system. */
private final IgfsEntryInfo info;
@@ -37,28 +32,18 @@ public class IgfsSecondaryOutputStreamDescriptor {
/**
* Constructor.
*
- * @param parentId Parent ID in the primary file system.
* @param info File info in the primary file system.
* @param out Output stream to the secondary file system.
*/
- IgfsSecondaryOutputStreamDescriptor(IgniteUuid parentId, IgfsEntryInfo info, OutputStream out) {
- assert parentId != null;
+ IgfsSecondaryOutputStreamDescriptor(IgfsEntryInfo info, OutputStream out) {
assert info != null;
assert out != null;
- this.parentId = parentId;
this.info = info;
this.out = out;
}
/**
- * @return Parent ID in the primary file system.
- */
- IgniteUuid parentId() {
- return parentId;
- }
-
- /**
* @return File info in the primary file system.
*/
IgfsEntryInfo info() {
http://git-wip-us.apache.org/repos/asf/ignite/blob/c3b02dca/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java
index 9b813b8..c6b7ad3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsUtils.java
@@ -282,7 +282,6 @@ public class IgfsUtils {
"exceeded. [maxAttempts=" + MAX_CACHE_TX_RETRIES + ']');
}
-
/**
* Sends a series of event.
*
@@ -290,14 +289,29 @@ public class IgfsUtils {
* @param type The type of event to send.
*/
public static void sendEvents(GridKernalContext kernalCtx, IgfsPath path, int type) {
+ sendEvents(kernalCtx, path, null, type);
+ }
+
+ /**
+ * Sends a series of event.
+ *
+ * @param path The path of the created file.
+ * @param newPath New path.
+ * @param type The type of event to send.
+ */
+ public static void sendEvents(GridKernalContext kernalCtx, IgfsPath path, IgfsPath newPath, int type) {
assert kernalCtx != null;
assert path != null;
GridEventStorageManager evts = kernalCtx.event();
ClusterNode locNode = kernalCtx.discovery().localNode();
- if (evts.isRecordable(type))
- evts.record(new IgfsEvent(path, locNode, type));
+ if (evts.isRecordable(type)) {
+ if (newPath == null)
+ evts.record(new IgfsEvent(path, locNode, type));
+ else
+ evts.record(new IgfsEvent(path, newPath, locNode, type));
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/c3b02dca/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/meta/IgfsMetaUpdatePathProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/meta/IgfsMetaUpdatePathProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/meta/IgfsMetaUpdatePathProcessor.java
deleted file mode 100644
index 782b25b..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/meta/IgfsMetaUpdatePathProcessor.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.processors.igfs.meta;
-
-import org.apache.ignite.binary.BinaryObjectException;
-import org.apache.ignite.binary.BinaryRawReader;
-import org.apache.ignite.binary.BinaryRawWriter;
-import org.apache.ignite.binary.BinaryReader;
-import org.apache.ignite.binary.BinaryWriter;
-import org.apache.ignite.binary.Binarylizable;
-import org.apache.ignite.igfs.IgfsPath;
-import org.apache.ignite.internal.processors.igfs.IgfsEntryInfo;
-import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.lang.IgniteUuid;
-
-import javax.cache.processor.EntryProcessor;
-import javax.cache.processor.MutableEntry;
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-
-/**
- * Update path closure.
- */
-public final class IgfsMetaUpdatePathProcessor implements EntryProcessor<IgniteUuid, IgfsEntryInfo, Void>,
- Externalizable, Binarylizable {
- /** */
- private static final long serialVersionUID = 0L;
-
- /** New path. */
- private IgfsPath path;
-
- /**
- * @param path Path.
- */
- public IgfsMetaUpdatePathProcessor(IgfsPath path) {
- this.path = path;
- }
-
- /**
- * Default constructor (required by Externalizable).
- */
- public IgfsMetaUpdatePathProcessor() {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public Void process(MutableEntry<IgniteUuid, IgfsEntryInfo> e, Object... args) {
- IgfsEntryInfo info = e.getValue();
-
- IgfsEntryInfo newInfo = info.path(path);
-
- e.setValue(newInfo);
-
- return null;
- }
-
- /** {@inheritDoc} */
- @Override public void writeExternal(ObjectOutput out) throws IOException {
- out.writeObject(path);
- }
-
- /** {@inheritDoc} */
- @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
- path = (IgfsPath)in.readObject();
- }
-
- /** {@inheritDoc} */
- @Override public void writeBinary(BinaryWriter writer) throws BinaryObjectException {
- BinaryRawWriter out = writer.rawWriter();
-
- out.writeObject(path);
- }
-
- /** {@inheritDoc} */
- @Override public void readBinary(BinaryReader reader) throws BinaryObjectException {
- BinaryRawReader in = reader.rawReader();
-
- path = in.readObject();
- }
-
- /** {@inheritDoc} */
- @Override public String toString() {
- return S.toString(IgfsMetaUpdatePathProcessor.class, this);
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c3b02dca/modules/core/src/test/java/org/apache/ignite/igfs/IgfsEventsAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/igfs/IgfsEventsAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/igfs/IgfsEventsAbstractSelfTest.java
index 6ca75a1..de20a4f 100644
--- a/modules/core/src/test/java/org/apache/ignite/igfs/IgfsEventsAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/igfs/IgfsEventsAbstractSelfTest.java
@@ -53,7 +53,6 @@ import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_CREATED;
import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_DELETED;
import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_OPENED_READ;
import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_OPENED_WRITE;
-import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_PURGED;
import static org.apache.ignite.events.EventType.EVT_IGFS_FILE_RENAMED;
import static org.apache.ignite.events.EventType.EVT_JOB_MAPPED;
import static org.apache.ignite.events.EventType.EVT_TASK_FAILED;
@@ -425,7 +424,7 @@ public abstract class IgfsEventsAbstractSelfTest extends GridCommonAbstractTest
public void testTwoFiles() throws Exception {
final List<Event> evtList = new ArrayList<>();
- final int evtsCnt = 4 + 3 + 2 + 2;
+ final int evtsCnt = 4 + 3 + 1 + 1;
final CountDownLatch latch = new CountDownLatch(evtsCnt);
@@ -495,11 +494,9 @@ public abstract class IgfsEventsAbstractSelfTest extends GridCommonAbstractTest
assertEquals(0, evt.dataSize());
assertOneToOne(
- evtList.subList(7, 11),
+ evtList.subList(7, 9),
new EventPredicate(EVT_IGFS_FILE_DELETED, new IgfsPath("/dir1/file1")),
- new EventPredicate(EVT_IGFS_FILE_PURGED, new IgfsPath("/dir1/file1")),
- new EventPredicate(EVT_IGFS_FILE_DELETED, new IgfsPath("/dir1/file2")),
- new EventPredicate(EVT_IGFS_FILE_PURGED, new IgfsPath("/dir1/file2"))
+ new EventPredicate(EVT_IGFS_FILE_DELETED, new IgfsPath("/dir1/file2"))
);
}
@@ -683,7 +680,7 @@ public abstract class IgfsEventsAbstractSelfTest extends GridCommonAbstractTest
public void testSingleFileOverwrite() throws Exception {
final List<Event> evtList = new ArrayList<>();
- final int evtsCnt = 1 + 4 + 1;
+ final int evtsCnt = 1 + 3 + 1;
final CountDownLatch latch = new CountDownLatch(evtsCnt);
@@ -737,27 +734,6 @@ public abstract class IgfsEventsAbstractSelfTest extends GridCommonAbstractTest
@Override public boolean apply(Event e) {
IgfsEvent e0 = (IgfsEvent)e;
- return e0.type() == EVT_IGFS_FILE_DELETED && e0.path().equals(file1);
- }
- },
- new P1<Event>() {
- @Override public boolean apply(Event e) {
- IgfsEvent e0 = (IgfsEvent)e;
-
- return e0.type() == EVT_IGFS_FILE_PURGED && e0.path().equals(file1);
- }
- },
- new P1<Event>() {
- @Override public boolean apply(Event e) {
- IgfsEvent e0 = (IgfsEvent)e;
-
- return e0.type() == EVT_IGFS_FILE_CREATED && e0.path().equals(file1);
- }
- },
- new P1<Event>() {
- @Override public boolean apply(Event e) {
- IgfsEvent e0 = (IgfsEvent)e;
-
return e0.type() == EVT_IGFS_FILE_OPENED_WRITE && e0.path().equals(file1);
}
},
http://git-wip-us.apache.org/repos/asf/ignite/blob/c3b02dca/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManagerSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManagerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManagerSelfTest.java
index 3dc2791..039bf8d 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManagerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManagerSelfTest.java
@@ -214,12 +214,12 @@ public class IgfsMetaManagerSelfTest extends IgfsCommonAbstractTest {
private IgfsEntryInfo createFileAndGetInfo(String path) throws IgniteCheckedException {
IgfsPath p = path(path);
- IgniteBiTuple<IgfsEntryInfo, IgniteUuid> t2 = mgr.create(p, null, false, 400, null, false, null);
+ IgfsEntryInfo res = mgr.create(p, null, false, 400, null, false, null);
- assert t2 != null;
- assert !t2.get1().isDirectory();
+ assert res != null;
+ assert !res.isDirectory();
- return t2.get1();
+ return res;
}
/**
[3/9] ignite git commit: IGFS: Added misssing "final" modifiers to
FileSystemConfiguration defaults.
Posted by nt...@apache.org.
IGFS: Added misssing "final" modifiers to FileSystemConfiguration defaults.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/409a623a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/409a623a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/409a623a
Branch: refs/heads/ignite-2004
Commit: 409a623aad9c63904404875aa548caf038f2c3b9
Parents: 2694c3c
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 22 12:46:23 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 22 12:46:23 2016 +0300
----------------------------------------------------------------------
.../org/apache/ignite/configuration/FileSystemConfiguration.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/409a623a/modules/core/src/main/java/org/apache/ignite/configuration/FileSystemConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/FileSystemConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/FileSystemConfiguration.java
index 0d7f3cc..518bbf6 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/FileSystemConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/FileSystemConfiguration.java
@@ -86,10 +86,10 @@ public class FileSystemConfiguration {
public static final boolean DFLT_INIT_DFLT_PATH_MODES = true;
/** Default value of metadata co-location flag. */
- public static boolean DFLT_COLOCATE_META = true;
+ public static final boolean DFLT_COLOCATE_META = true;
/** Default value of relaxed consistency flag. */
- public static boolean DFLT_RELAXED_CONSISTENCY = true;
+ public static final boolean DFLT_RELAXED_CONSISTENCY = true;
/** IGFS instance name. */
private String name;
[5/9] ignite git commit: Merge remote-tracking branch 'origin/master'
Posted by nt...@apache.org.
Merge remote-tracking branch 'origin/master'
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/046a188b
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/046a188b
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/046a188b
Branch: refs/heads/ignite-2004
Commit: 046a188b80f0110080b1151362a51379429aa660
Parents: 8d19968 409a623
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Tue Mar 22 15:14:34 2016 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Tue Mar 22 15:14:34 2016 +0300
----------------------------------------------------------------------
.../configuration/FileSystemConfiguration.java | 51 +-
.../internal/GridEventConsumeHandler.java | 3 +-
.../internal/GridMessageListenHandler.java | 3 +-
.../ignite/internal/binary/BinaryContext.java | 2 -
.../continuous/CacheContinuousQueryHandler.java | 88 +++-
.../continuous/CacheContinuousQueryManager.java | 12 +
.../continuous/GridContinuousHandler.java | 4 +-
.../continuous/GridContinuousProcessor.java | 27 +-
.../StartRoutineAckDiscoveryMessage.java | 22 +-
.../StartRoutineDiscoveryMessage.java | 22 +-
.../processors/igfs/IgfsDeleteWorker.java | 8 +-
.../processors/igfs/IgfsDirectoryInfo.java | 30 +-
.../internal/processors/igfs/IgfsEntryInfo.java | 37 +-
.../ignite/internal/processors/igfs/IgfsEx.java | 12 -
.../internal/processors/igfs/IgfsImpl.java | 47 +-
.../processors/igfs/IgfsInputStreamImpl.java | 2 +-
.../processors/igfs/IgfsMetaManager.java | 111 ++---
.../processors/igfs/IgfsOutputStreamImpl.java | 21 +-
.../internal/processors/igfs/IgfsPathIds.java | 52 ++-
.../processors/igfs/IgfsPathsCreateResult.java | 15 +-
.../internal/processors/igfs/IgfsProcessor.java | 29 +-
.../IgfsSecondaryOutputStreamDescriptor.java | 17 +-
.../internal/processors/igfs/IgfsUtils.java | 173 ++++++-
.../meta/IgfsMetaDirectoryCreateProcessor.java | 12 +-
.../IgfsMetaDirectoryListingAddProcessor.java | 7 +-
.../igfs/meta/IgfsMetaFileCreateProcessor.java | 8 +-
.../igfs/meta/IgfsMetaUpdatePathProcessor.java | 102 ----
.../meta/IgfsMetaUpdatePropertiesProcessor.java | 5 +-
.../ignite/igfs/IgfsEventsAbstractSelfTest.java | 32 +-
.../distributed/IgniteCacheCreatePutTest.java | 137 +++++-
.../CacheContinuousQueryLostPartitionTest.java | 2 -
.../GridCacheContinuousQueryConcurrentTest.java | 466 +++++++++++++++++++
.../processors/igfs/IgfsAbstractSelfTest.java | 31 +-
.../igfs/IgfsDualAbstractSelfTest.java | 13 +-
.../igfs/IgfsMetaManagerSelfTest.java | 8 +-
.../igfs/IgfsPrimaryRelaxedSelfTest.java | 28 ++
.../processors/igfs/IgfsProcessorSelfTest.java | 17 +-
.../processors/igfs/IgfsStreamsSelfTest.java | 2 +-
.../ignite/testsuites/IgniteIgfsTestSuite.java | 2 +
.../fs/IgniteHadoopIgfsSecondaryFileSystem.java | 8 +-
.../hadoop/fs/v1/IgniteHadoopFileSystem.java | 19 +-
.../hadoop/fs/v2/IgniteHadoopFileSystem.java | 21 +-
.../hadoop/igfs/HadoopIgfsProperties.java | 11 +-
...oopFileSystemUniversalFileSystemAdapter.java | 8 +-
.../processors/hadoop/HadoopMapReduceTest.java | 5 +-
.../IgniteCacheQuerySelfTestSuite.java | 2 +
46 files changed, 1248 insertions(+), 486 deletions(-)
----------------------------------------------------------------------
[4/9] ignite git commit: Minor
Posted by nt...@apache.org.
Minor
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/8d199683
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/8d199683
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/8d199683
Branch: refs/heads/ignite-2004
Commit: 8d199683d074ba377077d1291eb2682bc2f228b4
Parents: cadc61fa
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Tue Mar 22 15:14:15 2016 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Tue Mar 22 15:14:15 2016 +0300
----------------------------------------------------------------------
.../cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/8d199683/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
index 58d704d..9f52658 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
@@ -135,9 +135,7 @@ public class GridDhtAtomicUpdateFuture extends GridFutureAdapter<Void>
keys = new ArrayList<>(updateReq.keys().size());
mappings = U.newHashMap(updateReq.keys().size());
- boolean topLocked = updateReq.topologyLocked() || (updateReq.fastMap() && !updateReq.clientRequest());
-
- waitForExchange = !topLocked;
+ waitForExchange = !(updateReq.topologyLocked() || (updateReq.fastMap() && !updateReq.clientRequest()));
}
/**
[6/9] ignite git commit: Added ability to dump comm SPI recovery
descriptors (cherry picked from commit f76a313)
Posted by nt...@apache.org.
Added ability to dump comm SPI recovery descriptors
(cherry picked from commit f76a313)
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/61a0a5f8
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/61a0a5f8
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/61a0a5f8
Branch: refs/heads/ignite-2004
Commit: 61a0a5f8c0d05001071d40fbaf365fa231ed0e70
Parents: 046a188
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Tue Mar 22 15:58:49 2016 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Tue Mar 22 16:00:25 2016 +0300
----------------------------------------------------------------------
.../ignite/internal/util/nio/GridNioServer.java | 13 ++++++++-----
.../spi/communication/tcp/TcpCommunicationSpi.java | 16 ++++++++++++++++
2 files changed, 24 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/61a0a5f8/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index 42c7ac7..0d5c5de 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -1455,16 +1455,19 @@ public class GridNioServer<T> {
for (SelectionKey key : keys) {
GridSelectorNioSessionImpl ses = (GridSelectorNioSessionImpl)key.attachment();
- sb.append(" Conn [")
+ sb.append(" Connection info [")
.append("rmtAddr=").append(ses.remoteAddress())
.append(", locAddr=").append(ses.localAddress())
.append(", bytesRcvd=").append(ses.bytesReceived())
.append(", bytesSent=").append(ses.bytesSent());
- if (ses.recoveryDescriptor() != null) {
- sb.append(", msgsSent=").append(ses.recoveryDescriptor().sent())
- .append(", msgsAckedByRmt=").append(ses.recoveryDescriptor().acked())
- .append(", msgsRcvd=").append(ses.recoveryDescriptor().received());
+ GridNioRecoveryDescriptor desc = ses.recoveryDescriptor();
+
+ if (desc != null) {
+ sb.append(", msgsSent=").append(desc.sent())
+ .append(", msgsAckedByRmt=").append(desc.acked())
+ .append(", msgsRcvd=").append(desc.received())
+ .append(", descIdHash=").append(System.identityHashCode(desc));
}
else
sb.append(", recoveryDesc=null");
http://git-wip-us.apache.org/repos/asf/ignite/blob/61a0a5f8/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index b283b82..df60982 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -1381,6 +1381,22 @@ public class TcpCommunicationSpi extends IgniteSpiAdapter
/** {@inheritDoc} */
@Override public void dumpStats() {
+ StringBuilder sb = new StringBuilder("Communication SPI recovery descriptors: ").append(U.nl());
+
+ for (Map.Entry<ClientKey, GridNioRecoveryDescriptor> entry : recoveryDescs.entrySet()) {
+ GridNioRecoveryDescriptor desc = entry.getValue();
+
+ sb.append(" [key=").append(entry.getKey())
+ .append(", msgsSent=").append(desc.sent())
+ .append(", msgsAckedByRmt=").append(desc.acked())
+ .append(", msgsRcvd=").append(desc.received())
+ .append(", descIdHash=").append(System.identityHashCode(desc))
+ .append(']').append(U.nl());
+ }
+
+ if (log.isInfoEnabled())
+ log.info(sb.toString());
+
GridNioServer<Message> nioSrvr1 = nioSrvr;
if (nioSrvr1 != null)
[2/9] ignite git commit: IGNITE-2806: IGFS: Implemented relaxed
consistency model.
Posted by nt...@apache.org.
IGNITE-2806: IGFS: Implemented relaxed consistency model.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/2694c3ce
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/2694c3ce
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/2694c3ce
Branch: refs/heads/ignite-2004
Commit: 2694c3ce1e2c55151dac741a5d162b1e73239e52
Parents: c3b02dc
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Tue Mar 22 12:34:35 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Tue Mar 22 12:34:35 2016 +0300
----------------------------------------------------------------------
.../configuration/FileSystemConfiguration.java | 49 +++++++++++++++++-
.../processors/igfs/IgfsMetaManager.java | 38 ++++++++------
.../internal/processors/igfs/IgfsPathIds.java | 52 ++++++++++++++------
.../internal/processors/igfs/IgfsProcessor.java | 29 ++++++-----
.../processors/igfs/IgfsAbstractSelfTest.java | 11 +++++
.../igfs/IgfsPrimaryRelaxedSelfTest.java | 28 +++++++++++
.../processors/igfs/IgfsProcessorSelfTest.java | 17 ++++---
.../ignite/testsuites/IgniteIgfsTestSuite.java | 2 +
8 files changed, 177 insertions(+), 49 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/2694c3ce/modules/core/src/main/java/org/apache/ignite/configuration/FileSystemConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/FileSystemConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/FileSystemConfiguration.java
index 99d364e..0d7f3cc 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/FileSystemConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/FileSystemConfiguration.java
@@ -17,8 +17,6 @@
package org.apache.ignite.configuration;
-import java.util.Map;
-import java.util.concurrent.ExecutorService;
import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.igfs.IgfsIpcEndpointConfiguration;
import org.apache.ignite.igfs.IgfsMode;
@@ -27,6 +25,9 @@ import org.apache.ignite.internal.util.typedef.internal.A;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.jetbrains.annotations.Nullable;
+import java.util.Map;
+import java.util.concurrent.ExecutorService;
+
/**
* {@code IGFS} configuration. More than one file system can be configured within grid.
* {@code IGFS} configuration is provided via {@link IgniteConfiguration#getFileSystemConfiguration()}
@@ -87,6 +88,9 @@ public class FileSystemConfiguration {
/** Default value of metadata co-location flag. */
public static boolean DFLT_COLOCATE_META = true;
+ /** Default value of relaxed consistency flag. */
+ public static boolean DFLT_RELAXED_CONSISTENCY = true;
+
/** IGFS instance name. */
private String name;
@@ -171,6 +175,9 @@ public class FileSystemConfiguration {
/** Metadata co-location flag. */
private boolean colocateMeta = DFLT_COLOCATE_META;
+ /** Relaxed consistency flag. */
+ private boolean relaxedConsistency = DFLT_RELAXED_CONSISTENCY;
+
/**
* Constructs default configuration.
*/
@@ -215,6 +222,7 @@ public class FileSystemConfiguration {
perNodeBatchSize = cfg.getPerNodeBatchSize();
perNodeParallelBatchCnt = cfg.getPerNodeParallelBatchCount();
prefetchBlocks = cfg.getPrefetchBlocks();
+ relaxedConsistency = cfg.isRelaxedConsistency();
seqReadsBeforePrefetch = cfg.getSequentialReadsBeforePrefetch();
trashPurgeTimeout = cfg.getTrashPurgeTimeout();
}
@@ -877,6 +885,43 @@ public class FileSystemConfiguration {
this.colocateMeta = colocateMeta;
}
+ /**
+ * Get relaxed consistency flag.
+ * <p>
+ * Concurrent file system operations might conflict with each other. E.g. {@code move("/a1/a2", "/b")} and
+ * {@code move("/b", "/a1")}. Hence, it is necessary to atomically verify that participating paths are still
+ * on their places to keep file system in consistent state in such cases. These checks are expensive in
+ * distributed environment.
+ * <p>
+ * Real applications, e.g. Hadoop jobs, rarely produce conflicting operations. So additional checks could be
+ * skipped in these scenarios without any negative effect on file system integrity. It significantly increases
+ * performance of file system operations.
+ * <p>
+ * If value of this flag is {@code true}, IGFS will skip expensive consistency checks. It is recommended to set
+ * this flag to {@code false} if your application has conflicting operations, or you do not how exactly users will
+ * use your system.
+ * <p>
+ * This property affects only {@link IgfsMode#PRIMARY} paths.
+ * <p>
+ * Defaults to {@link #DFLT_RELAXED_CONSISTENCY}.
+ *
+ * @return {@code True} if relaxed consistency is enabled.
+ */
+ public boolean isRelaxedConsistency() {
+ return relaxedConsistency;
+ }
+
+ /**
+ * Set relaxed consistency flag.
+ * <p>
+ * See {@link #isColocateMetadata()} for more information.
+ *
+ * @param relaxedConsistency Whether to use relaxed consistency optimization.
+ */
+ public void setRelaxedConsistency(boolean relaxedConsistency) {
+ this.relaxedConsistency = relaxedConsistency;
+ }
+
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(FileSystemConfiguration.class, this);
http://git-wip-us.apache.org/repos/asf/ignite/blob/2694c3ce/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 d6c5995..a4212ba 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
@@ -136,8 +136,20 @@ public class IgfsMetaManager extends IgfsManager {
/** Busy lock. */
private final GridSpinBusyLock busyLock = new GridSpinBusyLock();
+ /** Relaxed flag. */
+ private final boolean relaxed;
+
/**
+ * Constructor.
*
+ * @param relaxed Relaxed mode flag.
+ */
+ public IgfsMetaManager(boolean relaxed) {
+ this.relaxed = relaxed;
+ }
+
+ /**
+ * Await initialization.
*/
void awaitInit() {
try {
@@ -889,19 +901,19 @@ public class IgfsMetaManager extends IgfsManager {
// Lock participating IDs.
final Set<IgniteUuid> lockIds = new TreeSet<>(PATH_ID_SORTING_COMPARATOR);
- srcPathIds.addExistingIds(lockIds);
- dstPathIds.addExistingIds(lockIds);
+ srcPathIds.addExistingIds(lockIds, relaxed);
+ dstPathIds.addExistingIds(lockIds, relaxed);
try (IgniteInternalTx tx = startTx()) {
// Obtain the locks.
final Map<IgniteUuid, IgfsEntryInfo> lockInfos = lockIds(lockIds);
// Verify integrity of source and destination paths.
- if (!srcPathIds.verifyIntegrity(lockInfos))
+ if (!srcPathIds.verifyIntegrity(lockInfos, relaxed))
throw new IgfsPathNotFoundException("Failed to perform move because source directory " +
"structure changed concurrently [src=" + srcPath + ", dst=" + dstPath + ']');
- if (!dstPathIds.verifyIntegrity(lockInfos))
+ if (!dstPathIds.verifyIntegrity(lockInfos, relaxed))
throw new IgfsPathNotFoundException("Failed to perform move because destination directory " +
"structure changed concurrently [src=" + srcPath + ", dst=" + dstPath + ']');
@@ -1103,7 +1115,7 @@ public class IgfsMetaManager extends IgfsManager {
// Prepare IDs to lock.
SortedSet<IgniteUuid> allIds = new TreeSet<>(PATH_ID_SORTING_COMPARATOR);
- pathIds.addExistingIds(allIds);
+ pathIds.addExistingIds(allIds, relaxed);
IgniteUuid trashId = IgfsUtils.randomTrashId();
@@ -1114,7 +1126,7 @@ public class IgfsMetaManager extends IgfsManager {
Map<IgniteUuid, IgfsEntryInfo> lockInfos = lockIds(allIds);
// Ensure that all participants are still in place.
- if (!pathIds.verifyIntegrity(lockInfos))
+ if (!pathIds.verifyIntegrity(lockInfos, relaxed))
return null;
IgfsEntryInfo victimInfo = lockInfos.get(victimId);
@@ -1589,16 +1601,14 @@ public class IgfsMetaManager extends IgfsManager {
// Prepare lock IDs. Essentially, they consist of two parts: existing IDs and potential new IDs.
Set<IgniteUuid> lockIds = new TreeSet<>(PATH_ID_SORTING_COMPARATOR);
- pathIds.addExistingIds(lockIds);
+ pathIds.addExistingIds(lockIds, relaxed);
pathIds.addSurrogateIds(lockIds);
- assert lockIds.size() == pathIds.count();
-
// Start TX.
try (IgniteInternalTx tx = startTx()) {
final Map<IgniteUuid, IgfsEntryInfo> lockInfos = lockIds(lockIds);
- if (!pathIds.verifyIntegrity(lockInfos))
+ if (!pathIds.verifyIntegrity(lockInfos, relaxed))
// Directory structure changed concurrently. So we simply re-try.
continue;
@@ -2907,14 +2917,14 @@ public class IgfsMetaManager extends IgfsManager {
// Prepare lock IDs.
Set<IgniteUuid> lockIds = new TreeSet<>(PATH_ID_SORTING_COMPARATOR);
- pathIds.addExistingIds(lockIds);
+ pathIds.addExistingIds(lockIds, relaxed);
pathIds.addSurrogateIds(lockIds);
// Start TX.
try (IgniteInternalTx tx = startTx()) {
Map<IgniteUuid, IgfsEntryInfo> lockInfos = lockIds(lockIds);
- if (!pathIds.verifyIntegrity(lockInfos))
+ if (!pathIds.verifyIntegrity(lockInfos, relaxed))
// Directory structure changed concurrently. So we simply re-try.
continue;
@@ -2998,7 +3008,7 @@ public class IgfsMetaManager extends IgfsManager {
// Prepare lock IDs.
Set<IgniteUuid> lockIds = new TreeSet<>(PATH_ID_SORTING_COMPARATOR);
- pathIds.addExistingIds(lockIds);
+ pathIds.addExistingIds(lockIds, relaxed);
pathIds.addSurrogateIds(lockIds);
// In overwrite mode we also lock ID of potential replacement as well as trash ID.
@@ -3017,7 +3027,7 @@ public class IgfsMetaManager extends IgfsManager {
try (IgniteInternalTx tx = startTx()) {
Map<IgniteUuid, IgfsEntryInfo> lockInfos = lockIds(lockIds);
- if (!pathIds.verifyIntegrity(lockInfos))
+ if (!pathIds.verifyIntegrity(lockInfos, relaxed))
// Directory structure changed concurrently. So we simply re-try.
continue;
http://git-wip-us.apache.org/repos/asf/ignite/blob/2694c3ce/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPathIds.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPathIds.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPathIds.java
index e2fe58d..446495e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPathIds.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsPathIds.java
@@ -221,11 +221,20 @@ public class IgfsPathIds {
* Add existing IDs to provided collection.
*
* @param col Collection.
+ * @param relaxed Relaxed mode flag.
*/
@SuppressWarnings("ManualArrayToCollectionCopy")
- public void addExistingIds(Collection<IgniteUuid> col) {
- for (int i = 0; i <= lastExistingIdx; i++)
- col.add(ids[i]);
+ public void addExistingIds(Collection<IgniteUuid> col, boolean relaxed) {
+ if (relaxed) {
+ col.add(ids[lastExistingIdx]);
+
+ if (lastExistingIdx == ids.length - 1 && lastExistingIdx > 0)
+ col.add(ids[lastExistingIdx - 1]);
+ }
+ else {
+ for (int i = 0; i <= lastExistingIdx; i++)
+ col.add(ids[i]);
+ }
}
/**
@@ -265,24 +274,39 @@ public class IgfsPathIds {
* Verify that observed paths are found in provided infos in the right order.
*
* @param infos Info.
+ * @param relaxed Whether to perform check in relaxed mode.
* @return {@code True} if full integrity is preserved.
*/
- public boolean verifyIntegrity(Map<IgniteUuid, IgfsEntryInfo> infos) {
- for (int i = 0; i <= lastExistingIdx; i++) {
- IgniteUuid curId = ids[i];
- IgfsEntryInfo curInfo = infos.get(curId);
+ public boolean verifyIntegrity(Map<IgniteUuid, IgfsEntryInfo> infos, boolean relaxed) {
+ if (relaxed) {
+ // Relaxed mode ensures that the last element is there. If this element is the last in the path, then
+ // existence of it's parent and link between them are checked as well.
+ IgfsEntryInfo info = infos.get(ids[lastExistingIdx]);
- // Check if required ID is there.
- if (curInfo == null)
+ if (info == null)
return false;
- // For non-leaf entry we check if child exists.
- if (i < lastExistingIdx) {
- String childName = parts[i + 1];
- IgniteUuid childId = ids[i + 1];
+ if (lastExistingIdx == ids.length - 1 && lastExistingIdx > 0) {
+ IgfsEntryInfo parentInfo = infos.get(ids[lastExistingIdx - 1]);
+
+ if (parentInfo == null || !parentInfo.hasChild(parts[lastExistingIdx], ids[lastExistingIdx]))
+ return false;
+ }
+ }
+ else {
+ // Strict mode ensures that all participants are in place and are still linked.
+ for (int i = 0; i <= lastExistingIdx; i++) {
+ IgfsEntryInfo info = infos.get(ids[i]);
- if (!curInfo.hasChild(childName, childId))
+ // Check if required ID is there.
+ if (info == null)
return false;
+
+ // For non-leaf entry we check if child exists.
+ if (i < lastExistingIdx) {
+ if (!info.hasChild(parts[i + 1], ids[i + 1]))
+ return false;
+ }
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/2694c3ce/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsProcessor.java
index 1b60252..44f6e44 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsProcessor.java
@@ -17,16 +17,6 @@
package org.apache.ignite.internal.processors.igfs;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentMap;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteFileSystem;
import org.apache.ignite.cache.affinity.AffinityKeyMapper;
@@ -53,6 +43,17 @@ import org.apache.ignite.lang.IgniteClosure;
import org.jetbrains.annotations.Nullable;
import org.jsr166.ConcurrentHashMap8;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentMap;
+
import static org.apache.ignite.IgniteSystemProperties.IGNITE_SKIP_CONFIGURATION_CONSISTENCY_CHECK;
import static org.apache.ignite.IgniteSystemProperties.getBoolean;
import static org.apache.ignite.cache.CacheAtomicityMode.TRANSACTIONAL;
@@ -104,10 +105,12 @@ public class IgfsProcessor extends IgfsProcessorAdapter {
// Start IGFS instances.
for (FileSystemConfiguration cfg : cfgs) {
+ FileSystemConfiguration cfg0 = new FileSystemConfiguration(cfg);
+
IgfsContext igfsCtx = new IgfsContext(
ctx,
- new FileSystemConfiguration(cfg),
- new IgfsMetaManager(),
+ cfg0,
+ new IgfsMetaManager(cfg0.isRelaxedConsistency()),
new IgfsDataManager(),
new IgfsServerManager(),
new IgfsFragmentizerManager());
@@ -116,7 +119,7 @@ public class IgfsProcessor extends IgfsProcessorAdapter {
for (IgfsManager mgr : igfsCtx.managers())
mgr.start(igfsCtx);
- igfsCache.put(maskName(cfg.getName()), igfsCtx);
+ igfsCache.put(maskName(cfg0.getName()), igfsCtx);
}
if (log.isDebugEnabled())
http://git-wip-us.apache.org/repos/asf/ignite/blob/2694c3ce/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractSelfTest.java
index 5894fa2..ec3878c 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsAbstractSelfTest.java
@@ -225,6 +225,13 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
}
/**
+ * @return Relaxed consistency flag.
+ */
+ protected boolean relaxedConsistency() {
+ return false;
+ }
+
+ /**
* Data chunk.
*
* @param len Length.
@@ -302,6 +309,7 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
igfsCfg.setSecondaryFileSystem(secondaryFs);
igfsCfg.setPrefetchBlocks(PREFETCH_BLOCKS);
igfsCfg.setSequentialReadsBeforePrefetch(SEQ_READS_BEFORE_PREFETCH);
+ igfsCfg.setRelaxedConsistency(relaxedConsistency());
CacheConfiguration dataCacheCfg = defaultCacheConfiguration();
@@ -2368,6 +2376,9 @@ public abstract class IgfsAbstractSelfTest extends IgfsCommonAbstractTest {
private void checkDeadlocksRepeat(final int lvlCnt, final int childrenDirPerLvl, final int childrenFilePerLvl,
int primaryLvlCnt, int renCnt, int delCnt,
int updateCnt, int mkdirsCnt, int createCnt) throws Exception {
+ if (relaxedConsistency())
+ return;
+
for (int i = 0; i < REPEAT_CNT; i++) {
try {
checkDeadlocks(lvlCnt, childrenDirPerLvl, childrenFilePerLvl, primaryLvlCnt, renCnt, delCnt,
http://git-wip-us.apache.org/repos/asf/ignite/blob/2694c3ce/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsPrimaryRelaxedSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsPrimaryRelaxedSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsPrimaryRelaxedSelfTest.java
new file mode 100644
index 0000000..6691df5
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsPrimaryRelaxedSelfTest.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.igfs;
+
+/**
+ * Tests for PRIMARY mode and relaxed consistency model.
+ */
+public class IgfsPrimaryRelaxedSelfTest extends IgfsPrimarySelfTest {
+ /** {@inheritDoc} */
+ @Override protected boolean relaxedConsistency() {
+ return true;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/2694c3ce/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java
index bcc2314..269706e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsProcessorSelfTest.java
@@ -35,6 +35,7 @@ import org.apache.ignite.igfs.IgfsPath;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteKernal;
import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
+import org.apache.ignite.internal.util.lang.GridAbsPredicate;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiTuple;
@@ -779,14 +780,18 @@ public class IgfsProcessorSelfTest extends IgfsCommonAbstractTest {
assert !igfs.exists(path(dirPath));
assert !igfs.exists(path(filePath));
- int metaSize = 0;
+ GridTestUtils.waitForCondition(new GridAbsPredicate() {
+ @Override public boolean apply() {
+ int metaSize = 0;
- for (Object metaId : grid(0).cachex(igfs.configuration().getMetaCacheName()).keySet()) {
- if (!IgfsUtils.isRootOrTrashId((IgniteUuid)metaId))
- metaSize++;
- }
+ for (Object metaId : grid(0).cachex(igfs.configuration().getMetaCacheName()).keySet()) {
+ if (!IgfsUtils.isRootOrTrashId((IgniteUuid)metaId))
+ metaSize++;
+ }
- assert metaSize == 0;
+ return metaSize == 0;
+ }
+ }, 5000);
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/2694c3ce/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java
index 489088c..038cb54 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteIgfsTestSuite.java
@@ -40,6 +40,7 @@ import org.apache.ignite.internal.processors.igfs.IgfsModesSelfTest;
import org.apache.ignite.internal.processors.igfs.IgfsOneClientNodeTest;
import org.apache.ignite.internal.processors.igfs.IgfsPrimaryOffheapTieredSelfTest;
import org.apache.ignite.internal.processors.igfs.IgfsPrimaryOffheapValuesSelfTest;
+import org.apache.ignite.internal.processors.igfs.IgfsPrimaryRelaxedSelfTest;
import org.apache.ignite.internal.processors.igfs.IgfsPrimarySelfTest;
import org.apache.ignite.internal.processors.igfs.IgfsProcessorSelfTest;
import org.apache.ignite.internal.processors.igfs.IgfsProcessorValidationSelfTest;
@@ -67,6 +68,7 @@ public class IgniteIgfsTestSuite extends TestSuite {
TestSuite suite = new TestSuite("Ignite FS Test Suite For Platform Independent Tests");
suite.addTest(new TestSuite(IgfsPrimarySelfTest.class));
+ suite.addTest(new TestSuite(IgfsPrimaryRelaxedSelfTest.class));
suite.addTest(new TestSuite(IgfsPrimaryOffheapTieredSelfTest.class));
suite.addTest(new TestSuite(IgfsPrimaryOffheapValuesSelfTest.class));
suite.addTest(new TestSuite(IgfsDualSyncSelfTest.class));
[8/9] ignite git commit: IGNITE-2844: .NET: Added "LoadAll" methods
to cache API. This closes #562.
Posted by nt...@apache.org.
IGNITE-2844: .NET: Added "LoadAll" methods to cache API. This closes #562.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/fc9730a9
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/fc9730a9
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/fc9730a9
Branch: refs/heads/ignite-2004
Commit: fc9730a9ae33b36ee8b6430583b39f13dfdd16de
Parents: 0013955
Author: Pavel Tupitsyn <pt...@gridgain.com>
Authored: Wed Mar 23 12:44:44 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Wed Mar 23 12:44:44 2016 +0300
----------------------------------------------------------------------
.../platform/cache/PlatformCache.java | 54 ++++++++++++++++++++
.../platform/utils/PlatformFutureUtils.java | 2 +-
.../Cache/CacheTestAsyncWrapper.cs | 12 +++++
.../Cache/Store/CacheStoreTest.cs | 31 +++++++++++
.../Cache/Store/CacheTestStore.cs | 2 +-
.../dotnet/Apache.Ignite.Core/Cache/ICache.cs | 26 ++++++++++
.../Apache.Ignite.Core/Impl/Cache/CacheImpl.cs | 17 ++++++
.../Apache.Ignite.Core/Impl/Cache/CacheOp.cs | 3 +-
8 files changed, 144 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/fc9730a9/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/PlatformCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/PlatformCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/PlatformCache.java
index 37fd335..35ccd19 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/PlatformCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/PlatformCache.java
@@ -44,16 +44,19 @@ import org.apache.ignite.internal.processors.platform.cache.query.PlatformFields
import org.apache.ignite.internal.processors.platform.cache.query.PlatformQueryCursor;
import org.apache.ignite.internal.processors.platform.utils.PlatformConfigurationUtils;
import org.apache.ignite.internal.processors.platform.utils.PlatformFutureUtils;
+import org.apache.ignite.internal.processors.platform.utils.PlatformListenable;
import org.apache.ignite.internal.processors.platform.utils.PlatformUtils;
import org.apache.ignite.internal.util.GridConcurrentFactory;
import org.apache.ignite.internal.util.future.IgniteFutureImpl;
import org.apache.ignite.internal.util.typedef.C1;
+import org.apache.ignite.lang.IgniteBiInClosure;
import org.apache.ignite.lang.IgniteFuture;
import org.jetbrains.annotations.Nullable;
import javax.cache.Cache;
import javax.cache.expiry.Duration;
import javax.cache.expiry.ExpiryPolicy;
+import javax.cache.integration.CompletionListener;
import javax.cache.processor.EntryProcessorException;
import javax.cache.processor.EntryProcessorResult;
import java.util.Iterator;
@@ -183,6 +186,9 @@ public class PlatformCache extends PlatformAbstractTarget {
/** */
public static final int OP_GET_CONFIG = 39;
+ /** */
+ public static final int OP_LOAD_ALL = 40;
+
/** Underlying JCache. */
private final IgniteCacheProxy cache;
@@ -369,6 +375,19 @@ public class PlatformCache extends PlatformAbstractTarget {
case OP_IS_LOCAL_LOCKED:
return cache.isLocalLocked(reader.readObjectDetached(), reader.readBoolean()) ? TRUE : FALSE;
+ case OP_LOAD_ALL: {
+ long futId = reader.readLong();
+ boolean replaceExisting = reader.readBoolean();
+
+ CompletionListenable fut = new CompletionListenable();
+
+ PlatformFutureUtils.listen(platformCtx, fut, futId, PlatformFutureUtils.TYP_OBJ, null, this);
+
+ cache.loadAll(PlatformUtils.readSet(reader), replaceExisting, fut);
+
+ return TRUE;
+ }
+
default:
return super.processInStreamOutLong(type, reader);
}
@@ -1101,4 +1120,39 @@ public class PlatformCache extends PlatformAbstractTarget {
}
}
}
+
+ /**
+ * Listenable around CompletionListener.
+ */
+ private static class CompletionListenable implements PlatformListenable, CompletionListener {
+ /** */
+ private IgniteBiInClosure<Object, Throwable> lsnr;
+
+ /** {@inheritDoc} */
+ @Override public void onCompletion() {
+ assert lsnr != null;
+
+ lsnr.apply(null, null);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void onException(Exception e) {
+ lsnr.apply(null, e);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void listen(IgniteBiInClosure<Object, Throwable> lsnr) {
+ this.lsnr = lsnr;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean cancel() throws IgniteCheckedException {
+ return false;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isCancelled() {
+ return false;
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/fc9730a9/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformFutureUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformFutureUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformFutureUtils.java
index 7a86201..8fad7d7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformFutureUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformFutureUtils.java
@@ -182,7 +182,7 @@ public class PlatformFutureUtils {
* @param writer Optional writer.
*/
@SuppressWarnings("unchecked")
- private static void listen(final PlatformContext ctx, PlatformListenable listenable, final long futPtr, final
+ public static void listen(final PlatformContext ctx, PlatformListenable listenable, final long futPtr, final
int typ, @Nullable final Writer writer, final PlatformAbstractTarget target) {
final PlatformCallbackGateway gate = ctx.gateway();
http://git-wip-us.apache.org/repos/asf/ignite/blob/fc9730a9/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheTestAsyncWrapper.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheTestAsyncWrapper.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheTestAsyncWrapper.cs
index 09e57dc..ff0c37c 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheTestAsyncWrapper.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheTestAsyncWrapper.cs
@@ -119,6 +119,18 @@ namespace Apache.Ignite.Core.Tests.Cache
}
/** <inheritDoc /> */
+ public void LoadAll(IEnumerable<TK> keys, bool replaceExistingValues)
+ {
+ _cache.LoadAll(keys, replaceExistingValues);
+ }
+
+ /** <inheritDoc /> */
+ public Task LoadAllAsync(IEnumerable<TK> keys, bool replaceExistingValues)
+ {
+ return _cache.LoadAllAsync(keys, replaceExistingValues);
+ }
+
+ /** <inheritDoc /> */
public bool ContainsKey(TK key)
{
return GetResult(_cache.ContainsKeyAsync(key));
http://git-wip-us.apache.org/repos/asf/ignite/blob/fc9730a9/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Store/CacheStoreTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Store/CacheStoreTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Store/CacheStoreTest.cs
index cc46642..76ec384 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Store/CacheStoreTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Store/CacheStoreTest.cs
@@ -21,6 +21,7 @@ namespace Apache.Ignite.Core.Tests.Cache.Store
using System;
using System.Collections;
using System.Collections.Generic;
+ using System.Linq;
using Apache.Ignite.Core.Binary;
using Apache.Ignite.Core.Cache;
using Apache.Ignite.Core.Cache.Store;
@@ -474,6 +475,36 @@ namespace Apache.Ignite.Core.Tests.Cache.Store
_storeCount++;
}
+ [Test]
+ public void TestLoadAll([Values(true, false)] bool isAsync)
+ {
+ var cache = GetCache();
+
+ var loadAll = isAsync
+ ? (Action<IEnumerable<int>, bool>) ((x, y) => { cache.LoadAllAsync(x, y).Wait(); })
+ : cache.LoadAll;
+
+ Assert.AreEqual(0, cache.GetSize());
+
+ loadAll(Enumerable.Range(105, 5), false);
+
+ Assert.AreEqual(5, cache.GetSize());
+
+ for (int i = 105; i < 110; i++)
+ Assert.AreEqual("val_" + i, cache[i]);
+
+ // Test overwrite
+ cache[105] = "42";
+
+ cache.LocalEvict(new[] { 105 });
+ loadAll(new[] {105}, false);
+ Assert.AreEqual("42", cache[105]);
+
+ loadAll(new[] {105, 106}, true);
+ Assert.AreEqual("val_105", cache[105]);
+ Assert.AreEqual("val_106", cache[106]);
+ }
+
/// <summary>
/// Get's grid name for this test.
/// </summary>
http://git-wip-us.apache.org/repos/asf/ignite/blob/fc9730a9/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Store/CacheTestStore.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Store/CacheTestStore.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Store/CacheTestStore.cs
index 9c381cb..b4b1670 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Store/CacheTestStore.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Store/CacheTestStore.cs
@@ -100,7 +100,7 @@ namespace Apache.Ignite.Core.Tests.Cache.Store
{
Debug.Assert(_grid != null);
- return keys.OfType<object>().ToDictionary(key => key, Load);
+ return keys.OfType<object>().ToDictionary(key => key, key => "val_" + key);
}
public void Write(object key, object val)
http://git-wip-us.apache.org/repos/asf/ignite/blob/fc9730a9/modules/platforms/dotnet/Apache.Ignite.Core/Cache/ICache.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/ICache.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/ICache.cs
index f5e7cd2..9d72cfa 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/ICache.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/ICache.cs
@@ -161,6 +161,32 @@ namespace Apache.Ignite.Core.Cache
Task LocalLoadCacheAsync(ICacheEntryFilter<TK, TV> p, params object[] args);
/// <summary>
+ /// Loads the specified entries into the cache using the configured
+ /// <see cref="ICacheStore"/>> for the given keys.
+ /// <para />
+ /// If an entry for a key already exists in the cache, a value will be loaded if and only if
+ /// <paramref name="replaceExistingValues" /> is true.
+ /// If no loader is configured for the cache, no objects will be loaded.
+ /// </summary>
+ /// <param name="keys">The keys to load.</param>
+ /// <param name="replaceExistingValues">if set to <c>true</c>, existing cache values will
+ /// be replaced by those loaded from a cache store.</param>
+ void LoadAll(IEnumerable<TK> keys, bool replaceExistingValues);
+
+ /// <summary>
+ /// Asynchronously loads the specified entries into the cache using the configured
+ /// <see cref="ICacheStore"/>> for the given keys.
+ /// <para />
+ /// If an entry for a key already exists in the cache, a value will be loaded if and only if
+ /// <paramref name="replaceExistingValues" /> is true.
+ /// If no loader is configured for the cache, no objects will be loaded.
+ /// </summary>
+ /// <param name="keys">The keys to load.</param>
+ /// <param name="replaceExistingValues">if set to <c>true</c>, existing cache values will
+ /// be replaced by those loaded from a cache store.</param>
+ Task LoadAllAsync(IEnumerable<TK> keys, bool replaceExistingValues);
+
+ /// <summary>
/// Check if cache contains mapping for this key.
/// </summary>
/// <param name="key">Key.</param>
http://git-wip-us.apache.org/repos/asf/ignite/blob/fc9730a9/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheImpl.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheImpl.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheImpl.cs
index 1296596..266012f 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheImpl.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheImpl.cs
@@ -288,6 +288,23 @@ namespace Apache.Ignite.Core.Impl.Cache
}
/** <inheritDoc /> */
+ public void LoadAll(IEnumerable<TK> keys, bool replaceExistingValues)
+ {
+ LoadAllAsync(keys, replaceExistingValues).Wait();
+ }
+
+ /** <inheritDoc /> */
+ public Task LoadAllAsync(IEnumerable<TK> keys, bool replaceExistingValues)
+ {
+ return GetFuture<object>((futId, futTyp) => DoOutOp((int) CacheOp.LoadAll, writer =>
+ {
+ writer.WriteLong(futId);
+ writer.WriteBoolean(replaceExistingValues);
+ WriteEnumerable(writer, keys);
+ })).Task;
+ }
+
+ /** <inheritDoc /> */
public bool ContainsKey(TK key)
{
IgniteArgumentCheck.NotNull(key, "key");
http://git-wip-us.apache.org/repos/asf/ignite/blob/fc9730a9/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheOp.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheOp.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheOp.cs
index 61ccb5f..4c42bf3 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheOp.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Cache/CacheOp.cs
@@ -60,6 +60,7 @@ namespace Apache.Ignite.Core.Impl.Cache
RemoveObj = 36,
Replace2 = 37,
Replace3 = 38,
- GetConfig = 39
+ GetConfig = 39,
+ LoadAll = 40
}
}
\ No newline at end of file
[9/9] ignite git commit: Merge branch 'master' into ignite-2004
Posted by nt...@apache.org.
Merge branch 'master' into ignite-2004
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/116c6ce3
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/116c6ce3
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/116c6ce3
Branch: refs/heads/ignite-2004
Commit: 116c6ce36afe04fe803b618a4b39276f36bfa15e
Parents: 1eaf5cf fc9730a
Author: nikolay_tikhonov <nt...@gridgain.com>
Authored: Wed Mar 23 16:07:00 2016 +0300
Committer: nikolay_tikhonov <nt...@gridgain.com>
Committed: Wed Mar 23 16:07:00 2016 +0300
----------------------------------------------------------------------
.../configuration/FileSystemConfiguration.java | 51 ++++++++-
.../ignite/internal/binary/BinaryContext.java | 2 -
.../internal/direct/DirectMessageReader.java | 2 +-
.../internal/direct/DirectMessageWriter.java | 4 +-
.../direct/state/DirectMessageState.java | 7 +-
.../stream/v2/DirectByteBufferStreamImplV2.java | 2 +-
.../dht/atomic/GridDhtAtomicUpdateFuture.java | 4 +-
.../processors/igfs/IgfsDeleteWorker.java | 8 +-
.../internal/processors/igfs/IgfsEntryInfo.java | 29 -----
.../internal/processors/igfs/IgfsImpl.java | 45 ++++----
.../processors/igfs/IgfsInputStreamImpl.java | 2 +-
.../processors/igfs/IgfsMetaManager.java | 111 ++++++++-----------
.../processors/igfs/IgfsOutputStreamImpl.java | 19 +---
.../internal/processors/igfs/IgfsPathIds.java | 52 ++++++---
.../processors/igfs/IgfsPathsCreateResult.java | 15 +--
.../internal/processors/igfs/IgfsProcessor.java | 29 ++---
.../IgfsSecondaryOutputStreamDescriptor.java | 17 +--
.../internal/processors/igfs/IgfsUtils.java | 20 +++-
.../igfs/meta/IgfsMetaUpdatePathProcessor.java | 102 -----------------
.../platform/cache/PlatformCache.java | 54 +++++++++
.../platform/utils/PlatformFutureUtils.java | 2 +-
.../internal/util/nio/GridDirectParser.java | 4 +-
.../ignite/internal/util/nio/GridNioServer.java | 19 +++-
.../communication/tcp/TcpCommunicationSpi.java | 16 +++
.../ignite/igfs/IgfsEventsAbstractSelfTest.java | 32 +-----
.../processors/igfs/IgfsAbstractSelfTest.java | 11 ++
.../igfs/IgfsMetaManagerSelfTest.java | 8 +-
.../igfs/IgfsPrimaryRelaxedSelfTest.java | 28 +++++
.../processors/igfs/IgfsProcessorSelfTest.java | 17 ++-
.../ignite/testsuites/IgniteIgfsTestSuite.java | 2 +
.../Cache/CacheTestAsyncWrapper.cs | 12 ++
.../Cache/Store/CacheStoreTest.cs | 31 ++++++
.../Cache/Store/CacheTestStore.cs | 2 +-
.../dotnet/Apache.Ignite.Core/Cache/ICache.cs | 26 +++++
.../Apache.Ignite.Core/Impl/Cache/CacheImpl.cs | 17 +++
.../Apache.Ignite.Core/Impl/Cache/CacheOp.cs | 3 +-
36 files changed, 440 insertions(+), 365 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/116c6ce3/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java
----------------------------------------------------------------------
[7/9] ignite git commit: Added ability to dump direct message reader
and writer (cherry picked from commit 660aa2f)
Posted by nt...@apache.org.
Added ability to dump direct message reader and writer
(cherry picked from commit 660aa2f)
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/00139554
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/00139554
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/00139554
Branch: refs/heads/ignite-2004
Commit: 00139554ffdcfaae07970a2281b6dcec8cec0af4
Parents: 61a0a5f
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Tue Mar 22 17:03:03 2016 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Tue Mar 22 17:28:39 2016 +0300
----------------------------------------------------------------------
.../apache/ignite/internal/direct/DirectMessageReader.java | 2 +-
.../apache/ignite/internal/direct/DirectMessageWriter.java | 4 ++--
.../ignite/internal/direct/state/DirectMessageState.java | 7 +++----
.../direct/stream/v2/DirectByteBufferStreamImplV2.java | 2 +-
.../org/apache/ignite/internal/util/nio/GridDirectParser.java | 4 ++--
.../org/apache/ignite/internal/util/nio/GridNioServer.java | 6 ++++++
6 files changed, 15 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/00139554/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java
index b567a03..10bc7e2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java
@@ -26,8 +26,8 @@ import org.apache.ignite.internal.direct.state.DirectMessageState;
import org.apache.ignite.internal.direct.state.DirectMessageStateItem;
import org.apache.ignite.internal.direct.stream.DirectByteBufferStream;
import org.apache.ignite.internal.direct.stream.v1.DirectByteBufferStreamImplV1;
-import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.direct.stream.v2.DirectByteBufferStreamImplV2;
+import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteOutClosure;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.plugin.extensions.communication.Message;
http://git-wip-us.apache.org/repos/asf/ignite/blob/00139554/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java
index be17113..28993c6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java
@@ -26,9 +26,9 @@ import org.apache.ignite.internal.direct.state.DirectMessageState;
import org.apache.ignite.internal.direct.state.DirectMessageStateItem;
import org.apache.ignite.internal.direct.stream.DirectByteBufferStream;
import org.apache.ignite.internal.direct.stream.v1.DirectByteBufferStreamImplV1;
+import org.apache.ignite.internal.direct.stream.v2.DirectByteBufferStreamImplV2;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.direct.stream.v2.DirectByteBufferStreamImplV2;
import org.apache.ignite.lang.IgniteOutClosure;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.plugin.extensions.communication.Message;
@@ -336,7 +336,7 @@ public class DirectMessageWriter implements MessageWriter {
}
/** {@inheritDoc} */
- public String toString() {
+ @Override public String toString() {
return S.toString(DirectMessageWriter.class, this);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/00139554/modules/core/src/main/java/org/apache/ignite/internal/direct/state/DirectMessageState.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/direct/state/DirectMessageState.java b/modules/core/src/main/java/org/apache/ignite/internal/direct/state/DirectMessageState.java
index 8ad7fe0..58f625f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/direct/state/DirectMessageState.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/direct/state/DirectMessageState.java
@@ -18,8 +18,8 @@
package org.apache.ignite.internal.direct.state;
import java.lang.reflect.Array;
+import java.util.Arrays;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
-import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.lang.IgniteOutClosure;
@@ -35,7 +35,6 @@ public class DirectMessageState<T extends DirectMessageStateItem> {
private final IgniteOutClosure<T> factory;
/** Stack array. */
- @GridToStringInclude
private T[] stack;
/** Current position. */
@@ -102,7 +101,7 @@ public class DirectMessageState<T extends DirectMessageStateItem> {
}
/** {@inheritDoc} */
- public String toString() {
- return S.toString(DirectMessageState.class, this);
+ @Override public String toString() {
+ return S.toString(DirectMessageState.class, this, "stack", Arrays.toString(stack));
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/00139554/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/v2/DirectByteBufferStreamImplV2.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/v2/DirectByteBufferStreamImplV2.java b/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/v2/DirectByteBufferStreamImplV2.java
index 7958793..d7dc990 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/v2/DirectByteBufferStreamImplV2.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/v2/DirectByteBufferStreamImplV2.java
@@ -1779,7 +1779,7 @@ public class DirectByteBufferStreamImplV2 implements DirectByteBufferStream {
}
/** {@inheritDoc} */
- public String toString() {
+ @Override public String toString() {
return S.toString(DirectByteBufferStreamImplV2.class, this);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/00139554/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridDirectParser.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridDirectParser.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridDirectParser.java
index 76e7d4d..5a02662 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridDirectParser.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridDirectParser.java
@@ -33,10 +33,10 @@ import org.jetbrains.annotations.Nullable;
*/
public class GridDirectParser implements GridNioParser {
/** Message metadata key. */
- private static final int MSG_META_KEY = GridNioSessionMetaKey.nextUniqueKey();
+ static final int MSG_META_KEY = GridNioSessionMetaKey.nextUniqueKey();
/** Reader metadata key. */
- private static final int READER_META_KEY = GridNioSessionMetaKey.nextUniqueKey();
+ static final int READER_META_KEY = GridNioSessionMetaKey.nextUniqueKey();
/** */
private final IgniteLogger log;
http://git-wip-us.apache.org/repos/asf/ignite/blob/00139554/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index 0d5c5de..c9c64ec 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -64,6 +64,7 @@ import org.apache.ignite.lang.IgniteBiInClosure;
import org.apache.ignite.lang.IgniteInClosure;
import org.apache.ignite.lang.IgnitePredicate;
import org.apache.ignite.plugin.extensions.communication.Message;
+import org.apache.ignite.plugin.extensions.communication.MessageReader;
import org.apache.ignite.plugin.extensions.communication.MessageWriter;
import org.apache.ignite.thread.IgniteThread;
import org.jetbrains.annotations.Nullable;
@@ -1455,9 +1456,14 @@ public class GridNioServer<T> {
for (SelectionKey key : keys) {
GridSelectorNioSessionImpl ses = (GridSelectorNioSessionImpl)key.attachment();
+ MessageWriter writer = ses.meta(MSG_WRITER.ordinal());
+ MessageReader reader = ses.meta(GridDirectParser.READER_META_KEY);
+
sb.append(" Connection info [")
.append("rmtAddr=").append(ses.remoteAddress())
.append(", locAddr=").append(ses.localAddress())
+ .append(", msgWriter=").append(writer != null ? writer.toString() : "null")
+ .append(", msgReader=").append(reader != null ? reader.toString() : "null")
.append(", bytesRcvd=").append(ses.bytesReceived())
.append(", bytesSent=").append(ses.bytesSent());