Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id EDEEF200CE6 for ; Fri, 15 Sep 2017 12:00:43 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id ECB8F1609CF; Fri, 15 Sep 2017 10:00:43 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 448DD1609D1 for ; Fri, 15 Sep 2017 12:00:42 +0200 (CEST) Received: (qmail 58941 invoked by uid 500); 15 Sep 2017 10:00:41 -0000 Mailing-List: contact commits-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list commits@ignite.apache.org Received: (qmail 58920 invoked by uid 99); 15 Sep 2017 10:00:40 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 15 Sep 2017 10:00:40 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 9799CF55C8; Fri, 15 Sep 2017 10:00:39 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: vozerov@apache.org To: commits@ignite.apache.org Date: Fri, 15 Sep 2017 10:00:41 -0000 Message-Id: In-Reply-To: <347ce931c3f34be7846ff6cda4937fcd@git.apache.org> References: <347ce931c3f34be7846ff6cda4937fcd@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [3/4] ignite git commit: ignite-6289 Remove "allOrNone" flag from IgniteServices#deployAll method archived-at: Fri, 15 Sep 2017 10:00:44 -0000 ignite-6289 Remove "allOrNone" flag from IgniteServices#deployAll method Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/91cf66e7 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/91cf66e7 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/91cf66e7 Branch: refs/heads/ignite-5896 Commit: 91cf66e7083e4e73b2bcd08e81fdb29cf06ddc59 Parents: 50c7002 Author: Denis Mekhanikov Authored: Fri Sep 15 11:19:18 2017 +0300 Committer: sboikov Committed: Fri Sep 15 11:19:18 2017 +0300 ---------------------------------------------------------------------- .../java/org/apache/ignite/IgniteServices.java | 44 +++--- .../ignite/internal/IgniteServicesImpl.java | 13 +- .../GridServiceDeploymentCompoundFuture.java | 129 ++--------------- .../service/GridServiceProcessor.java | 64 +++------ .../service/PreparedConfigurations.java | 8 +- ...ServiceDeploymentCompoundFutureSelfTest.java | 121 +--------------- ...GridServiceProcessorBatchDeploySelfTest.java | 137 +++++-------------- 7 files changed, 95 insertions(+), 421 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/91cf66e7/modules/core/src/main/java/org/apache/ignite/IgniteServices.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteServices.java b/modules/core/src/main/java/org/apache/ignite/IgniteServices.java index e161b11..2222db0 100644 --- a/modules/core/src/main/java/org/apache/ignite/IgniteServices.java +++ b/modules/core/src/main/java/org/apache/ignite/IgniteServices.java @@ -435,46 +435,40 @@ public interface IgniteServices extends IgniteAsyncSupport { /** * Deploys multiple services described by provided configurations. Depending on specified parameters, multiple - * instances of the same service may be deployed (see {@link ServiceConfiguration}). - * Whenever topology changes, Ignite will automatically rebalance - * the deployed services within cluster to make sure that each node will end up with - * about equal number of deployed instances whenever possible. + * instances of the same service may be deployed (see {@link ServiceConfiguration}). Whenever topology changes, + * Ignite will automatically rebalance the deployed services within cluster to make sure that each node will end up + * with about equal number of deployed instances whenever possible. * - * If deployment fails, then {@link ServiceDeploymentException} containing a list of failed services will be - * thrown. It is guaranteed that all services that were provided to this method and are not present in the list of - * failed services are successfully deployed by the moment of the exception being thrown. + * If deployment of some of the provided services fails, then {@link ServiceDeploymentException} containing a list + * of failed services will be thrown. It is guaranteed that all services that were provided to this method and are + * not present in the list of failed services are successfully deployed by the moment of the exception being thrown. + * Note that if exception is thrown, then partial deployment may have occurred. * * @param cfgs {@link Collection} of service configurations to be deployed. - * @param allOrNone Specifies behavior in case when errors during deployment occur. If {@code true}, then two - * outcomes are possible: either all services will be deployed, or none of them. If {@code false}, then partial - * deployments are permitted. * @throws ServiceDeploymentException If failed to deploy services. * @see IgniteServices#deploy(ServiceConfiguration) - * @see IgniteServices#deployAllAsync(Collection, boolean) + * @see IgniteServices#deployAllAsync(Collection) */ - public void deployAll(Collection cfgs, boolean allOrNone) throws ServiceDeploymentException; + public void deployAll(Collection cfgs) throws ServiceDeploymentException; /** * Asynchronously deploys multiple services described by provided configurations. Depending on specified parameters, - * multiple instances of the same service may be deployed (see {@link ServiceConfiguration}). - * Whenever topology changes, Ignite will automatically rebalance - * the deployed services within cluster to make sure that each node will end up with - * about equal number of deployed instances whenever possible. + * multiple instances of the same service may be deployed (see {@link ServiceConfiguration}). Whenever topology + * changes, Ignite will automatically rebalance the deployed services within cluster to make sure that each node + * will end up with about equal number of deployed instances whenever possible. * - * If deployment fails, then {@link ServiceDeploymentException} containing a list of failed services will be - * thrown from {@link IgniteFuture#get get()} method of the returned future. It is guaranteed that all services, - * that were provided to this method and are not present in the list of failed services, are successfully deployed - * by the moment of the exception being thrown. + * If deployment of some of the provided services fails, then {@link ServiceDeploymentException} containing a list + * of failed services will be thrown from {@link IgniteFuture#get get()} method of the returned future. It is + * guaranteed that all services, that were provided to this method and are not present in the list of failed + * services, are successfully deployed by the moment of the exception being thrown. Note that if exception is + * thrown, then partial deployment may have occurred. * * @param cfgs {@link Collection} of service configurations to be deployed. - * @param allOrNone Specifies behavior in case when errors during deployment occur. If {@code true}, then two - * outcomes are possible: either all services will be deployed, or none of them. If {@code false}, then partial - * deployments are permitted. * @return a Future representing pending completion of the operation. * @see IgniteServices#deploy(ServiceConfiguration) - * @see IgniteServices#deployAll(Collection,boolean) + * @see IgniteServices#deployAll(Collection) */ - public IgniteFuture deployAllAsync(Collection cfgs, boolean allOrNone); + public IgniteFuture deployAllAsync(Collection cfgs); /** * Cancels service deployment. If a service with specified name was deployed on the grid, http://git-wip-us.apache.org/repos/asf/ignite/blob/91cf66e7/modules/core/src/main/java/org/apache/ignite/internal/IgniteServicesImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteServicesImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteServicesImpl.java index ad455d8..00d6078 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteServicesImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteServicesImpl.java @@ -218,24 +218,24 @@ public class IgniteServicesImpl extends AsyncSupportAdapter implements IgniteSer @Override public void deploy(ServiceConfiguration cfg) { A.notNull(cfg, "cfg"); - deployAll(Collections.singleton(cfg), false); + deployAll(Collections.singleton(cfg)); } /** {@inheritDoc} */ @Override public IgniteFuture deployAsync(ServiceConfiguration cfg) { A.notNull(cfg, "cfg"); - return deployAllAsync(Collections.singleton(cfg), false); + return deployAllAsync(Collections.singleton(cfg)); } /** {@inheritDoc} */ - @Override public void deployAll(Collection cfgs, boolean allOrNone) { + @Override public void deployAll(Collection cfgs) { A.notNull(cfgs, "cfgs"); guard(); try { - saveOrGet(ctx.service().deployAll(cfgs, allOrNone)); + saveOrGet(ctx.service().deployAll(cfgs)); } catch (IgniteCheckedException e) { throw U.convertException(e); @@ -246,14 +246,13 @@ public class IgniteServicesImpl extends AsyncSupportAdapter implements IgniteSer } /** {@inheritDoc} */ - @Override public IgniteFuture deployAllAsync(Collection cfgs, - boolean allOrNone) { + @Override public IgniteFuture deployAllAsync(Collection cfgs) { A.notNull(cfgs, "cfgs"); guard(); try { - return (IgniteFuture)new IgniteFutureImpl<>(ctx.service().deployAll(cfgs, allOrNone)); + return (IgniteFuture)new IgniteFutureImpl<>(ctx.service().deployAll(cfgs)); } finally { unguard(); http://git-wip-us.apache.org/repos/asf/ignite/blob/91cf66e7/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceDeploymentCompoundFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceDeploymentCompoundFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceDeploymentCompoundFuture.java index bbf0370..45ccc24 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceDeploymentCompoundFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceDeploymentCompoundFuture.java @@ -20,140 +20,51 @@ package org.apache.ignite.internal.processors.service; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; -import java.util.List; import org.apache.ignite.IgniteCheckedException; -import org.apache.ignite.IgniteLogger; -import org.apache.ignite.internal.GridKernalContext; import org.apache.ignite.internal.IgniteInternalFuture; import org.apache.ignite.internal.util.future.GridCompoundFuture; -import org.apache.ignite.internal.util.typedef.internal.U; -import org.apache.ignite.lang.IgniteInClosure; import org.apache.ignite.services.ServiceConfiguration; import org.apache.ignite.services.ServiceDeploymentException; import org.jetbrains.annotations.Nullable; /** - * Service deployment compound future, {@code allOrNone} parameter specifies failing policy. - *

