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 B78C9200D31 for ; Sat, 4 Nov 2017 16:27:23 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id B61DE160BE7; Sat, 4 Nov 2017 15:27:23 +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 5ED80160BD5 for ; Sat, 4 Nov 2017 16:27:22 +0100 (CET) Received: (qmail 6748 invoked by uid 500); 4 Nov 2017 15:27:21 -0000 Mailing-List: contact dev-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 dev@ignite.apache.org Received: (qmail 6736 invoked by uid 99); 4 Nov 2017 15:27:21 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 04 Nov 2017 15:27:21 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id 30AFC1A97AC for ; Sat, 4 Nov 2017 15:27:20 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.479 X-Spam-Level: ** X-Spam-Status: No, score=2.479 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=2, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_SORBS_SPAM=0.5, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd2-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gridgain-com.20150623.gappssmtp.com Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id Dpm-hmORf-WE for ; Sat, 4 Nov 2017 15:27:12 +0000 (UTC) Received: from mail-ua0-f169.google.com (mail-ua0-f169.google.com [209.85.217.169]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id CFC3960F60 for ; Sat, 4 Nov 2017 15:27:11 +0000 (UTC) Received: by mail-ua0-f169.google.com with SMTP id v27so3806481uav.7 for ; Sat, 04 Nov 2017 08:27:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gridgain-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=og2OIHfJ/qAmSZ5TtSQxBnNuMvG0lrXwsqEP8bWCDCQ=; b=innbDw7czA7EQCmuSz9B18q5H2jHUq9ZPVcIxwxx0hDBA7DENdEkRFIsn/9cD/bi9n eTE80Ov3tUhDbB7IpdFgsnQ79jc/QnyZDTscyIuUwr/9EIYpD7AfUb7qHxAViEprrJfI N2Q4/pK/i566C3hOj6sAPEVsIPRqpfPgHfOJJjwPHTtc+tYHWr2+0c3QaP7P1Lrfg6qx Yj/unMrqYP5bnREJM0fSxzQ/8BU2wSLCPa1xpcXKlzTndJv9pcIw3+zwuA02i9SjF79/ +7MD3P6cwC2Hg5zjVQfRSsG4FqsZsm8tNxI2IZ8x+YOCMR+IwNZfrgF+W/K4Sjjj6XSh L5tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=og2OIHfJ/qAmSZ5TtSQxBnNuMvG0lrXwsqEP8bWCDCQ=; b=QcDIjOrApw8z6/trvUPaEx0mKKPddhc8ytZ3TlL29bpNc2R+6prowGBL3+GGjB0t1h Jr2BRCTHRsfJoA7rIm/m/0oLJ90HqS5k3Cn15GS+XToxx4ws/Npn9iLiUeLO1HZmYZQ8 xdnLcHcF/ZYkecDSYxDU4XBO0kBzLI9U+5fYSO6rYWCUNTQbpV7Zq1BTBctRAMGQ9yco 5tyKyq7aQOT4dMjH4dVeUDGmh3Y91CKTBUE/oLoA85khPJVXCcm+PNcuhUNvb/4PtOiG So/TtuGYYux30f2BNiGFT8vMaFaFFDmbMMcDcVlAH7ZRJfLfJTvitGssKYfJXbdnG88f sW+g== X-Gm-Message-State: AMCzsaWncy1TTOr2b7n7xOTv9beMhrpdinrdzS9PStCBtdCoAbNE68D9 qVLDOexJg1CPIQuPpMnNpIXPDuE5P6xSMbsNb+pfsw== X-Google-Smtp-Source: ABhQp+QrYjxJy2OefA3Okjb9w+W6poXHdTfHQtInRMi6O9SI81eMGCt9blIBTdqzWlQ2Pxz7Jby5OwvrS4mXU1SQC7Q= X-Received: by 10.159.62.1 with SMTP id o1mr8893998uai.123.1509809230427; Sat, 04 Nov 2017 08:27:10 -0700 (PDT) MIME-Version: 1.0 Received: by 10.103.21.131 with HTTP; Sat, 4 Nov 2017 08:27:09 -0700 (PDT) In-Reply-To: References: <3B2BD029-1490-4A8C-94F5-EF54FB291E99@apache.org> <1503076731467-21066.post@n4.nabble.com> From: Ilya Lantukh Date: Sat, 4 Nov 2017 18:27:09 +0300 Message-ID: Subject: Re: Cluster auto activation design proposal To: dev@ignite.apache.org Content-Type: multipart/alternative; boundary="089e08247778dbce92055d29da8c" archived-at: Sat, 04 Nov 2017 15:27:23 -0000 --089e08247778dbce92055d29da8c Content-Type: text/plain; charset="UTF-8" I assume that BaselineNode is intended to be used instead of ClusterNode during affinity assignment calculation. However, it will require that we change signature of AffinityFunction and AffinityFunctionContext methods, which are part of public API. Can we actually do it? On Sat, Nov 4, 2017 at 5:56 PM, Dmitriy Setrakyan wrote: > Alexey, what is the point of BaselineNode interface? Why not just have > ClusterNode? > > On Fri, Nov 3, 2017 at 11:26 PM, Alexey Goncharuk < > alexey.goncharuk@gmail.com> wrote: > > > Guys, > > > > We are getting closer to the baseline topology finalization. As a first > > step, I would like to request a review of the baseline topology > management > > API. The changes are summarized in [1]. In my opinion, changes are quite > > simple and concise. Also, as a side note, I suggest moving cluster > > activation methods to the IgniteCluter facade as well because the facade > > itself looks like a good place for management API. Looks like the > original > > decision to place it on Ignite was wrong. > > > > Thanks! > > > > [1] https://issues.apache.org/jira/browse/IGNITE-5850 > > > > 2017-09-04 17:46 GMT+03:00 Dmitriy Setrakyan : > > > > > On Mon, Sep 4, 2017 at 6:13 AM, Sergey Chugunov < > > sergey.chugunov@gmail.com > > > > > > > wrote: > > > > > > > Dmitriy, > > > > > > > > I like the idea of ClusterActivator interface. > > > > > > > > From user perspective it provides the same functionality as the > setter > > > but > > > > in more clear and intuitive way. > > > > > > > > > > BTW, I made a naming mistake in the original email. The setter name > > should > > > be "setClusterActivator(...). > > > > > > > > > > > > > > Also it gives us a good place to put all the documentation about the > > > > feature. > > > > > > > > > > Agree. Another advantage is that users can now provide custom logic for > > the > > > initial cluster activation. > > > > > > > > > > > > > > Any other opinions? > > > > > > > > > > Alexey Goncharuk, given that you provided the initial implementation of > > the > > > cluster activation, can you please take a look at this design and > provide > > > comments? > > > > > > > > > > > > > > On Fri, Sep 1, 2017 at 2:35 PM, Dmitriy Setrakyan < > > dsetrakyan@apache.org > > > > > > > > wrote: > > > > > > > > > How about this: > > > > > > > > > > > > > > > > *interface ClusterActivator {* > > > > > > * boolean activate(Collection nodes);**}* > > > > > > > > > > > > > > > Out of the box, we can provide this implementation of the > activation > > > > > filter: > > > > > > > > > > > > > > > > > > > > > > *ClusterInitialActiveSet implements ClusterActivator { * > > > > > > * InigeInitialActiveSet(String... addresses);**}* > > > > > > > > > > > > > > > Then user configuration can look as follows: > > > > > > > > > > *IgniteConfiguration.setActivationFilter(new > > > > > > ClusterInitialActiveSet("1.2.3.4", "4.3.2.1", etc));* > > > > > > > > > > > > > > > Thoughts? > > > > > > > > > > D. > > > > > > > > > > On Fri, Sep 1, 2017 at 1:47 PM, Sergey Chugunov < > > > > sergey.chugunov@gmail.com > > > > > > > > > > > wrote: > > > > > > > > > > > Dmitriy, > > > > > > > > > > > > The idea is interesting however I cannot come up with a clear use > > > case > > > > > > which can be widely adopted. > > > > > > I would give users a simple API at first to cover 80% of their > > needs > > > > and > > > > > > then collect some feedback and start thinking about adding new > > > > > > functionality. > > > > > > > > > > > > Makes sense? > > > > > > > > > > > > Sergey. > > > > > > > > > > > > On Thu, Aug 31, 2017 at 3:55 AM, Dmitriy Setrakyan < > > > > > dsetrakyan@apache.org> > > > > > > wrote: > > > > > > > > > > > > > Hm... Can we also ask user to optionally provide a predicate > > which > > > > will > > > > > > > receive a collection of nodes started so far and return true if > > the > > > > > > > activation should happen? Will it be useful? > > > > > > > > > > > > > > On Wed, Aug 30, 2017 at 6:28 PM, Sergey Chugunov < > > > > > > > sergey.chugunov@gmail.com> > > > > > > > wrote: > > > > > > > > > > > > > > > Nick, > > > > > > > > > > > > > > > > As I summed up in this thread above, calling setter for > initial > > > > > > > activation > > > > > > > > nodes is not the only option: > > > > > > > > > > > > > > > > 1. user starts up new cluster of desired number of nodes > and > > > > > > activates > > > > > > > > it using existing API. > > > > > > > > BLT is created with all nodes presented in the cluster at > > the > > > > > moment > > > > > > > of > > > > > > > > activation, no API is needed; > > > > > > > > > > > > > > > > 2. user prepares BLT using web-console or visor CMD tools > > and > > > > sets > > > > > > it > > > > > > > to > > > > > > > > the cluster. New API setter is needed: > > > > > > > > Ignite.activation().setInitialActivationNodes(Collection< > > > > > > ClusterNode> > > > > > > > > nodes); > > > > > > > > > > > > > > > > 3. user provides via static configuration a list of nodes > > that > > > > are > > > > > > > > expected to be in the cluster. > > > > > > > > User starts nodes one by one; when all preconfigured nodes > > are > > > > > > started > > > > > > > > cluster is activated and BLT is created. > > > > > > > > As list of nodes may be huge it is provided via separate > > file > > > to > > > > > > avoid > > > > > > > > flooding main configuration. > > > > > > > > > > > > > > > > So the option you proposed is already in the list. > > > > > > > > > > > > > > > > As for idea of activating cluster based only on number of > nodes > > > may > > > > > be > > > > > > > > risky. > > > > > > > > E.g. if user starts up with data stored on disk and > unexpected > > > node > > > > > > joins > > > > > > > > the topology. > > > > > > > > Cluster will get activated with N-1 nodes where all the data > is > > > > > > presented > > > > > > > > and one node completely empty. Data loss may happen in such > > > > scenario. > > > > > > > > > > > > > > > > Thanks, > > > > > > > > Sergey. > > > > > > > > > > > > > > > > > > > > > > > > On Wed, Aug 30, 2017 at 4:23 PM, Nick Pordash < > > > > nickpordash@gmail.com > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > How is a user expected to produce a collection of > ClusterNode > > > > prior > > > > > > to > > > > > > > > all > > > > > > > > > of the expected nodes joining? Users don't create instances > > of > > > > > this, > > > > > > so > > > > > > > > as > > > > > > > > > far as I can tell it would have to be retrieved from > > > > IgniteCluster. > > > > > > > > > However, would doing that and calling the proposed method > be > > > > really > > > > > > any > > > > > > > > > different than calling Ignite.activate and using the > current > > > set > > > > of > > > > > > > > server > > > > > > > > > nodes as that collection? > > > > > > > > > > > > > > > > > > From a user's perspective is it really necessary that > > specific > > > > > nodes > > > > > > > need > > > > > > > > > to be identified vs saying that they expect N server nodes > to > > > be > > > > in > > > > > > the > > > > > > > > > cluster for auto activation? > > > > > > > > > > > > > > > > > > -Nick > > > > > > > > > > > > > > > > > > On Wed, Aug 30, 2017, 1:23 AM Sergey Chugunov < > > > > > > > sergey.chugunov@gmail.com > > > > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > Dmitriy, > > > > > > > > > > > > > > > > > > > > Now I see your point and I think you're right. > > > > > > > > > > > > > > > > > > > > We can give end-user a simple setter like > > > > > > > > > > Ignite::activation::setInitialActivationNodes( > > > > > > > Collection > > > > > > > > > > nodes) to provide collection of nodes that grid must > reach > > to > > > > > > > activate > > > > > > > > > > automatically. > > > > > > > > > > > > > > > > > > > > And then using the collection we'll create > BaselineTopology > > > > > > > abstraction > > > > > > > > > > internally. > > > > > > > > > > > > > > > > > > > > As a result user won't be exposed to our internal > > > abstractions > > > > > and > > > > > > > will > > > > > > > > > > work with intuitive concept of collection of nodes. > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > Sergey. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Mon, Aug 28, 2017 at 4:39 PM, Dmitriy Setrakyan < > > > > > > > > > dsetrakyan@apache.org> > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > Sergey, the interface you are suggesting is internal, > not > > > > > > external. > > > > > > > > Why > > > > > > > > > > > should user ever see it or care about it? > > > > > > > > > > > > > > > > > > > > > > D. > > > > > > > > > > > > > > > > > > > > > > On Mon, Aug 28, 2017 at 3:18 PM, Sergey Chugunov < > > > > > > > > > > > sergey.chugunov@gmail.com> > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > Dmitriy, > > > > > > > > > > > > > > > > > > > > > > > > It was my misunderstanding, I believe that setter is > > not > > > > > enough > > > > > > > and > > > > > > > > > we > > > > > > > > > > > need > > > > > > > > > > > > a full-fledged entity. > > > > > > > > > > > > > > > > > > > > > > > > We should also be able to check if BLTs are > compatible. > > > > > > Interface > > > > > > > > > looks > > > > > > > > > > > > like this and use case for this functionality is > > > described > > > > > > below. > > > > > > > > > > > > > > > > > > > > > > > > interface BaselineTopology { > > > > > > > > > > > > Collection nodes(); > > > > > > > > > > > > boolean isCompatibleWith(BaselineTopology blt); > > > > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > Let's consider the following scenario: > > > > > > > > > > > > > > > > > > > > > > > > 1. We have a grid with N nodes: it is up, active > and > > > has > > > > > > data > > > > > > > in > > > > > > > > > it. > > > > > > > > > > > -> > > > > > > > > > > > > BLT #1 created. > > > > > > > > > > > > 2. We shutdown the grid. Then divide it into two > > > parts: > > > > > > > > Part1_grid > > > > > > > > > > and > > > > > > > > > > > > Part2_grid. > > > > > > > > > > > > 3. We start and activate Part1_grid . Topology has > > > > changed > > > > > > -> > > > > > > > > > BLT#2 > > > > > > > > > > > > created. > > > > > > > > > > > > After that we shutdown that Part1_grid. > > > > > > > > > > > > 4. We start and activate Part2_grid. Topology also > > has > > > > > > changed > > > > > > > > -> > > > > > > > > > > > BLT#3 > > > > > > > > > > > > created. > > > > > > > > > > > > 5. Then we start Part1_grid and it's nodes try to > > join > > > > > > > > Part2_grid. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > If join is successful we have an undefined state of > the > > > > > > resulting > > > > > > > > > grid: > > > > > > > > > > > > values for the same key may (and will) differ between > > > grid > > > > > > parts. > > > > > > > > > > > > > > > > > > > > > > > > So to prevent this we should keep nodes with BLT#2 > from > > > > > joining > > > > > > > the > > > > > > > > > > grid > > > > > > > > > > > > with BLT#3. And we should fail nodes with an error > > > message. > > > > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > Sergey. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Wed, Aug 23, 2017 at 5:47 AM, Dmitriy Setrakyan < > > > > > > > > > > > dsetrakyan@apache.org> > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > Sergey, I am still confused. What is the > > > BaselineTopology > > > > > > > > interface > > > > > > > > > > in > > > > > > > > > > > > your > > > > > > > > > > > > > example? I thought that you agreed with me that we > > > simply > > > > > > need > > > > > > > a > > > > > > > > > > setter > > > > > > > > > > > > for > > > > > > > > > > > > > activation nodes, no? > > > > > > > > > > > > > > > > > > > > > > > > > > D. > > > > > > > > > > > > > > > > > > > > > > > > > > On Tue, Aug 22, 2017 at 4:47 AM, Sergey Chugunov < > > > > > > > > > > > > > sergey.chugunov@gmail.com> > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > Dmitriy, > > > > > > > > > > > > > > > > > > > > > > > > > > > > As I understand you use the term > > > > "minimalActivationNodes" > > > > > > as > > > > > > > a > > > > > > > > > > > synonym > > > > > > > > > > > > > for > > > > > > > > > > > > > > BaselineTopology concept. > > > > > > > > > > > > > > In that case I agree with you that we can replace > > > both > > > > > > > > > "establish*" > > > > > > > > > > > > > methods > > > > > > > > > > > > > > with a simple setter method (see below in > summary). > > > > > > > > > > > > > > > > > > > > > > > > > > > > Summing up the whole discussion I see the > > > functionality > > > > > as > > > > > > > > > > following: > > > > > > > > > > > > > > > > > > > > > > > > > > > > New concept BaselineTopology is introduced. The > > main > > > > > > features > > > > > > > > it > > > > > > > > > > > > enables > > > > > > > > > > > > > > are: > > > > > > > > > > > > > > > > > > > > > > > > > > > > 1. automatic activation of cluster; > > > > > > > > > > > > > > > > > > > > > > > > > > > > 2. easy management of cluster topology changes > > > > > (planned > > > > > > > > nodes > > > > > > > > > > > > > > maintenance, adding new nodes etc); > > > > > > > > > > > > > > > > > > > > > > > > > > > > 3. eliminating of rebalancing traffic on > > > short-term > > > > > node > > > > > > > > > > failures. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Use cases to create BLT: > > > > > > > > > > > > > > > > > > > > > > > > > > > > 1. user starts up new cluster of desired > number > > of > > > > > nodes > > > > > > > and > > > > > > > > > > > > activates > > > > > > > > > > > > > > it using existing API. BLT is created with all > > > nodes > > > > > > > > presented > > > > > > > > > > in > > > > > > > > > > > > the > > > > > > > > > > > > > > cluster at the moment of activation, no API is > > > > needed; > > > > > > > > > > > > > > > > > > > > > > > > > > > > 2. user prepares BLT using web-console or > visor > > > CMD > > > > > > tools > > > > > > > > and > > > > > > > > > > sets > > > > > > > > > > > > it > > > > > > > > > > > > > to > > > > > > > > > > > > > > the cluster. New API setter is needed: > > > > > > > > > > > > > > Ignite.activation().setBaselin > > > > > > eTopology(BaselineTopology > > > > > > > > > blt); > > > > > > > > > > > > > > > > > > > > > > > > > > > > 3. user provides via static configuration a > list > > > of > > > > > > nodes > > > > > > > > that > > > > > > > > > > are > > > > > > > > > > > > > > expected to be in the cluster. > > > > > > > > > > > > > > User starts nodes one by one; when all > > > preconfigured > > > > > > nodes > > > > > > > > are > > > > > > > > > > > > started > > > > > > > > > > > > > > cluster is activated and BLT is created. > > > > > > > > > > > > > > As list of nodes may be huge it is provided > via > > > > > separate > > > > > > > > file > > > > > > > > > to > > > > > > > > > > > > avoid > > > > > > > > > > > > > > flooding main configuration. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Igniters, does this description match with your > > > > > > understanding > > > > > > > > of > > > > > > > > > > > > > > functionality? If it does I'll create a set of > > > tickets > > > > > and > > > > > > > > start > > > > > > > > > > > > working > > > > > > > > > > > > > on > > > > > > > > > > > > > > implementation. > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > Sergey. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Sat, Aug 19, 2017 at 5:41 PM, Dmitriy > Setrakyan > > < > > > > > > > > > > > > > dsetrakyan@apache.org> > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > I still do not see why anyone would explicitly > > call > > > > > > these 2 > > > > > > > > > > > methods: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > *Ignite::activation:: > > establishBaselineTopology();* > > > > > > > > > > > > > > > *Ignite::activation:: > establishBaselineTopology( > > > > > > > > > BaselineTopology > > > > > > > > > > > > > > bltTop);* > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > For example, if a web console, or some other > > admin > > > > > > process, > > > > > > > > > want > > > > > > > > > > to > > > > > > > > > > > > > > > automatically set currently started nodes as > the > > > > > baseline > > > > > > > > > > topology, > > > > > > > > > > > > > > > shouldn't they just call a setter for > > > > > > > minimalActivationNodes? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > D. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Aug 18, 2017 at 10:18 AM, Alexey > > Dmitriev < > > > > > > > > > > > > > > admitriev@gridgain.com> > > > > > > > > > > > > > > > wrote: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > API is proposed in the head of the thread by > > > > Sergey, > > > > > > as I > > > > > > > > > > > > understood: > > > > > > > > > > > > > > > > ______________________________ > > > > > ________________________ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > API for BaselineTopology manipulation may > look > > > like > > > > > > this: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > *Ignite::activation:: > > > establishBaselineTopology();* > > > > > > > > > > > > > > > > *Ignite::activation:: > > establishBaselineTopology( > > > > > > > > > BaselineTopology > > > > > > > > > > > > > > > bltTop);* > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Both methods will establish BT and activate > > > cluster > > > > > > once > > > > > > > it > > > > > > > > > is > > > > > > > > > > > > > > > established. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > The first one allows user to establish BT > using > > > > > current > > > > > > > > > > topology. > > > > > > > > > > > > If > > > > > > > > > > > > > > any > > > > > > > > > > > > > > > > changes happen to the topology during > > > establishing > > > > > > > process, > > > > > > > > > > user > > > > > > > > > > > > will > > > > > > > > > > > > > > be > > > > > > > > > > > > > > > > notified and allowed to proceed or abort the > > > > > procedure. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > Second method allows to use some > > > > > > monitoring'n'management > > > > > > > > > tools > > > > > > > > > > > like > > > > > > > > > > > > > > > > WebConsole where user can prepare a list of > > > nodes, > > > > > > using > > > > > > > > them > > > > > > > > > > > > create > > > > > > > > > > > > > a > > > > > > > > > > > > > > BT > > > > > > > > > > > > > > > > and send to the cluster a command to finally > > > > > establish > > > > > > > it. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > From high level BaselineTopology entity > > contains > > > > only > > > > > > > > > > collection > > > > > > > > > > > of > > > > > > > > > > > > > > > nodes: > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > *BaselineTopology {* > > > > > > > > > > > > > > > > * Collection nodes;* > > > > > > > > > > > > > > > > *}* > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > *TopologyNode* here contains information > about > > > > node - > > > > > > its > > > > > > > > > > > > consistent > > > > > > > > > > > > > id > > > > > > > > > > > > > > > and > > > > > > > > > > > > > > > > set of user attributes used to calculate > > affinity > > > > > > > function. > > > > > > > > > > > > > > > > ____________________________________________ > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > > > > > View this message in context: > > > > http://apache-ignite- > > > > > > > > > > > > > > > > developers.2346864.n4.nabble. > > > > > > > com/Cluster-auto-activation- > > > > > > > > > > > > > > > > design-proposal-tp20295p21066.html > > > > > > > > > > > > > > > > Sent from the Apache Ignite Developers > mailing > > > list > > > > > > > archive > > > > > > > > > at > > > > > > > > > > > > > > > Nabble.com. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- Best regards, Ilya --089e08247778dbce92055d29da8c--