All,

We have a very similar requirement as described in this item:
https://issues.apache.org/jira/browse/IGNITE-10872

Namely, when removing a node from a Ignite grid, we want to do two things:

1. Prevent new requests from reaching it
2. Allow all running requests the node is involved in to complete before it
terminates.

The solution outlined in 10872 partially solves these elements within our
architecture in that it allows Ignite to pause shutdown of the node until
all requests are completed (and, I assume, prevent new requests from
reaching the node being shut down).

In our architecture the phrase 'requests the node is involved in' made be
opaque from the context on Ignite due to an asynchronous calling model we
are using to permit very large numbers of concurrent requests to execute
without saturating the Ignite thread pools. What this means is that a node
that may be a candidate to be shut down may be waiting for a response from
another node on the grid in a way that Ignite can't see, so would determine
the node was safe to shut down when it is not.

A good example of this in our system is an Apply style Ignite call where
the request is sent to one of a set of nodes. That set of nodes may scale
in/out due to request demand. On a scale in operation, the node to be
removed needs to be excluded from the topology projection constructed to
perform the Apply() against. Once we are satisfied the node has no further
request involved (eg: by a simple timeout) then we would proceed with
actual shut down of that node.

I have not seen any capability in Ignite today where a node can be
'un-blessed'; does one exist? Or should we construct this facility within
our application logic layer?

Thanks,
Raymond.


-- 
<http://www.trimble.com/>
Raymond Wilson
Solution Architect, Civil Construction Software Systems (CCSS)
11 Birmingham Drive | Christchurch, New Zealand
raymond_wil...@trimble.com

<https://worksos.trimble.com/?utm_source=Trimble&utm_medium=emailsign&utm_campaign=Launch>

Reply via email to