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
