How that reason will look like? Actually, I mostly thinking about general API here. What I would like to avoid is exposing something not general but needed only for a particular extension (plugin).
вт, 3 дек. 2019 г. в 12:31, Николай Ижиков <nizhi...@apache.org>: > > I think we also should provide the reason why join failed. > > > 3 дек. 2019 г., в 12:22, Ivan Pavlukhin <vololo...@gmail.com> написал(а): > > > > Mikhail, > > > > So, I suppose there should be ordering guarantees that listener is > > registered before first validation failure can occur. Hope > > GridComponent#onKernalStart is the right place. Is it enough to pass > > only problematic node id (or ClusterNode) with an event? Actually such > > event seems to fit naturally node join/left/failed events. > > > > вт, 3 дек. 2019 г. в 10:38, Mikhail Petrov <pmgheap....@gmail.com>: > >> > >> Hi Ivan. > >> > >> No other lifecycle events are needed in my case. > >> > >> We can register a listener in the security component's > >> GridComponent#onKernalStart method and listen locally to every failed > >> joining attempt. Am I missing something? > >> > >> Regards, > >> Mikhail. > >> > >> On 03.12.2019 8:48, Ivan Pavlukhin wrote: > >>> Mikhail, > >>> > >>> Do you need some ordering guarantees among node lifecycle events and > >>> listener notifications. For example, I can imagine that it is good to > >>> notify security component about every node failed validation. How can > >>> we achieve it with events (I assume dynamic listener registration)? > >>> > >>> пн, 2 дек. 2019 г. в 18:09, Mikhail Petrov <pmgheap....@gmail.com>: > >>>> Hi, Andrey. > >>>> > >>>> It doesn't influence on authentication or authorization process. There > >>>> is a security requirement that demands to notify some outer security > >>>> subsystems in a specific way when joining node validation failed in any > >>>> Ignite component (e.g. GridCacheProcessor) not only in > >>>> IgniteSecurityProcessor. So PluginProvider#validateNewNode is not > >>>> acceptable for me. > >>>> > >>>> Regards, > >>>> Mikhail. > >>>> > >>>> On 02.12.2019 16:35, Andrey Gura wrote: > >>>>> Mikhail, > >>>>> > >>>>> I don't understand how node validation on join affects security. But > >>>>> it seems that you can use > >>>>> PluginProvider#validateNewNode(org.apache.ignite.cluster.ClusterNode, > >>>>> java.io.Serializable) method. Does it fit for your needs? > >>>>> > >>>>> On Mon, Dec 2, 2019 at 12:54 PM Mikhail Petrov <pmgheap....@gmail.com> > >>>>> wrote: > >>>>>> Hi, Ivan. > >>>>>> > >>>>>> > >>>>>> Unfortunately, we came to no decision yet. As I mentioned above this > >>>>>> event is disabled by default and no node will receive this event > >>>>>> without > >>>>>> an explicit subscription. In my case, that event is assumed to be used > >>>>>> on node locally to share joining node info between security and > >>>>>> discovery components. I have no idea how to solve this problem without > >>>>>> publishing a new event too. But I'm concerned about the acceptance of > >>>>>> that solution. Maybe it can be solved some other way? I will appreciate > >>>>>> any suggestion or review PR [1] with event implementation. > >>>>>> > >>>>>> > >>>>>> [1] https://github.com/apache/ignite/pull/7057 > >>>>>> > >>>>>> > >>>>>> Regards, > >>>>>> > >>>>>> Mikhail. > >>>>>> > >>>>>> On 02.12.2019 10:38, Ivan Pavlukhin wrote: > >>>>>>> Mikhail, Andrey, > >>>>>>> > >>>>>>> Have you come to a common decision here? As for me, it sounds useful > >>>>>>> to expose node join failure details somehow. The thing to decide on is > >>>>>>> a mechanism to expose it. Unfortunately, immediately have no idea > >>>>>>> better than using events. > >>>>>>> > >>>>>>>> What is purpose of the special cluster wide event? Node is not joined > >>>>>>>> to the topology. Why topology nodes should know something about this > >>>>>>>> node? > >>>>>>> Was this question answered? I suppose that at least coordinator will > >>>>>>> receive the event, will not it? > >>>>>>> > >>>>>>> чт, 28 нояб. 2019 г. в 10:10, Mikhail Petrov <pmgheap....@gmail.com>: > >>>>>>>> Hi, Ivan. > >>>>>>>> > >>>>>>>> I'm sorry that the discussion was moved in private channel. The > >>>>>>>> problem > >>>>>>>> I'm trying to solve is described below in the thread. The security > >>>>>>>> plugin in my case stores and analyzesinfo about a node that failed > >>>>>>>> to join. > >>>>>>>> > >>>>>>>> > >>>>>>>> Regards, > >>>>>>>> > >>>>>>>> Mikhail. > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> -------- Forwarded Message -------- > >>>>>>>> Subject: Re: Joining node validation failure event. > >>>>>>>> Date: Thu, 21 Nov 2019 21:43:33 +0300 > >>>>>>>> From: Mikhail Petrov <pmgheap....@gmail.com> > >>>>>>>> To: Andrey Gura <ag...@apache.org> > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>>>> Hi, Andrey. > >>>>>>>> > >>>>>>>> In my task security plugin running on the coordinator must locally > >>>>>>>> handle the situation when some node is trying to join the topology > >>>>>>>> with > >>>>>>>> the invalid configuration. I can't handle the response on a node that > >>>>>>>> failed to connect because it's untrusted. > >>>>>>>> > >>>>>>>> Actually I'm only concerned about one validation -- when all Ignite > >>>>>>>> components validate new node. > >>>>>>>> > >>>>>>>> In my case plugin must be able to obtain general and security subject > >>>>>>>> information from joining TcpDiscoveryNode attributes. But I have no > >>>>>>>> idea > >>>>>>>> how to share information between the security and discovery > >>>>>>>> components > >>>>>>>> without recording event and listening it locally. > >>>>>>>> > >>>>>>>> This event is assumed to be disable by default and in my case used > >>>>>>>> only > >>>>>>>> on local node so it's not look like "cluster wide event". > >>>>>>>> > >>>>>>>> Also I propose to record this event in dedicated utilityPool so it > >>>>>>>> can't > >>>>>>>> stuck discovery thread. > >>>>>>>> > >>>>>>>> I will appreciate any thoughts on this problem. > >>>>>>>> > >>>>>>>> Regards, > >>>>>>>> Mikhail. > >>>>>>>> > >>>>>>>> On 21.11.2019 19:40, Andrey Gura wrote: > >>>>>>>>> Mikhail, > >>>>>>>>> > >>>>>>>>> It is still not enough details to me. What is expected behavior if > >>>>>>>>> the > >>>>>>>>> plugin? > >>>>>>>>> > >>>>>>>>> There are a different validations during node join. Many of them > >>>>>>>>> placed in RingMessageWorker#processJoinRequestMessage method. If > >>>>>>>>> validation will fail then corresponding message will be sent to the > >>>>>>>>> joining node (including TcpDiscoveryAuthFailedMessage) and node will > >>>>>>>>> not joined to topology. > >>>>>>>>> > >>>>>>>>> What is purpose of the special cluster wide event? Node is not > >>>>>>>>> joined > >>>>>>>>> to the topology. Why topology nodes should know something about this > >>>>>>>>> node? > >>>>>>>>> > >>>>>>>>> On Thu, Nov 21, 2019 at 9:54 AM Mikhail Petrov > >>>>>>>>> <pmgheap....@gmail.com> > >>>>>>>>> wrote: > >>>>>>>>>> Hi, Andrey. > >>>>>>>>>> > >>>>>>>>>> I take part in the development of a custom security plugin for > >>>>>>>>>> Apache > >>>>>>>>>> Ignite. There is an information security requirement for which node > >>>>>>>>>> joining failures due to invalid configuration must be handled by > >>>>>>>>>> the > >>>>>>>>>> plugin. > >>>>>>>>>> > >>>>>>>>>> This is where my case comes from. Are there any objections to the > >>>>>>>>>> proposed approach? > >>>>>>>>>> > >>>>>>>>>> Regards, > >>>>>>>>>> Mikhail. > >>>>>>>>>> > >>>>>>>>>> On 20.11.2019 19:38, Andrey Gura wrote: > >>>>>>>>>>> Hi, Mikhail! > >>>>>>>>>>> > >>>>>>>>>>> Could you please describe the case for this new event? > >>>>>>>>>>> > >>>>>>>>>>> On Wed, Nov 20, 2019 at 12:45 PM Mikhail Petrov > >>>>>>>>>>> <pmgheap....@gmail.com> wrote: > >>>>>>>>>>>> Hello, Igniters. > >>>>>>>>>>>> > >>>>>>>>>>>> There is a case which requires to handle joining node validation > >>>>>>>>>>>> failure > >>>>>>>>>>>> in Ignite components and obtain information of the node that > >>>>>>>>>>>> tried to > >>>>>>>>>>>> join and the reason for the failure. Now, as I see, there is no > >>>>>>>>>>>> way to > >>>>>>>>>>>> do it. I propose to implement a new event -- > >>>>>>>>>>>> NodeValidationFailedEvent > >>>>>>>>>>>> -- and record it in case the validation fails. I have created > >>>>>>>>>>>> Tiket [1] > >>>>>>>>>>>> and PR [2], which shows an example of implementation. Could > >>>>>>>>>>>> anyone take > >>>>>>>>>>>> a look at it, please? > >>>>>>>>>>>> > >>>>>>>>>>>> [1] https://issues.apache.org/jira/browse/IGNITE-12380 > >>>>>>>>>>>> > >>>>>>>>>>>> [2] https://github.com/apache/ignite/pull/7057 > >>>>>>>>>>>> > >>> > >>> > > > > > > > > -- > > Best regards, > > Ivan Pavlukhin > -- Best regards, Ivan Pavlukhin