WIP.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/be1aaeb5 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/be1aaeb5 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/be1aaeb5 Branch: refs/heads/ignite-2813 Commit: be1aaeb5c31e0ba586715b34ef2daa0ff7c0c0d7 Parents: 5cb1221 Author: vozerov-gridgain <voze...@gridgain.com> Authored: Tue Mar 15 15:58:30 2016 +0300 Committer: vozerov-gridgain <voze...@gridgain.com> Committed: Tue Mar 15 15:58:30 2016 +0300 ---------------------------------------------------------------------- .../ignite/internal/processors/igfs/IgfsDeleteWorker.java | 7 +++++-- .../apache/ignite/internal/processors/igfs/IgfsFileInfo.java | 8 ++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/be1aaeb5/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 1570845..dda3612 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 @@ -286,6 +286,7 @@ public class IgfsDeleteWorker extends IgfsThread { final GridCompoundFuture<Object, ?> fut = new GridCompoundFuture<>(); + int notFoundFiles = 0; int failedFiles = 0; for (final Map.Entry<String, IgniteUuid> entry : listing.entrySet()) { @@ -319,6 +320,8 @@ public class IgfsDeleteWorker extends IgfsThread { } } } + else + notFoundFiles++; if (delListing.size() == MAX_DELETE_BATCH) break; @@ -340,10 +343,10 @@ public class IgfsDeleteWorker extends IgfsThread { // Actual delete of folder content. Collection<IgniteUuid> delIds = meta.delete(id, delListing); - if (listing.size() == delIds.size()) + if (listing.size() - notFoundFiles == delIds.size()) return true; // All entries were deleted. - if (listing.size() == delListing.size() + failedFiles) + if (listing.size() - notFoundFiles == delListing.size() + failedFiles) // All the files were tried, no reason to continue the loop: return false; } http://git-wip-us.apache.org/repos/asf/ignite/blob/be1aaeb5/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java index 1f41d91..fc2d70b 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsFileInfo.java @@ -445,6 +445,14 @@ public final class IgfsFileInfo implements Externalizable { } /** + * @param name Child name. + * @return {@code True} if child with such name exists. + */ + public boolean hasChild(String name) { + return listing2 != null && listing2.containsKey(name); + } + + /** * @return Affinity key used for single-node file collocation. If {@code null}, usual * mapper procedure is used for block affinity detection. */