You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/09/07 09:25:48 UTC
[20/28] ignite git commit: IGNITE-3611: IGFS: Slight refactoring to
listPaths() and listFiles() methods.
IGNITE-3611: IGFS: Slight refactoring to listPaths() and listFiles() methods.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/bf9371a3
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/bf9371a3
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/bf9371a3
Branch: refs/heads/ignite-1.6.7-test
Commit: bf9371a3ddb020209a6b031e11282706e19c58cb
Parents: 008cf64
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Mon Sep 5 17:05:05 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Mon Sep 5 17:05:05 2016 +0300
----------------------------------------------------------------------
.../internal/processors/igfs/IgfsImpl.java | 73 +++++++++++---------
.../processors/igfs/IgfsProcessorSelfTest.java | 11 +--
.../processors/igfs/IgfsStreamsSelfTest.java | 2 +-
3 files changed, 46 insertions(+), 40 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/bf9371a3/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 c704e00..3b25c82 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
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.processors.igfs;
-import java.util.Set;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
@@ -68,7 +67,6 @@ import org.apache.ignite.internal.processors.igfs.client.IgfsClientUpdateCallabl
import org.apache.ignite.internal.processors.task.GridInternal;
import org.apache.ignite.internal.util.GridSpinBusyLock;
import org.apache.ignite.internal.util.future.GridFutureAdapter;
-import org.apache.ignite.internal.util.typedef.C1;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.T2;
import org.apache.ignite.internal.util.typedef.internal.A;
@@ -791,7 +789,7 @@ public final class IgfsImpl implements IgfsEx {
IgfsMode mode = resolveMode(path);
- Collection<String> files = new HashSet<>();
+ Collection<IgfsPath> files = new HashSet<>();
if (IgfsUtils.isDualMode(mode)) {
assert secondaryFs != null;
@@ -799,8 +797,10 @@ public final class IgfsImpl implements IgfsEx {
try {
Collection<IgfsPath> children = secondaryFs.listPaths(path);
- for (IgfsPath child : children)
- files.add(child.name());
+ files.addAll(children);
+
+ if (!modeRslvr.hasPrimaryChild(path))
+ return files;
}
catch (Exception e) {
U.error(log, "List paths in DUAL mode failed [path=" + path + ']', e);
@@ -809,20 +809,17 @@ public final class IgfsImpl implements IgfsEx {
}
}
- if (!IgfsUtils.isDualMode(mode) || modeRslvr.hasPrimaryChild(path)) {
- IgniteUuid fileId = meta.fileId(path);
+ IgfsEntryInfo info = primaryInfoForListing(path);
- if (fileId != null)
- files.addAll(meta.directoryListing(fileId).keySet());
- else if (mode == PRIMARY)
- throw new IgfsPathNotFoundException("Failed to list files (path not found): " + path);
+ if (info != null) {
+ // Perform the listing.
+ for (String child : info.listing().keySet())
+ files.add(new IgfsPath(path, child));
}
+ else if (mode == PRIMARY)
+ throw new IgfsPathNotFoundException("Failed to list paths (path not found): " + path);
- return F.viewReadOnly(files, new C1<String, IgfsPath>() {
- @Override public IgfsPath apply(String e) {
- return new IgfsPath(path, e);
- }
- });
+ return files;
}
});
}
@@ -841,7 +838,7 @@ public final class IgfsImpl implements IgfsEx {
IgfsMode mode = resolveMode(path);
- Set<IgfsFile> files = new HashSet<>();
+ Collection<IgfsFile> files = new HashSet<>();
if (IgfsUtils.isDualMode(mode)) {
assert secondaryFs != null;
@@ -865,27 +862,22 @@ public final class IgfsImpl implements IgfsEx {
}
}
- IgniteUuid fileId = meta.fileId(path);
-
- if (fileId != null) {
- IgfsEntryInfo info = meta.info(fileId);
+ IgfsEntryInfo info = primaryInfoForListing(path);
- // Handle concurrent deletion.
- if (info != null) {
- if (info.isFile())
- // If this is a file, return its description.
- return Collections.<IgfsFile>singleton(new IgfsFileImpl(path, info,
- data.groupBlockSize()));
+ if (info != null) {
+ if (info.isFile())
+ // If this is a file, return its description.
+ return Collections.<IgfsFile>singleton(new IgfsFileImpl(path, info,
+ data.groupBlockSize()));
- // Perform the listing.
- for (Map.Entry<String, IgfsListingEntry> e : info.listing().entrySet()) {
- IgfsEntryInfo childInfo = meta.info(e.getValue().fileId());
+ // Perform the listing.
+ for (Map.Entry<String, IgfsListingEntry> e : info.listing().entrySet()) {
+ IgfsEntryInfo childInfo = meta.info(e.getValue().fileId());
- if (childInfo != null) {
- IgfsPath childPath = new IgfsPath(path, e.getKey());
+ if (childInfo != null) {
+ IgfsPath childPath = new IgfsPath(path, e.getKey());
- files.add(new IgfsFileImpl(childPath, childInfo, data.groupBlockSize()));
- }
+ files.add(new IgfsFileImpl(childPath, childInfo, data.groupBlockSize()));
}
}
}
@@ -897,6 +889,19 @@ public final class IgfsImpl implements IgfsEx {
});
}
+ /**
+ * Get primary file system info for listing operation.
+ *
+ * @param path Path.
+ * @return Info or {@code null} if not found.
+ * @throws IgniteCheckedException If failed.
+ */
+ private IgfsEntryInfo primaryInfoForListing(IgfsPath path) throws IgniteCheckedException {
+ IgniteUuid fileId = meta.fileId(path);
+
+ return fileId != null ? meta.info(fileId) : null;
+ }
+
/** {@inheritDoc} */
@Override public long usedSpaceSize() {
return metrics().localSpaceSize();
http://git-wip-us.apache.org/repos/asf/ignite/blob/bf9371a3/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 269706e..c854970 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
@@ -400,12 +400,12 @@ public class IgfsProcessorSelfTest extends IgfsCommonAbstractTest {
igfs.delete(path("/A1/B1/C3"), false);
assertNull(igfs.info(path("/A1/B1/C3")));
- assertEquals(Collections.<IgfsPath>emptyList(), igfs.listPaths(path("/A1/B1")));
+ assertTrue(F.isEmpty(igfs.listPaths(path("/A1/B1"))));
igfs.delete(path("/A2/B2"), true);
assertNull(igfs.info(path("/A2/B2")));
- assertEquals(Collections.<IgfsPath>emptyList(), igfs.listPaths(path("/A2")));
+ assertTrue(F.isEmpty(igfs.listPaths(path("/A2"))));
assertEquals(Arrays.asList(path("/A"), path("/A1"), path("/A2")), sorted(igfs.listPaths(path("/"))));
@@ -416,13 +416,14 @@ public class IgfsProcessorSelfTest extends IgfsCommonAbstractTest {
igfs.delete(path("/A"), true);
igfs.delete(path("/A1"), true);
igfs.delete(path("/A2"), true);
- assertEquals(Collections.<IgfsPath>emptyList(), igfs.listPaths(path("/")));
+
+ assertTrue(F.isEmpty(igfs.listPaths(path("/"))));
// Delete root when it is empty:
igfs.delete(path("/"), false);
igfs.delete(path("/"), true);
- assertEquals(Collections.<IgfsPath>emptyList(), igfs.listPaths(path("/")));
+ assertTrue(F.isEmpty(igfs.listPaths(path("/"))));
for (Cache.Entry<Object, Object> e : metaCache)
info("Entry in cache [key=" + e.getKey() + ", val=" + e.getValue() + ']');
@@ -603,7 +604,7 @@ public class IgfsProcessorSelfTest extends IgfsCommonAbstractTest {
// Cleanup.
igfs.format();
- assertEquals(Collections.<IgfsPath>emptyList(), igfs.listPaths(root));
+ assertTrue(F.isEmpty(igfs.listPaths(root)));
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/bf9371a3/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsStreamsSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsStreamsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsStreamsSelfTest.java
index 2af8c5c..44560e3 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsStreamsSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsStreamsSelfTest.java
@@ -198,7 +198,7 @@ public class IgfsStreamsSelfTest extends IgfsCommonAbstractTest {
long max = 100L * CFG_BLOCK_SIZE / WRITING_THREADS_CNT;
for (long size = 0; size <= max; size = size * 15 / 10 + 1) {
- assertEquals(Collections.<IgfsPath>emptyList(), fs.listPaths(root));
+ assertTrue(F.isEmpty(fs.listPaths(root)));
testCreateFile(path, size, new Random().nextInt());
}