IGNITE-5902 Implemented stop caches at once. (cherry picked from commit ebb8765)
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/5c209785 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/5c209785 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/5c209785 Branch: refs/heads/ignite-5947 Commit: 5c2097856714a7803956d754735c68b21156019c Parents: 841db65 Author: Alexey Kuznetsov <[email protected]> Authored: Fri Aug 11 10:25:36 2017 +0700 Committer: Alexey Kuznetsov <[email protected]> Committed: Fri Aug 11 10:28:22 2017 +0700 ---------------------------------------------------------------------- .../visor/cache/VisorCacheStopTask.java | 22 ++++++++-------- .../visor/cache/VisorCacheStopTaskArg.java | 27 ++++++++++++++++++++ 2 files changed, 39 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/5c209785/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTask.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTask.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTask.java index 9f7c018..df95c5e 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTask.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTask.java @@ -17,8 +17,10 @@ package org.apache.ignite.internal.visor.cache; -import org.apache.ignite.IgniteCache; +import java.util.Collection; +import java.util.HashSet; import org.apache.ignite.internal.processors.task.GridInternal; +import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.internal.visor.VisorJob; import org.apache.ignite.internal.visor.VisorOneNodeTask; @@ -46,23 +48,23 @@ public class VisorCacheStopTask extends VisorOneNodeTask<VisorCacheStopTaskArg, /** * Create job. * - * @param cacheName Cache name to clear. + * @param arg Task argument. * @param debug Debug flag. */ - private VisorCacheStopJob(VisorCacheStopTaskArg cacheName, boolean debug) { - super(cacheName, debug); + private VisorCacheStopJob(VisorCacheStopTaskArg arg, boolean debug) { + super(arg, debug); } /** {@inheritDoc} */ @Override protected Void run(VisorCacheStopTaskArg arg) { - String cacheName = arg.getCacheName(); + Collection<String> cacheNames = F.isEmpty(arg.getCacheNames()) + ? F.asList(arg.getCacheName()) + : new HashSet<>(arg.getCacheNames()); - IgniteCache cache = ignite.cache(cacheName); + if (F.isEmpty(cacheNames)) + throw new IllegalStateException("Cache names was not specified."); - if (cache == null) - throw new IllegalStateException("Failed to find cache for name: " + cacheName); - - cache.destroy(); + ignite.destroyCaches(cacheNames); return null; } http://git-wip-us.apache.org/repos/asf/ignite/blob/5c209785/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTaskArg.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTaskArg.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTaskArg.java index 4976036..77156ab 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTaskArg.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheStopTaskArg.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.visor.cache; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; +import java.util.List; import org.apache.ignite.internal.util.typedef.internal.S; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.internal.visor.VisorDataTransferObject; @@ -34,6 +35,9 @@ public class VisorCacheStopTaskArg extends VisorDataTransferObject { /** Cache name. */ private String cacheName; + /** Cache names. */ + private List<String> cacheNames; + /** * Default constructor. */ @@ -49,20 +53,43 @@ public class VisorCacheStopTaskArg extends VisorDataTransferObject { } /** + * @param cacheNames Cache names. + */ + public VisorCacheStopTaskArg(List<String> cacheNames) { + this.cacheNames = cacheNames; + } + + /** * @return Cache name. */ public String getCacheName() { return cacheName; } + /** + * @return Cache names. + */ + public List<String> getCacheNames() { + return cacheNames; + } + + /** {@inheritDoc} */ + @Override public byte getProtocolVersion() { + return V2; + } + /** {@inheritDoc} */ @Override protected void writeExternalData(ObjectOutput out) throws IOException { U.writeString(out, cacheName); + U.writeCollection(out, cacheNames); } /** {@inheritDoc} */ @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException { cacheName = U.readString(in); + + if (protoVer > V1) + cacheNames = U.readList(in); } /** {@inheritDoc} */
