Alexei, >It's not ok to have the property IGNITE_MBEAN_STATIC_HIERARCHY - actually >it's not always static, because node id changes on each restart. I am fine to remove this property.
> Instead I would prefer to make IGNITE_MBEAN_APPEND_CLASS_LOADER_ID=false by > default. Already done in my PR. > This is a dangerous change which most likely will break node startup in > application containers (using different classloaders), so I'm strongly > disliking what. >From my point of view user specified values like instanceName and consistantId >or uniq nodeId should be enough for any case, could you please describe the >case with application contained more detailed? > Instead, is it possible to write a template using some kind of regexp and > ignoring classloader id ? To avoid issues with multiple templates I suggest > always output classloaderId in hierarchy. It is possible to write template with regexp to detect metrics with non-static classloader in zabbix for example. But on every restart classloader will be another and zabbix would detect a metric as new, because metrics detection use full jmx path as key. In other monitoring systems that can work another way. > Sent: Thursday, August 19, 2021 at 4:51 PM > From: "Alexei Scherbakov" <alexey.scherbak...@gmail.com> > To: "dev" <dev@ignite.apache.org> > Subject: Re: Static hierarchy in jmx tree > > I'm ok to use either classloader or node id. > > I'm ok to always use instance name or consistent/node id to keep the same > hierarchy levels (in that order: instanceName -> consistentId -> nodeId. > > It's not ok to have the property IGNITE_MBEAN_STATIC_HIERARCHY - actually > it's not always static, because node id changes on each restart. > > Instead I would prefer to make IGNITE_MBEAN_APPEND_CLASS_LOADER_ID=false by > default. > > This is a dangerous change which most likely will break node startup in > application containers (using different classloaders), so I'm strongly > disliking what. > > Instead, is it possible to write a template using some kind of regexp and > ignoring classloader id ? To avoid issues with multiple templates I suggest > always output classloaderId in hierarchy. > > > вс, 13 июн. 2021 г. в 16:01, Igor Akkuratov <akkura...@mail.com>: > > > Stanislav, thank you for your response. > > I am fine with the option IGNITE_MBEAN_STATIC_HIERARCHY=true, is looks > > fair to give the opportunity to use the old behavior. But I do not > > understand why there is a classloader, I don't know any reason for that, > > whenever there is already a unique id - node id. It looks much more > > appropriate for me to use node id instead of classloader. So my idea is to > > use either instance name or consistentId or nodeId is there any cons why > > it's better to do that your way? > > > > > Sent: Monday, June 07, 2021 at 4:21 PM > > > From: "Stanislav Lukyanov" <stanlukya...@gmail.com> > > > To: dev@ignite.apache.org > > > Subject: Re: Static hierarchy in jmx tree > > > > > > I guess the problem with this thread is that, on one hand, virtually > > anyone would support the change because no one likes the class loader IDs > > in JMX. > > > On the other hand, this is a breaking change and is kind of scary to do > > :) > > > > > > > I am not sure that I got you. If we that is all about containers like > > docker, then there is no any problem here. > > > > > > I believe Alexei means application containers, like WebSphere. > > > > > > It seems to me that the entire IGNITE_MBEAN_APPEND_CLASS_LOADER_ID > > behavior solves one very narrow use case: > > > running multiple apps, each with an Ignite client, each with no instance > > name set; in this case it is indeed awkward to see that your app with > > instance name = null can't start because there is already a different app > > with instance name = null. > > > > > > How about the following behavior? > > > - Always use EITHER instance name or class loader ID > > > - If the node doesn't have an instance name set, use its class loader ID > > > -- This way multiple client nodes in multiple apps in the same container > > can work together > > > - If the node does have an instance name set, use it without class > > loader ID > > > -- This way people with instance names set will get nice stable JMX > > hierarchies > > > - In both cases, the ObjectName will be > > > -- org.apache.ignite.<XYZ>.<METRICS> where <XYZ> is either the instance > > name of the class loader ID. In both cases, the metrics are on the same > > nesting level which is good I guess.. > > > > > > Since this is not a core API I think it's alright to break the behavior > > in one minor release - given that there is a fallback option. > > > With that in mind, I'd rather have a new option like > > IGNITE_MBEAN_STATIC_HIERARCHY > > > - IGNITE_MBEAN_STATIC_HIERARCHY=true (default): the new behavior is in > > effect, IGNITE_MBEAN_APPEND_CLASS_LOADER_ID is ignored > > > - IGNITE_MBEAN_STATIC_HIERARCHY=false: the old behavior is in effect > > > > > > Thanks, > > > Stan > > > > > > > On 10 May 2021, at 23:04, Igor Akkuratov <akkura...@mail.com> wrote: > > > > > > > > Alexei, thank you for your response. > > > > > > > >> 1. I don't understand why setting > > > >> IGNITE_MBEAN_APPEND_CLASS_LOADER_ID=false + igniteInstanceName is not > > a > > > >> solution to your issue ? > > > >> Just put it in the documentation and this should do fine. > > > > > > > > It could be a solution for me, but I believe that such approach is a > > pain for a lot of users. Anyone who want to monitor Ignite node via JMX > > have to use both of options which have to be specified in different places. > > > > > > > >> 2. Removing the classloader id can break the template working in the > > > >> container environment, where the instances with the same name are > > > >> instantiated using different classloaders. > > > >> How is this scenario supposed to work with a single template ? > > > > > > > > I am not sure that I got you. If we that is all about containers like > > docker, then there is no any problem here. Each application have to be > > started in separate container with there own network, so yes - jmx tree is > > the same, but there are from different hosts. So right now there are few > > scenarios: > > > > - right now JMX is turned off by default, so there is no problem > > > > - if you want to use jmx you have to turn it on manually and it would > > work. After my patch consistent id in case of persistent or node id in > > other cases would be used. > > > > - if you want to specify instance name you can chose different names > > for different instances or separate them to different jvm. > > > > - if you want to use the previous logic with class loader id, option > > MBEAN_APPEND_CLASS_LOADER_ID is still available. > > > > > > > > > > > >> 3. Your patch introduces breaking change. This can be done only in two > > > >> steps: release N deprecated the behavior, release N + 1 changes the > > > >> behavior, according to the new rules. > > > > > > > > Ok. If we take a decision, I will do that. > > > > > > > > > > > -- > > Best regards, > Alexei Scherbakov >