I have discovered a bug in the Ignite 2.8.1 C# client related to the node
id reported by IIgnite.GetCluster().GetLocalNode().Id

When a client is started and GetCluster() is called, the client retrieves
and stores a copy of the local node returned from GetNodes(). This cached
local node contains the node id:

        /** <inheritdoc /> */
        public IClusterNode GetLocalNode()
        {
            return _locNode ?? (_locNode =
                       GetNodes().FirstOrDefault(x => x.IsLocal) ??
                       ForDaemons().GetNodes().FirstOrDefault(x =>
x.IsLocal));
        }

If the client node needs to reconnect with the grid due to failure or
restart of other nodes in the grid then the client establishes a new client
ID when it reconnects. This new ID is not reflected in the cached local
node. If this ID is later relied on, for example in our case,  to determine
a node in the grid topology as a part of a query process, then the result
will be an empty topology projection.

As the local client id is never changed once set then the only mitigation
at present is to kill client nodes once they enter this state.

There is quite a bit of other state present in that cached local node that
may be at risk of being inconsistent if the underlying grid information
changes.

Thanks,
Raymond.


-- 
<http://www.trimble.com/>
Raymond Wilson
Solution Architect, Civil Construction Software Systems (CCSS)
11 Birmingham Drive | Christchurch, New Zealand
+64-21-2013317 Mobile
[email protected]

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

Reply via email to