- * If {@code allOrNone} parameter is set to {@code false}, then this future waits for completion of all child futures. - * If any exceptions are thrown during deployment, then {@link IgniteCheckedException} with {@link - * ServiceDeploymentException} as a cause will be thrown from {@link IgniteInternalFuture#get get()} method after all - * futures complete or fail. Inner exception will contain configurations of failed services. + * Service deployment compound future. If any exceptions are thrown during deployment, then {@link + * IgniteCheckedException} with {@link ServiceDeploymentException} as a cause will be thrown from {@link + * IgniteInternalFuture#get get()} method after all futures complete or fail. Inner exception will contain + * configurations of failed services. */ public class GridServiceDeploymentCompoundFuture extends GridCompoundFuture { - /** */ - private final boolean allOrNone; - - /** Kernal context. */ - private final GridKernalContext ctx; - - /** Logger. */ - private final IgniteLogger log; - /** Names of services written to cache during current deployment. */ private Collection svcsToRollback; /** */ private volatile ServiceDeploymentException err; - /** - * @param allOrNone Failing policy. - * @param ctx Kernal context. - */ - GridServiceDeploymentCompoundFuture(boolean allOrNone, GridKernalContext ctx) { - this.allOrNone = allOrNone; - this.ctx = ctx; - this.log = ctx.log(getClass()); - } - /** {@inheritDoc} */ @Override protected boolean processFailure(Throwable err, IgniteInternalFuture fut) { assert fut instanceof GridServiceDeploymentFuture : fut; GridServiceDeploymentFuture depFut = (GridServiceDeploymentFuture)fut; - if (allOrNone) { - if (initialized()) { - onDone(new IgniteCheckedException( - new ServiceDeploymentException("Failed to deploy provided services.", err, getConfigurations()))); - } - else { - synchronized (this) { - if (this.err == null) { - this.err = new ServiceDeploymentException("Failed to deploy provided services.", err, - new ArrayList()); - } - else - this.err.addSuppressed(err); - } + synchronized (this) { + if (this.err == null) { + this.err = new ServiceDeploymentException("Failed to deploy some services.", + new ArrayList()); } - } - else { - synchronized (this) { - if (this.err == null) - this.err = new ServiceDeploymentException("Failed to deploy some services.", - new ArrayList()); - this.err.getFailedConfigurations().add(depFut.configuration()); - this.err.addSuppressed(err); - } + this.err.getFailedConfigurations().add(depFut.configuration()); + this.err.addSuppressed(err); } return true; } - /** - * Marks this future as initialized. Will complete with error if failures before initialization occurred and - * all-or-none policy is followed. - */ - public void serviceDeploymentMarkInitialized() { - if (allOrNone && this.err != null) { - this.err.getFailedConfigurations().addAll(getConfigurations()); - - onDone(new IgniteCheckedException(this.err)); - } - else - super.markInitialized(); - } - /** {@inheritDoc} */ - @Override protected boolean onDone(@Nullable final Object res, @Nullable Throwable err, final boolean cancel) { - final Throwable resErr; - + @Override protected boolean onDone(@Nullable Object res, @Nullable Throwable err, boolean cancel) { if (err == null && this.err != null) - resErr = new IgniteCheckedException(this.err); - else - resErr = err; - - if (allOrNone && this.err != null && svcsToRollback != null) { - U.warn(log, "Failed to deploy provided services. The following services will be cancelled:" + svcsToRollback); - - IgniteInternalFuture fut = ctx.service().cancelAll(svcsToRollback); - - /* - Can not call fut.get() since it is possible we are in system pool now and - fut also should be completed from system pool. - */ - fut.listen(new IgniteInClosure() { - @Override public void apply(IgniteInternalFuture fut) { - try { - fut.get(); - } - catch (IgniteCheckedException e) { - U.error(log, "Failed to cancel deployed services.", e); - } - finally { - svcsToRollback = null; - } - - GridServiceDeploymentCompoundFuture.super.onDone(res, resErr, cancel); - } - }); - - return false; - } + err = new IgniteCheckedException(this.err); - return super.onDone(res, resErr, cancel); + return super.onDone(res, err, cancel); } /** @@ -180,18 +91,4 @@ public class GridServiceDeploymentCompoundFuture extends GridCompoundFuture getConfigurations() { - Collection> futs = futures(); - - List cfgs = new ArrayList<>(futs.size()); - - for (IgniteInternalFuture fut : futs) - cfgs.add(((GridServiceDeploymentFuture)fut).configuration()); - - return cfgs; - } } http://git-wip-us.apache.org/repos/asf/ignite/blob/91cf66e7/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java index f750053..9272760 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/GridServiceProcessor.java @@ -270,7 +270,7 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite c.setNodeFilter(ctx.cluster().get().forServers().predicate()); } - deployAll(Arrays.asList(cfgs), true).get(); + deployAll(Arrays.asList(cfgs)).get(); } if (log.isDebugEnabled()) @@ -495,10 +495,9 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite /** * @param cfgs Service configurations. - * @param allOrNone Failure processing policy. * @return Configurations to deploy. */ - private PreparedConfigurations prepareServiceConfigurations(Collection cfgs, boolean allOrNone) { + private PreparedConfigurations prepareServiceConfigurations(Collection cfgs) { List cfgsCp = new ArrayList<>(cfgs.size()); Marshaller marsh = ctx.config().getMarshaller(); @@ -545,40 +544,28 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite } if (err != null) { - if (allOrNone) { - return new PreparedConfigurations(null, - null, - new IgniteCheckedException( - new ServiceDeploymentException("None of the provided services were deplyed.", err, cfgs))); - } - else { - if (failedFuts == null) - failedFuts = new ArrayList<>(); + if (failedFuts == null) + failedFuts = new ArrayList<>(); - GridServiceDeploymentFuture fut = new GridServiceDeploymentFuture(cfg); + GridServiceDeploymentFuture fut = new GridServiceDeploymentFuture(cfg); - fut.onDone(err); + fut.onDone(err); - failedFuts.add(fut); - } + failedFuts.add(fut); } } - return new PreparedConfigurations(cfgsCp, failedFuts, null); + return new PreparedConfigurations(cfgsCp, failedFuts); } /** * @param cfgs Service configurations. - * @param allOrNone Failure processing policy. * @return Future for deployment. */ - public IgniteInternalFuture deployAll(Collection cfgs, boolean allOrNone) { + public IgniteInternalFuture deployAll(Collection cfgs) { assert cfgs != null; - PreparedConfigurations srvCfg = prepareServiceConfigurations(cfgs, allOrNone); - - if (srvCfg.err != null) - return new GridFinishedFuture<>(srvCfg.err); + PreparedConfigurations srvCfg = prepareServiceConfigurations(cfgs); List cfgsCp = srvCfg.cfgs; @@ -593,7 +580,7 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite GridServiceDeploymentCompoundFuture res; while (true) { - res = new GridServiceDeploymentCompoundFuture(allOrNone, ctx); + res = new GridServiceDeploymentCompoundFuture(); if (ctx.deploy().enabled()) ctx.cache().context().deploy().ignoreOwnership(true); @@ -610,16 +597,8 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite catch (IgniteCheckedException e) { if (X.hasCause(e, ClusterTopologyCheckedException.class)) throw e; // Retry. - - if (allOrNone) { - for (String name : res.servicesToRollback()) - depFuts.remove(name).onDone(e); - - res.onDone(new IgniteCheckedException(new ServiceDeploymentException( - "Failed to deploy provided services.", e, cfgs))); - - return res; - } + else + U.error(log, e.getMessage()); } } @@ -653,7 +632,7 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite if (ctx.clientDisconnected()) { IgniteClientDisconnectedCheckedException err = new IgniteClientDisconnectedCheckedException(ctx.cluster().clientReconnectFuture(), - "Failed to deploy services, client node disconnected: " + cfgs); + "Failed to deploy services, client node disconnected: " + cfgs); for (String name : res.servicesToRollback()) { GridServiceDeploymentFuture fut = depFuts.remove(name); @@ -670,7 +649,7 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite res.add(fut, false); } - res.serviceDeploymentMarkInitialized(); + res.markInitialized(); return res; } @@ -707,12 +686,8 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite if (dep != null) { if (!dep.configuration().equalsIgnoreNodeFilter(cfg)) { - String err = "Failed to deploy service (service already exists with different " + - "configuration) [deployed=" + dep.configuration() + ", new=" + cfg + ']'; - - U.error(log, err); - - throw new IgniteCheckedException(err); + throw new IgniteCheckedException("Failed to deploy service (service already exists with " + + "different configuration) [deployed=" + dep.configuration() + ", new=" + cfg + ']'); } else { res.add(fut, false); @@ -755,7 +730,7 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite public IgniteInternalFuture deploy(ServiceConfiguration cfg) { A.notNull(cfg, "cfg"); - return deployAll(Collections.singleton(cfg), false); + return deployAll(Collections.singleton(cfg)); } /** @@ -771,7 +746,8 @@ public class GridServiceProcessor extends GridProcessorAdapter implements Ignite if (X.hasCause(e, ClusterTopologyCheckedException.class)) { if (log.isDebugEnabled()) log.debug("Topology changed while cancelling service (will retry): " + e.getMessage()); - } else { + } + else { U.error(log, "Failed to undeploy service: " + name, e); return new GridFinishedFuture<>(e); http://git-wip-us.apache.org/repos/asf/ignite/blob/91cf66e7/modules/core/src/main/java/org/apache/ignite/internal/processors/service/PreparedConfigurations.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/PreparedConfigurations.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/PreparedConfigurations.java index a581e15..dc41c22 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/PreparedConfigurations.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/PreparedConfigurations.java @@ -31,19 +31,13 @@ class PreparedConfigurations { /** */ final List failedFuts; - /** */ - final Exception err; - /** * @param cfgs Configurations to deploy. * @param failedFuts Finished futures for failed configurations. - * @param err Error if need to stop deploy. */ - PreparedConfigurations(List cfgs, List failedFuts, - Exception err) { + PreparedConfigurations(List cfgs, List failedFuts) { this.cfgs = cfgs; this.failedFuts = failedFuts; - this.err = err; } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/ignite/blob/91cf66e7/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceDeploymentCompoundFutureSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceDeploymentCompoundFutureSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceDeploymentCompoundFutureSelfTest.java index ca95198..bcc0504 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceDeploymentCompoundFutureSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceDeploymentCompoundFutureSelfTest.java @@ -22,9 +22,7 @@ import java.util.Collection; import java.util.List; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.IgniteException; -import org.apache.ignite.internal.GridKernalContext; import org.apache.ignite.internal.IgniteFutureTimeoutCheckedException; -import org.apache.ignite.internal.IgniteKernal; import org.apache.ignite.internal.util.future.GridFutureAdapter; import org.apache.ignite.internal.util.typedef.internal.U; import org.apache.ignite.services.ServiceConfiguration; @@ -33,16 +31,6 @@ import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest; /** */ public class GridServiceDeploymentCompoundFutureSelfTest extends GridCommonAbstractTest { - /** */ - private static GridKernalContext ctx; - - /** {@inheritDoc} */ - @Override protected void beforeTestsStarted() throws Exception { - IgniteKernal kernal = (IgniteKernal)startGrid(0); - - ctx = kernal.context(); - } - /** {@inheritDoc} */ @Override protected void afterTestsStopped() throws Exception { stopAllGrids(); @@ -51,8 +39,8 @@ public class GridServiceDeploymentCompoundFutureSelfTest extends GridCommonAbstr /** * @throws Exception If failed. */ - public void testWaitForCompletionOnFailingFuturePartial() throws Exception { - GridServiceDeploymentCompoundFuture compFut = new GridServiceDeploymentCompoundFuture(false, ctx); + public void testWaitForCompletionOnFailingFuture() throws Exception { + GridServiceDeploymentCompoundFuture compFut = new GridServiceDeploymentCompoundFuture(); int failingFutsNum = 2; @@ -80,7 +68,7 @@ public class GridServiceDeploymentCompoundFutureSelfTest extends GridCommonAbstr compFut.add(fut); } - compFut.serviceDeploymentMarkInitialized(); + compFut.markInitialized(); List causes = new ArrayList<>(); @@ -126,109 +114,6 @@ public class GridServiceDeploymentCompoundFutureSelfTest extends GridCommonAbstr } /** - * @throws Exception if failed. - */ - public void testFailAllAfterInitialized() throws Exception { - GridServiceDeploymentCompoundFuture compFut = new GridServiceDeploymentCompoundFuture(true, ctx); - - ServiceConfiguration failingCfg = config("Failed"); - - GridServiceDeploymentFuture failingFut = new GridServiceDeploymentFuture(failingCfg); - - compFut.add(failingFut); - - int futsNum = 5; - - List cfgs = new ArrayList<>(futsNum + 1); - - cfgs.add(failingCfg); - - for (int i = 0; i < futsNum; i++) { - ServiceConfiguration cfg = config(String.valueOf(i)); - - cfgs.add(cfg); - - compFut.add(new GridServiceDeploymentFuture(cfg)); - } - - compFut.serviceDeploymentMarkInitialized(); - - Exception expCause = new Exception("Test error"); - - failingFut.onDone(expCause); - - assertFailAll(compFut, cfgs, expCause); - } - - /** - * @throws Exception if failed. - */ - public void testFailAllBeforeInitialized() throws Exception { - GridServiceDeploymentCompoundFuture compFut = new GridServiceDeploymentCompoundFuture(true, ctx); - - ServiceConfiguration failingCfg = config("Failed"); - - GridServiceDeploymentFuture failingFut = new GridServiceDeploymentFuture(failingCfg); - - Exception expCause = new Exception("Test error"); - - failingFut.onDone(expCause); - - compFut.add(failingFut); - - assertFalse(compFut.isDone()); - - int futsNum = 5; - - List cfgs = new ArrayList<>(futsNum + 1); - - cfgs.add(failingCfg); - - for (int i = 0; i < futsNum; i++) { - ServiceConfiguration cfg = config(String.valueOf(i)); - - cfgs.add(cfg); - - compFut.add(new GridServiceDeploymentFuture(cfg)); - } - - compFut.serviceDeploymentMarkInitialized(); - - assertFailAll(compFut, cfgs, expCause); - } - - /** - * Try waiting for the future completion and check that a proper exception is thrown. - * - * @param fut Future. - * @param expCfgs Expected cfgs. - * @param expCause Expected cause. - */ - private void assertFailAll(GridServiceDeploymentCompoundFuture fut, Collection expCfgs, - Exception expCause) { - try { - fut.get(); - - fail("Should never reach here."); - } - catch (IgniteCheckedException ce) { - log.info("Expected exception: " + ce.getMessage()); - - IgniteException e = U.convertException(ce); - - assertTrue(e instanceof ServiceDeploymentException); - - assertEqualsCollections(expCfgs, ((ServiceDeploymentException)e).getFailedConfigurations()); - - Throwable actCause = e.getCause(); - - assertTrue(actCause instanceof IgniteCheckedException); - - assertEquals(expCause, actCause.getCause()); - } - } - - /** * @param name Name. * @return Dummy configuration with a specified name. */ http://git-wip-us.apache.org/repos/asf/ignite/blob/91cf66e7/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorBatchDeploySelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorBatchDeploySelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorBatchDeploySelfTest.java index dc19f33..f0e2e71 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorBatchDeploySelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/GridServiceProcessorBatchDeploySelfTest.java @@ -100,7 +100,7 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT subscribeExeLatch(cfgs, latch); - client.services().deployAll(cfgs, false); + client.services().deployAll(cfgs); assertTrue("Waiting for services deployment timed out.", latch.await(30, TimeUnit.SECONDS)); @@ -119,7 +119,7 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT subscribeExeLatch(cfgs, latch); - IgniteFuture fut = client.services().deployAllAsync(cfgs, false); + IgniteFuture fut = client.services().deployAllAsync(cfgs); fut.get(); @@ -129,7 +129,7 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT } /** - * TODO: enable when IGNITE-6259 is fixed + * TODO: enable when IGNITE-6259 is fixed. * * @throws Exception If failed. */ @@ -166,7 +166,7 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT while (from < numServices) { int to = Math.min(numServices, from + batchSize); - client.services().deployAllAsync(cfgs.subList(from, to), false).get(5000); + client.services().deployAllAsync(cfgs.subList(from, to)).get(5000); from = to; } @@ -183,7 +183,7 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT } /** - * TODO: enable when IGNITE-6259 is fixed + * TODO: enable when IGNITE-6259 is fixed. * * @throws Exception If failed. */ @@ -231,7 +231,7 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT failingCfgs.add(failingCfg); try { - client.services().deployAllAsync(cfgsBatch, false).get(5000); + client.services().deployAllAsync(cfgsBatch).get(5000); fail("Should never reach here."); } @@ -264,37 +264,22 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT /** * @throws Exception If failed. */ - public void testDeployAllFailAll() throws Exception { - deployAllFail(false, true); + public void testDeployAllFail() throws Exception { + deployAllFail(false); } /** * @throws Exception If failed. */ - public void testDeployAllPartial() throws Exception { - deployAllFail(false, false); - } - - /** - * @throws Exception If failed. - */ - public void testDeployAllAsyncFailAll() throws Exception { - deployAllFail(true, true); - } - - /** - * @throws Exception If failed. - */ - public void testDeployAllAsyncFailPartial() throws Exception { - deployAllFail(true, false); + public void testDeployAllAsyncFail() throws Exception { + deployAllFail(true); } /** * @param async If {@code true}, then asynchronous method of deployment will be performed. - * @param allOrNone Failing strategy. * @throws Exception If failed. */ - private void deployAllFail(boolean async, boolean allOrNone) throws Exception { + private void deployAllFail(boolean async) throws Exception { Ignite client = grid(CLIENT_NODE_NAME); CountDownLatch latch = new CountDownLatch(NUM_SERVICES - 1); @@ -307,20 +292,11 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT failingCfg.setName(null); - assertFailingDeploy(client, async, allOrNone, cfgs, failingCfg); + assertFailingDeploy(client, async, cfgs, failingCfg); - if (allOrNone) { - assertFalse("Some of the services were deployed.", latch.await(2, TimeUnit.SECONDS)); - - assertEquals(NUM_SERVICES - 1, latch.getCount()); - - assertTrue(client.services().serviceDescriptors().isEmpty()); - } - else { - assertTrue("Waiting for services deployment timed out.", latch.await(30, TimeUnit.SECONDS)); + assertTrue("Waiting for services deployment timed out.", latch.await(30, TimeUnit.SECONDS)); - assertDeployedServices(client, cfgs.subList(0, cfgs.size() - 1)); - } + assertDeployedServices(client, cfgs.subList(0, cfgs.size() - 1)); } /** @@ -338,8 +314,8 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT List fstBatch = cfgs.subList(0, NUM_SERVICES / 2); List sndBatch = cfgs.subList(NUM_SERVICES / 4, NUM_SERVICES); - IgniteFuture fstFut = client.services().deployAllAsync(fstBatch, false); - IgniteFuture sndFut = client.services().deployAllAsync(sndBatch, false); + IgniteFuture fstFut = client.services().deployAllAsync(fstBatch); + IgniteFuture sndFut = client.services().deployAllAsync(sndBatch); fstFut.get(); sndFut.get(); @@ -352,32 +328,12 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT /** * @throws Exception If failed. */ - public void testClashingNamesFailAll() throws Exception { - clashingNamesFail(true); - } - - /** - * @throws Exception If failed. - */ - public void testClashingNamesPartial() throws Exception { - clashingNamesFail(false); - } - - /** - * @param allOrNone Failing strategy. - * @throws Exception If failed. - */ - private void clashingNamesFail(boolean allOrNone) throws Exception { + public void testClashingNamesFail() throws Exception { Ignite client = grid(CLIENT_NODE_NAME); List cfgs = getConfigs(client.cluster().forServers().predicate(), NUM_SERVICES); - int numDepSvcs; - - if (allOrNone) - numDepSvcs = NUM_SERVICES / 2; - else - numDepSvcs = NUM_SERVICES - 1; + int numDepSvcs = NUM_SERVICES - 1; CountDownLatch latch = new CountDownLatch(numDepSvcs); @@ -386,13 +342,13 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT subscribeExeLatch(cfgs, latch); - IgniteFuture fut = client.services().deployAllAsync(fstBatch, false); + IgniteFuture fut = client.services().deployAllAsync(fstBatch); ServiceConfiguration failingCfg = cfgs.get(NUM_SERVICES - 1); failingCfg.setName(null); - assertFailingDeploy(client, false, allOrNone, sndBatch, failingCfg); + assertFailingDeploy(client, false, sndBatch, failingCfg); fut.get(); @@ -404,33 +360,12 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT /** * @throws Exception If failed. */ - public void testClashingNameDifferentConfigFailAll() throws Exception { - testClashingNameDifferentConfig(true); - } - - /** - * @throws Exception If failed. - */ - public void testClashingNameDifferentConfigPartial() throws Exception { - testClashingNameDifferentConfig(false); - } - - /** - * @param allOrNone Failing strategy. - * @throws Exception If failed. - */ - private void testClashingNameDifferentConfig(boolean allOrNone) throws Exception { + public void testClashingNameDifferentConfig() throws Exception { Ignite client = grid(CLIENT_NODE_NAME); List cfgs = getConfigs(client.cluster().forServers().predicate(), NUM_SERVICES); - int numDepSvcs; - - if (allOrNone) - numDepSvcs = NUM_SERVICES / 2; - else - numDepSvcs = NUM_SERVICES - 1; - + int numDepSvcs = NUM_SERVICES - 1; CountDownLatch latch = new CountDownLatch(numDepSvcs); @@ -439,7 +374,7 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT subscribeExeLatch(cfgs, latch); - client.services().deployAll(fstBatch, false); + client.services().deployAll(fstBatch); ServiceConfiguration failingCfg = copyService(cfgs.get(NUM_SERVICES - 1)); @@ -449,7 +384,7 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT sndBatch.add(failingCfg); - assertFailingDeploy(client, false, allOrNone, sndBatch, failingCfg); + assertFailingDeploy(client, false, sndBatch, failingCfg); assertTrue("Waiting for services deployment timed out.", latch.await(30, TimeUnit.SECONDS)); @@ -468,7 +403,7 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT subscribeExeLatch(cfgs, latch); - client.services().deployAll(cfgs, true); + client.services().deployAll(cfgs); latch.await(30, TimeUnit.SECONDS); @@ -489,7 +424,7 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT subscribeExeLatch(cfgs, latch); - client.services().deployAll(cfgs, true); + client.services().deployAll(cfgs); latch.await(30, TimeUnit.SECONDS); @@ -501,7 +436,7 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT } /** - * TODO: enable when IGNITE-6259 is fixed + * TODO: enable when IGNITE-6259 is fixed. * * @throws Exception If failed. */ @@ -516,7 +451,7 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT subscribeExeLatch(cfgs, latch); - client.services().deployAll(cfgs, true); + client.services().deployAll(cfgs); latch.await(30, TimeUnit.SECONDS); @@ -564,7 +499,7 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT subscribeExeLatch(cfgs, latch); - client.services().deployAll(cfgs, true); + client.services().deployAll(cfgs); latch.await(30, TimeUnit.SECONDS); @@ -595,35 +530,29 @@ public class GridServiceProcessorBatchDeploySelfTest extends GridCommonAbstractT * @param client Client. * @param async If {@code true}, then async version of deploy method will be used. * @param cfgs Service configurations. - * @param allOrNone Failing policy. * @param failingCfg Configuration of the failing service. * @throws Exception If failed. */ - private void assertFailingDeploy(Ignite client, boolean async, boolean allOrNone, List cfgs, + private void assertFailingDeploy(Ignite client, boolean async, List cfgs, ServiceConfiguration failingCfg) throws Exception { IgniteFuture fut = null; if (async) - fut = client.services().deployAllAsync(cfgs, allOrNone); + fut = client.services().deployAllAsync(cfgs); try { if (async) fut.get(); else - client.services().deployAll(cfgs, allOrNone); + client.services().deployAll(cfgs); fail("Should never reach here."); } catch (ServiceDeploymentException e) { info("Expected exception: " + e.getMessage()); - Collection expFails; - - if (allOrNone) - expFails = cfgs; - else - expFails = Collections.singleton(failingCfg); + Collection expFails = Collections.singleton(failingCfg); Collection actFails = e.getFailedConfigurations();