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 > >>>>>>>>>>> > >>>>>>>>> > >>>>>>>> > >>>>>> > >>>> > >> > >> > >