Andrey,

It was discussed already here [1].

And the fix is almost merged.

[1]
http://apache-ignite-developers.2346864.n4.nabble.com/Issues-with-forceServerMode-on-clients-and-unclear-contract-of-isClient-isClientMode-methods-td31152.html

On Mon, Aug 13, 2018 at 9:07 AM Andrey Mashenkov <[email protected]>
wrote:

> Thanks.
> I've created a ticket [1]  for this issue.
>
> [1] https://issues.apache.org/jira/browse/IGNITE-9241
>
> On Thu, Aug 9, 2018 at 4:23 PM Nikolay Izhikov <[email protected]>
> wrote:
>
> > +1 from me.
> >
> > В Чт, 09/08/2018 в 12:51 +0300, Pavel Kovalenko пишет:
> > > Andrey,
> > >
> > > Huge +1 for that.
> > > "Force server mode" increases the complexity of understanding how
> cluster
> > > in ring mode works without real benefits.
> > > If a user wants to start client node first before server nodes have
> > > started, he can adjust timeouts on connection and spin till a client is
> > > connected. Ability to join client node to topology without server nodes
> > > looks dubious.
> > > As we have thin clients and Zookeeper Discovery SPI this mode looks
> like
> > a
> > > crutch and should be removed.
> > >
> > > 2018-08-09 12:41 GMT+03:00 Andrey Mashenkov <
> [email protected]
> > >:
> > >
> > > > Hi Igniters,
> > > >
> > > > I've found that KernalContext.clientNode() and
> > TcpDusciveryNode.isClient()
> > > > means different and it looks confusing.
> > > >
> > > > 1. The first one return true if "node is configured as client" and
> > false
> > > > otherwise,
> > > > 2. The second one can return false if server mode is forced for
> client
> > (via
> > > > TcpDiscoverySpi.setForceServerMode(true)) ,
> > > >  so actually true value means "a client node is out of the ring".
> > > >
> > > > Thus, TcpDiscoveryNode.isClient() semantic is broken and  we can get
> > > > confusing results on client node with forced server mode,
> > > > when kernalContext.clientNode() return true and
> > > > kernalContex.localNode().isClient() return false.
> > > >
> > > > Also, we have a number of places in code where node.isClient() method
> > is
> > > > used.
> > > >
> > > > My suggestion is
> > > > 1. Deprecate force server mode and plan to remove it to next major
> > release.
> > > > 2. Fix TcpDiscoveryNode,isClient() semantic e.g. to use node
> > attributes to
> > > > make ClusterNode.isClient method consistent with node configuration.
> > > > 2. Add isRingNode (possibly package private) with current
> > > > TcpDiscoveryNode.isClient() semantic to preserve compatibility.
> > > >
> > > > Any pros or cons?
> > > >
> > > > --
> > > > Best regards,
> > > > Andrey V. Mashenkov
> > > >
>
>
>
> --
> Best regards,
> Andrey V. Mashenkov
>

Reply via email to