ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Denis Mekhanikov <dmekhani...@gmail.com>
Subject Re: Batch service deployment
Date Tue, 15 Aug 2017 08:31:38 GMT
Dmitriy, thank you for your reply!

I see a possibility of a bad scenario here. If we use deployAllAsync method
and it throws an exception, then the constructed future won't be returned
and we won't have a way to wait for the rest of the services to deploy.
Maybe we should return some king of deployment result, containing a future
along with a collection of failed services, instead of throwing an
exception?

пн, 14 авг. 2017 г. в 18:03, Dmitriy Setrakyan <dsetrakyan@apache.org>:

> Hi Denis, I agree, we should have an API for batch service deployment. My
> comments are inline...
>
> On Mon, Aug 14, 2017 at 2:22 AM, Denis Mekhanikov <dmekhanikov@gmail.com>
> wrote:
>
> > Hi Igniters!
> >
> > Currently Ignite doesn't have support for batch service deployment, but
> it
> > may be a very useful feature in case of a big number of nodes in a
> cluster
> > and services to be deployed. Each deployment includes write into an
> > internal transactional cache, which is the longest part of the procedure.
> >
> > I propose to optimize it by performing multiple writes in a single
> > transaction. It implies an introduction of a few new methods in
> > IgniteServices interface.
> > I am thinking about the following signatures:
> >
> >   void deployAll(Iterable<ServiceConfiguration> cfgs) throws
> > IgniteException;
> >   IgniteFuture<Void> deployAllAsync(Iterable<ServiceConfiguration>
> > cfgs) throws IgniteException;
> >
> > I'd like to know your opinion on the following questions:
> >
> >    - Do you agree with the proposed signatures?
> >
>
> Yes, but Iterable should be changed to Collection to be consistent with
> other similar APIs in Ignite.
>
>
> >    - What should happen in case of a failure (some of the configurations
> >    don't pass validation, or a service with specified name but different
> >    configuration already exists)? Should partial deployments be performed
> > in
> >    case when some of them fail?
> >
>
> Yes, we should allow partial deployment. The exception thrown should have a
> collection of services that have failed deployment. It looks like you will
> need to create ServiceDeploymentException (extends IgniteException) to
> handle this case (in which case, you have to make sure that other deploy
> methods also throw it).
>
>
> >
> > Regarding the second question I think that we shouldn't deploy any
> services
> > in a batch if we encounter any problems with some of them.
> >
> > Also cancelAll method may be optimized in a similar way, but no interface
> > changes are needed there.
> >
> > Ticket: https://issues.apache.org/jira/browse/IGNITE-5145
> >
> > --
> > Cheers,
> > Denis Mekhanikov
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message