Slava, I don’t get it. > Plugins have access to different internal Ignite components, such as security > processor and others, and can extend the programmatic API of Ignite.
Where docs say that we, as a community, take responsibility to keep internals in the way plugin expect? > 6 дек. 2021 г., в 14:48, Вячеслав Коптилин <slava.kopti...@gmail.com> > написал(а): > > Hello Nikolay, > >>> plugin framework allows to implement internal components and use the > internal API. >> Can you please, point out to documentation or place in Ignite code that > describe this behaviour? > > Looks like it states here https://ignite.apache.org/docs/latest/plugins > >> The Ignite plugin system allows you to extend the core functionality of >> Ignite. Plugins have access to different internal Ignite components, such >> as security processor and others, and can extend the programmatic API of >> Ignite. > > > Thanks, > S. > > > сб, 4 дек. 2021 г. в 14:54, Nikolay Izhikov <nizhi...@apache.org>: > >> Valentin >> >>> plugin framework allows to implement internal components and use the >> internal API. >> >> Can you please, point out to documentation or place in Ignite code that >> describe this behaviour? >> AFAIK plugin can only use public API, internal API can be changed any time >> we want. >> >>> Folks, can anyone explain the rush? >> >> No rush from my side. >> >> Just want to understand your vision of integration points between Ignite >> and plugins. >> >>> Is there any specific reason for it? >> >> Intention of IEP-80 is to improve Ignite codebase by removing abandoned >> features. >> >>> But the fact is that there are users that can depend on the system cache >> via the plugin framework. >> >> Why this dependency can’t be changed to any regular cache? >> Just replace `Ignite#cache` to `Ignite#getOrCreateCache` and that’s it. >> >> Do we have some special guarantees or logic besides system cache? >> >> >>> 4 дек. 2021 г., в 02:14, Valentin Kulichenko < >> valentin.kuliche...@gmail.com> написал(а): >>> >>> Nikolay, that's right, plugin framework allows to implement internal >>> components and use the internal API. There is a difference between a >> plugin >>> and an extension that uses only public API >>> >>> Folks, can anyone explain the rush? Is there any specific reason for it? >>> >>> I think we all agree that this is a good change - system cache has to >> go. I >>> guess technically it's not even a breaking change, because system cache >> is >>> not a public API feature. But the fact is that there are users that can >>> depend on the system cache via the plugin framework. Let's be respectful >> to >>> those users, provide a reasonable documented alternative and give time. >>> >>> -Val >>> >>> On Fri, Dec 3, 2021 at 8:18 AM Nikolay Izhikov <nizhi...@apache.org> >> wrote: >>> >>>> I don’t understand how it possible. >>>> >>>> Are you talking about plugin that uses some kind of internal API? >>>> >>>>> 3 дек. 2021 г., в 18:50, Вячеслав Коптилин <slava.kopti...@gmail.com> >>>> написал(а): >>>>> >>>>> Hello Nikolay, >>>>> >>>>> If I am not mistaken, the method you mentioned, allows to create a >> "user" >>>>> cache that is available through public api for the user. This does not >>>>> cover the case when the plugin developer wants to hide such cache and >>>>> protect it form the end user (at least, via public api). >>>>> >>>>> Thanks, >>>>> S. >>>>> >>>>> пт, 3 дек. 2021 г., 14:15 Nikolay Izhikov <nizhi...@apache.org>: >>>>> >>>>>> Vyacheslav, Val, can you please clarify - What is the issue if >>>> third-party >>>>>> plugins will create «ignite-sys-cache» from the code? >>>>>> >>>>>> Like just replacing `Ignite#cache` with the `Ignite#getOrCreateCache`. >>>>>> >>>>>>> 2 дек. 2021 г., в 16:13, Вячеслав Коптилин <slava.kopti...@gmail.com >>> >>>>>> написал(а): >>>>>>> >>>>>>> Hello Maxim, >>>>>>> >>>>>>>> I don't understand why you are using *backwards compatibility* for >>>>>>> completely internal things. >>>>>>>> Why you are thinking in terms of users usage when are talking about >>>>>>> ignite-sys-cache but not thinking when refactoring >>>>>>> First of all, we are talking about all plugin developers. It does not >>>>>>> matter it is open-source or proprietary plugins. >>>>>>> Honestly, I don't have a list of all possible plugins that have >> already >>>>>>> been developed and available under the ASF license, for instance. >>>>>>> Do you have such a list? Can you be sure that this change will not >>>> affect >>>>>>> anyone? >>>>>>> >>>>>>>> I don't understand why you are using *backwards compatibility* for >>>>>>> completely internal things. >>>>>>>> Why you are thinking in terms of users usage when are talking about >>>>>>> ignite-sys-cache but not thinking when refactoring >>>>>>> The system cache was the crucial thing in the architecture of Apache >>>>>> Ignite >>>>>>> 1.x and 2.x (at least 2.1 - 2.11?) >>>>>>> >>>>>>>> All the internals have been reworked and nobody even mentioned that >> it >>>>>>> may affect some of the plugin developers. >>>>>>> Yep, perhaps, some internal parts of Apache Ignite were reworked in >>>> order >>>>>>> to avoid using the system cache. >>>>>>> However, it is still a part of Ignite and it works and can be used in >>>>>>> plugins. >>>>>>> Honestly, the mentioned alternative, I mean the distributed >>>> metastorage, >>>>>> is >>>>>>> the INTERNAL thing as well. >>>>>>> It means that plugin developer depends on INTERNAL entities. (it does >>>> not >>>>>>> matter system-cache/metastorage) >>>>>>> IMHO, such questions should be CAREFULLY discussed with no rush. >>>>>>> >>>>>>>> I do not propose to rush with the ignite-sys-cache removal. I'd like >>>> to >>>>>>> collect all the technical stuff that we depend on, fix all of them >> and >>>>>>> after everything will be ready do a final removal. >>>>>>> Good! We are on the same page! >>>>>>> >>>>>>>> 1. Add deprecation for the 2.12 release. I hope it is still >> possible. >>>>>>> If I am not mistaken, the code freeze was October 29. I think it is >> too >>>>>>> late to introduce this change. We can add deprecation for the 2.13 >>>>>> release. >>>>>>> >>>>>>>> Apache Ignite core still have some dependencies on ignite-sys-cache >>>> that >>>>>>> should fix for 2.13 >>>>>>> Ok, I agree. We need to try to find out all edge cases and add new >>>>>>> abilities to the metastorage in order to cover all known >>>>>>> issues/requirements. >>>>>>> >>>>>>>> Remove the system cache in 2.14. >>>>>>> It depends on our progress with improving the distributed >> metastorage. >>>> In >>>>>>> general, I hope it will be possible. >>>>>>> >>>>>>> Thanks, >>>>>>> S. >>>>>>> >>>>>>> чт, 2 дек. 2021 г. в 13:36, Maxim Muzafarov <mmu...@apache.org>: >>>>>>> >>>>>>>> Pavel, >>>>>>>> >>>>>>>> >>>>>>>> I don't understand why you are using *backwards compatibility* for >>>>>>>> completely internal things. Why you are thinking in terms of users >>>>>>>> usage when are talking about ignite-sys-cache but not thinking when >>>>>>>> refactoring, for instance, all the checkpoint classes? Take a look >> at >>>>>>>> the [1] issue. All the internals have been reworked and nobody even >>>>>>>> mentioned that it may affect some of the plugin developers. This is >>>>>>>> really strange, so I can't agree with you. >>>>>>>> >>>>>>>> >>>>>>>> I do not propose to rush with the ignite-sys-cache removal. I'd like >>>>>>>> to collect all the technical stuff that we depend on, fix all of >> them >>>>>>>> and after everything will be ready do a final removal. Slava already >>>>>>>> mentioned some crucial cases, so I hope you and Val also help with >> the >>>>>>>> rest of them. Let's be more precise in terms *what we need to fix*. >>>>>>>> >>>>>>>> >>>>>>>> I've made some investigations related to the ignite-sys-cache and >> here >>>>>>>> is my proposal: >>>>>>>> >>>>>>>> 1. Add deprecation for the 2.12 release. I hope it is still >> possible. >>>>>>>> >>>>>>>> 2. Apache Ignite core still have some dependencies on >> ignite-sys-cache >>>>>>>> that should fix for 2.13: >>>>>>>> >>>>>>>> 2.1. CLUSTER_NAME property: when it's not set the `deploymentId` of >>>>>>>> system cache is used. Let's move it to metastorage. >>>>>>>> 2.2. When the Security is enabled each compute task name (hash to be >>>>>>>> more precise) is written to the ignite-sys-cache [2]. From my point >> of >>>>>>>> view, we can remove it in 2.13. Can anyone check? >>>>>>>> 2.3. Slava mentioned some issues with the distributed metastorage >> that >>>>>>>> might be fixed. I think this is doable. >>>>>>>> >>>>>>>> 3. Remove the system cache in 2.14. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> [1] https://issues.apache.org/jira/browse/IGNITE-13143 >>>>>>>> [2] >>>>>>>> >>>>>> >>>> >> https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskProcessor.java#L201 >>>>>>>> >>>>>>>> On Thu, 2 Dec 2021 at 12:56, Pavel Tupitsyn <ptupit...@apache.org> >>>>>> wrote: >>>>>>>>> >>>>>>>>> Maxim, >>>>>>>>> >>>>>>>>>> I don't think that we should wait for 3-rd party plugins to be >>>> updated >>>>>>>>>> this is an awful practice when the open-source product releases >>>> depend >>>>>>>>>> on some of the proprietary plugins >>>>>>>>> >>>>>>>>> This makes no sense, sorry. >>>>>>>>> >>>>>>>>> It is not that we depend on 3rd party plugins. >>>>>>>>> It is that *our users depend on us to preserve backwards >>>>>> compatibility*. >>>>>>>>> No one likes when their app breaks suddenly because of a library >>>>>> update. >>>>>>>>> >>>>>>>>> We know about one use case for sys-cache in GridGain, but there may >>>> be >>>>>>>>> more, no one knows. >>>>>>>>> Every breaking change should be carried out carefully and >> gradually. >>>>>>>>> >>>>>>>>> >>>>>>>>> On Thu, Dec 2, 2021 at 12:34 PM Maxim Muzafarov <mmu...@apache.org >>> >>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Slava, >>>>>>>>>> >>>>>>>>>> Thank you for the comments. >>>>>>>>>> >>>>>>>>>>> Maxim, the community must provide a reasonable time interval in >>>>>>>> order to >>>>>>>>>> notify all contributors and wait for updating all 3-rd party >>>> plugins. >>>>>>>>>> >>>>>>>>>> This is not actually true. We must notify about changes as earlier >>>> as >>>>>>>>>> possible and not only users but all the developers also. However, >> I >>>>>>>>>> don't think that we should wait for 3-rd party plugins to be >> updated >>>>>>>>>> this is an awful practice when the open-source product releases >>>> depend >>>>>>>>>> on some of the proprietary plugins. There is no dependency between >>>>>>>>>> Apache Ignite releases and proprietary plugin releases. If someone >>>>>>>>>> desires to upgrade to a new version of Apache Ignite it can update >>>> its >>>>>>>>>> plugins any time he likes. >>>>>>>>>> >>>>>>>>>>> We just need to provide a window that is enough to cover all >>>> related >>>>>>>>>> issues. >>>>>>>>>> >>>>>>>>>> Can you share all the issues you know, please? >>>>>>>>>> >>>>>>>>>>> distributed meta storage does not provide the ability to >> atomically >>>>>>>>>> change several properties at the same time (there are no >>>> transactions >>>>>>>> on >>>>>>>>>> this API). >>>>>>>>>> >>>>>>>>>> Can you share an example of what kind of properties we intend to >>>>>>>>>> change at the same? Will it be enough to change them through a >>>> single >>>>>>>>>> thread (e.g. the discovery thread or the exchange thread)? I agree >>>>>>>>>> here that distributed metastorage should provide such an ability, >>>>>>>>>> however, I can't find any real examples for Apache Ignite internal >>>>>>>>>> needs. Please, share the details and let's fix it. >>>>>>>>>> >>>>>>>>>> On Wed, 1 Dec 2021 at 23:19, Valentin Kulichenko >>>>>>>>>> <valentin.kuliche...@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>> Agree with Slava. Two months is not enough time, especially >>>>>>>> considering >>>>>>>>>>> that the system cache is not functionally equivalent to the >>>>>>>> metastorage. >>>>>>>>>> I >>>>>>>>>>> suggest we do the following: >>>>>>>>>>> >>>>>>>>>>> 1. Write down the differences between the system cache and the >>>>>>>>>> metastorage, >>>>>>>>>>> and provide a transition guide for plugin developers. >>>>>>>>>>> 2. Deprecate the system cache in 2.13. >>>>>>>>>>> 3. Remove the system cache in one of the further releases. I >> don't >>>>>>>> think >>>>>>>>>>> it's reasonable to do this earlier than mid next year (even that >> is >>>>>>>>>>> potentially too early). >>>>>>>>>>> >>>>>>>>>>> Removing the system cache is the right move, but let's be more >>>>>>>>>> considerate >>>>>>>>>>> to the users. There is absolutely no need to rush. >>>>>>>>>>> >>>>>>>>>>> -Val >>>>>>>>>>> >>>>>>>>>>> On Wed, Dec 1, 2021 at 7:28 AM Вячеслав Коптилин < >>>>>>>>>> slava.kopti...@gmail.com> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi Maxim, >>>>>>>>>>>> >>>>>>>>>>>>> On the other hand, I don't see any valuable reason why the >> change >>>>>>>>>> can't >>>>>>>>>>>> be done and we should wait for the future that never comes. >>>>>>>>>>>> Maxim, the community must provide a reasonable time interval in >>>>>>>> order >>>>>>>>>> to >>>>>>>>>>>> notify all contributors and wait for updating all 3-rd party >>>>>>>> plugins. >>>>>>>>>>>> Honestly, it does not seem to me that two, three months (the >>>>>>>> current >>>>>>>>>>>> timeline - end of March is the release date, so the end of Feb >> is >>>>>>>> code >>>>>>>>>>>> freeze) are quite enough. >>>>>>>>>>>> >>>>>>>>>>>>> I don't see any reasons why we should keep something in the >> CORE >>>>>>>>>> module >>>>>>>>>>>> that is being used at PLUGINS only. This is a lack of >> architecture >>>>>>>>>> design >>>>>>>>>>>> that must be fixed for sure; >>>>>>>>>>>> I agree with you. We just need to provide a window that is >> enough >>>>>>>> to >>>>>>>>>> cover >>>>>>>>>>>> all related issues. >>>>>>>>>>>> For example, distributed meta storage does not provide the >> ability >>>>>>>> to >>>>>>>>>>>> atomically change several properties at the same time (there are >>>> no >>>>>>>>>>>> transactions on this API). >>>>>>>>>>>> >>>>>>>>>>>> Perhaps, it would be nice to plan to remove the system cache on >>>>>>>> 2.14 or >>>>>>>>>>>> even 2.15. What do you think? >>>>>>>>>>>> >>>>>>>>>>>> Thanks, >>>>>>>>>>>> S. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> вт, 30 нояб. 2021 г. в 13:58, Maxim Muzafarov < >> mmu...@apache.org >>>>> : >>>>>>>>>>>> >>>>>>>>>>>>> Hello Val, >>>>>>>>>>>>> >>>>>>>>>>>>> Thank you for sharing the details. On the one hand, I agree >> with >>>>>>>> you >>>>>>>>>>>>> that there is no need to haste with this change and it must be >>>>>>>>>>>>> prepared carefully. On the other hand, I don't see any valuable >>>>>>>>>> reason >>>>>>>>>>>>> why the change can't be done and we should wait for the future >>>>>>>> that >>>>>>>>>>>>> never comes. >>>>>>>>>>>>> >>>>>>>>>>>>> Please, consider the following my considerations: >>>>>>>>>>>>> >>>>>>>>>>>>> - The release 2.13 is not started yet. It will take months to >> be >>>>>>>>>>>>> released (e.g. the end of March as a possible release date). >> The >>>>>>>> time >>>>>>>>>>>>> is more than enough; >>>>>>>>>>>>> - The 2.13 release has breaking changes, so it is a good >>>>>>>> opportunity >>>>>>>>>>>>> to fix some gaps; >>>>>>>>>>>>> - I don't see any reasons why we should keep something in the >>>>>>>> CORE >>>>>>>>>>>>> module that is being used at PLUGINS only. This is a lack of >>>>>>>>>>>>> architecture design that must be fixed for sure; >>>>>>>>>>>>> - The cache affects cluster stability and require additional >>>>>>>> human >>>>>>>>>>>>> resources for the code maintenance; >>>>>>>>>>>>> - As a straightforward solution plugins can create their own >>>>>>>> internal >>>>>>>>>>>>> caches and use them ever they like (or use the metastorage as I >>>>>>>>>>>>> mentioned earlier). Moving system cache to plugin doesn't look >> so >>>>>>>>>>>>> complicated and harmful; >>>>>>>>>>>>> >>>>>>>>>>>>> On Mon, 29 Nov 2021 at 23:07, Valentin Kulichenko >>>>>>>>>>>>> <valentin.kuliche...@gmail.com> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> Maxim, >>>>>>>>>>>>>> >>>>>>>>>>>>>> You're right that the system cache is still likely to be used >>>>>>>> by >>>>>>>>>>>> plugins. >>>>>>>>>>>>>> We at GridGain use it for security features, for example. As >>>>>>>> far >>>>>>>>>> as I >>>>>>>>>>>>> know, >>>>>>>>>>>>>> that's not the only case. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I also agree that the metastorage should be the preferred way >>>>>>>> for >>>>>>>>>> this >>>>>>>>>>>>> kind >>>>>>>>>>>>>> of purposes, but is there any harm in keeping the system cache >>>>>>>> for >>>>>>>>>> now? >>>>>>>>>>>>>> Unlike the legacy Service Grid, this is not a public feature >>>>>>>> that >>>>>>>>>> can >>>>>>>>>>>> be >>>>>>>>>>>>>> used directly by a regular user, so I'm not sure why the rush. >>>>>>>>>>>>>> >>>>>>>>>>>>>> How about we instead deprecate the system cache, clearly >>>>>>>> document >>>>>>>>>> how >>>>>>>>>>>> to >>>>>>>>>>>>>> use the metastorage as an alternative, and then complete the >>>>>>>>>> removal >>>>>>>>>>>>>> sometime in the future? >>>>>>>>>>>>>> >>>>>>>>>>>>>> -Val >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Sun, Nov 28, 2021 at 6:49 AM Maxim Muzafarov < >>>>>>>> mmu...@apache.org >>>>>>>>>>> >>>>>>>>>>>>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Igniters, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Since the legacy service grid implementation was removed [2] >>>>>>>> I'd >>>>>>>>>> like >>>>>>>>>>>>>>> to remove the ignite-sys-cache also. It is still possible >>>>>>>> that >>>>>>>>>> some >>>>>>>>>>>> of >>>>>>>>>>>>>>> Ignite plugins (e.g. security plugin) are still using this >>>>>>>> cache, >>>>>>>>>>>>>>> however, AFAIK this is not the reason to keep the outdated >>>>>>>> system >>>>>>>>>>>>>>> cache and these plugins must be migrated to the metastorage >>>>>>>>>> instead. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I've filed the issue [1] for removal. Any objections? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> [1] https://issues.apache.org/jira/browse/IGNITE-16008 >>>>>>>>>>>>>>> [2] https://issues.apache.org/jira/browse/IGNITE-15758 >>>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>> >>>>>> >>>> >>>> >> >>