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/22 17:49:51 UTC
[15/50] [abbrv] ignite git commit: IGNITE-2828: IGFS: Introduced
processor for "updateTimes" operation.
IGNITE-2828: IGFS: Introduced processor for "updateTimes" operation.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/09b28952
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/09b28952
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/09b28952
Branch: refs/heads/ignite-2004
Commit: 09b28952f1c95130fd0ebadbbd33e70b7d81245c
Parents: b1d9e8b
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Mon Mar 14 15:57:28 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Mon Mar 14 15:57:28 2016 +0300
----------------------------------------------------------------------
.../processors/igfs/IgfsMetaManager.java | 73 ++++++++++++++++----
.../ignite/testsuites/IgniteIgfsTestSuite.java | 6 --
2 files changed, 61 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/09b28952/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 8bb9e92..d3aae58 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
@@ -411,7 +411,7 @@ public class IgfsMetaManager extends IgfsManager {
// Force root ID always exist in cache.
if (info == null && IgfsUtils.ROOT_ID.equals(fileId))
- id2InfoPrj.putIfAbsent(IgfsUtils.ROOT_ID, info = new IgfsFileInfo());
+ info = createSystemEntryIfAbsent(fileId);
return info;
}
@@ -443,13 +443,9 @@ public class IgfsMetaManager extends IgfsManager {
// Force root ID always exist in cache.
if (fileIds.contains(IgfsUtils.ROOT_ID) && !map.containsKey(IgfsUtils.ROOT_ID)) {
- IgfsFileInfo info = new IgfsFileInfo();
-
- id2InfoPrj.putIfAbsent(IgfsUtils.ROOT_ID, info);
-
map = new GridLeanMap<>(map);
- map.put(IgfsUtils.ROOT_ID, info);
+ map.put(IgfsUtils.ROOT_ID, createSystemEntryIfAbsent(IgfsUtils.ROOT_ID));
}
return map;
@@ -666,8 +662,6 @@ public class IgfsMetaManager extends IgfsManager {
*/
private IgfsFileInfo createSystemEntryIfAbsent(IgniteUuid id)
throws IgniteCheckedException {
- assert validTxState(true);
-
assert IgfsUtils.isRootOrTrashId(id);
IgfsFileInfo info = new IgfsFileInfo(id);
@@ -2995,11 +2989,10 @@ public class IgfsMetaManager extends IgfsManager {
assert parentInfo.isDirectory();
- IgfsFileInfo updated = new IgfsFileInfo(fileInfo,
+ id2InfoPrj.invoke(fileId, new UpdateTimesProcessor(
accessTime == -1 ? fileInfo.accessTime() : accessTime,
- modificationTime == -1 ? fileInfo.modificationTime() : modificationTime);
-
- id2InfoPrj.put(fileId, updated);
+ modificationTime == -1 ? fileInfo.modificationTime() : modificationTime)
+ );
id2InfoPrj.invoke(parentId, new UpdateListingEntry(fileId, fileName, 0, accessTime,
modificationTime));
@@ -4058,4 +4051,60 @@ public class IgfsMetaManager extends IgfsManager {
affRange = (IgfsFileAffinityRange)in.readObject();
}
}
+
+ /**
+ * Update times entry processor.
+ */
+ private static class UpdateTimesProcessor implements EntryProcessor<IgniteUuid, IgfsFileInfo, Void>,
+ Externalizable {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** Access time. */
+ private long accessTime;
+
+ /** Modification time. */
+ private long modificationTime;
+
+ /**
+ * Default constructor.
+ */
+ public UpdateTimesProcessor() {
+ // No-op.
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param accessTime Access time.
+ * @param modificationTime Modification time.
+ */
+ public UpdateTimesProcessor(long accessTime, long modificationTime) {
+ this.accessTime = accessTime;
+ this.modificationTime = modificationTime;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Void process(MutableEntry<IgniteUuid, IgfsFileInfo> entry, Object... args)
+ throws EntryProcessorException {
+
+ IgfsFileInfo oldInfo = entry.getValue();
+
+ entry.setValue(new IgfsFileInfo(oldInfo, accessTime, modificationTime));
+
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeLong(accessTime);
+ out.writeLong(modificationTime);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ accessTime = in.readLong();
+ modificationTime = in.readLong();
+ }
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/09b28952/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 cc5e1ce..489088c 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
@@ -90,12 +90,6 @@ public class IgniteIgfsTestSuite extends TestSuite {
suite.addTest(new TestSuite(IgfsModesSelfTest.class));
suite.addTest(new TestSuite(IgfsMetricsSelfTest.class));
- suite.addTest(new TestSuite(IgfsPrimarySelfTest.class));
- suite.addTest(new TestSuite(IgfsPrimaryOffheapTieredSelfTest.class));
- suite.addTest(new TestSuite(IgfsPrimaryOffheapValuesSelfTest.class));
- suite.addTest(new TestSuite(IgfsDualSyncSelfTest.class));
- suite.addTest(new TestSuite(IgfsDualAsyncSelfTest.class));
-
suite.addTest(new TestSuite(IgfsClientCacheSelfTest.class));
suite.addTest(new TestSuite(IgfsOneClientNodeTest.class));