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?
   - 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?

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

Reply via email to