Hello, Alexey Kuznetsov. I have two approvals from Saikat Maitra and Maxim Stepachov. I have plans to merge spring-boot autoconfigure modules to ignite-extensions. [1] Do you want to perform additional review?
[1] https://github.com/apache/ignite-extensions/pull/6 пт, 24 янв. 2020 г. в 07:41, Saikat Maitra <saikat.mai...@gmail.com>: > Hi Nikolay, > > Thank you for updating the PR, the changes looks good. > > Regards, > Saikat > > On Wed, Jan 22, 2020 at 1:33 PM Николай Ижиков <nizhi...@apache.org> > wrote: > > > Hello, Saikat. > > > > Thank you so much for the review. > > > > I answered your questions and resolve all the comments. > > Please, take a look, one more time. > > > > > 22 янв. 2020 г., в 07:58, Saikat Maitra <saikat.mai...@gmail.com> > > написал(а): > > > > > > Hi Nikolay, > > > > > > I have reviewed the PR and shared comments. > > > > > > Please let me know if you have any feedback. > > > > > > Regards, > > > Saikat > > > > > > On Mon, Jan 20, 2020 at 2:42 PM Николай Ижиков <nizhi...@apache.org> > > wrote: > > > > > >> Hello, Saikat. > > >> > > >> Thanks, for feedback. > > >> > > >> I raised a PR [1] to `ignite-extensions`. > > >> > > >> You can find description of the new module below(examples can be found > > at > > >> [2]): > > >> > > >> Module provides the ability to integrate `Ignite` into you spring-boot > > >> application with zero(or minimal) configuration. > > >> > > >> After you add this module as a dependency to your spring-boot > > application > > >> `Ignite` node will be configured and injected into `BeanFactory`. > > >> > > >> Algorithm to configure `Ignite` is the following: > > >> 1. If `IgniteConfiguration` bean exists in the `BeanFactory` it will > be > > >> used. > > >> 2. If `IgniteConfiguration` bean doesn't exist following rules are > > >> applied: > > >> 2.1. Default `Ignite` configuration created. > > >> 2.2. If `IgniteConfigurer` bean exists in `BeanFactory` it will be > > >> used to customize `IgniteConfiguration`. > > >> If a user wants to set custom SPI instances or similar > hardcoded > > >> values > > >> one should do it with `IgniteConfigurer` implementation. > > >> 2.3 Application properties applied to `IgniteConfiguration`. > Prefix > > >> for the properties is `ignite`. > > >> > > >> > > >> [1] https://github.com/apache/ignite-extensions/pull/6 > > >> [2] > > https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example > > >> > > >> > > >>> 18 янв. 2020 г., в 06:44, Saikat Maitra <saikat.mai...@gmail.com> > > >> написал(а): > > >>> > > >>> Hi Nikolay, > > >>> > > >>> Thank you for your email. As part of Ignite Extensions migration we > are > > >> migrating Ignite Extensions to following repo. > > >>> > > >>> https://github.com/apache/ignite-extensions > > >>> > > >>> We have added flink and pub-sub modules and few additional modules > are > > >> open in PR. > > >>> > > >>> You can refer to this PR to see how we are migrating the modules > > >> https://github.com/apache/ignite-extensions/pull/5 > > >>> > > >>> I wanted to connect and discuss the changes to understand the spring > > >> boot auto configure feature. We currently have an ignite spring module > > that > > >> allows resource injection capabilities and provides a parser for > Spring > > >> based xml configuration files. Can you please review and share if the > > >> changes you are proposing can be added as part of Ignite spring module > > or > > >> it make sense to make it a separate spring boot auto configure module. > > >>> > > >>> https://github.com/apache/ignite/tree/master/modules/spring > > >>> > > >>> Regards, > > >>> Saikat > > >>> > > >>> > > >>> > > >>> > > >>> > > >>> > > >>> > > >>> On Fri, Jan 17, 2020 at 3:12 AM Николай Ижиков <nizhi...@apache.org> > > >> wrote: > > >>> Tests added. > > >>> Please, review. > > >>> > > >>> Saikat, can you help with this PR [1]? > > >>> > > >>> I think it should be added as a separate module as we do with the > flink > > >> integration. > > >>> Can you help me with it? > > >>> Do we have some how-to for it? > > >>> > > >>> [1] https://github.com/apache/ignite/pull/7237 > > >>> > > >>>> 16 янв. 2020 г., в 16:51, Николай Ижиков <nizhikov....@gmail.com> > > >> написал(а): > > >>>> > > >>>> Hello, Denis. > > >>>> > > >>>> Thanks, for the feedback. > > >>>> > > >>>> Alexey, it seems, PR is ready to be reviewed, but I need some time(a > > >> day or two) to write tests. > > >>>> You can start with the core code review if you wish. > > >>>> > > >>>> Here are autoconfigurer requirements: > > >>>> > > >>>> 1. Start usage of Ignite with minimal(or zero) configuration. > > >>>> 2. Configure Ignite configuration properties with the standard > spring > > >> boot application properties. > > >>>> 3. Configure Ignite SPI implementation and so on that can’t be > > >> configured via #2. > > >>>> > > >>>> After some consultation with the Spring experts from the > > >> community(Maxim Stepachev thanks for the idea) > > >>>> I updated the PR with the logic described below: > > >>>> > > >>>> 1. To enable Ignite auto-configuration user should add > > >> `org.apache.ignite:spring-boot-ignite-autoconfigure:2.9.0` to > > dependencies. > > >>>> After it Ignite node will be started during spring-boot > application > > >> startup. > > >>>> > > >>>> 2. IgniteConfiguration initialization logic: > > >>>> > > >>>> 2.1 If {@link IgniteConfiguration} bean exists in {@link > BeanFactory} > > >> it will be used for the node start. > > >>>> 2.2 If {@link IgniteConfiguration} bean doesn't exist following > rules > > >> are applied: > > >>>> * Newly introducer IgniteConfigurer bean will be used to customize > an > > >> empty IgniteConfiguration instance. > > >>>> If a user wants to set custom SPI instances or similar hardcoded > > >> values one should do it IgniteConfigurer implementation. > > >>>> > > >>>> * Application properties will override config values. Prefix for > > >> properties names is "ignite». > > >>>> > > >>>> PS. Similar logic applied for the second module - > > >> `org.apache.ignite:spring-boot-ignite-client-autoconfigure:2.9.0`. > > >>>> It provides the same features but for the autoconfiguration of the > > >> IgniteClient > > >>>> > > >>>> > > >>>>> 15 янв. 2020 г., в 03:03, Denis Magda <dma...@apache.org> > > написал(а): > > >>>>> > > >>>>> Nikolay, > > >>>>> > > >>>>> Thanks for contributing in this direction! That's one of the gaps > on > > >> our > > >>>>> end and the user community will be certainly thankful once we fill > it > > >> in. > > >>>>> > > >>>>> *Alexey Kuznetsov*, as one of the Spring Boot experts, could you > > >> spend some > > >>>>> time reviewing the changes? > > >>>>> > > >>>>> As for the extensions/modularization activities, please join Saikat > > >> in the > > >>>>> discussions ([1] and [2]). He is contributing the foundation and > > >> moving our > > >>>>> existing integrations to that new repository. The Spring Boot > > >> improvements > > >>>>> might be moved or, another option, we might add this class to the > > >> core? > > >>>>> > > >>>>> [1] > > >>>>> > > >> > > > http://apache-ignite-developers.2346864.n4.nabble.com/IGNITE-12361-Migrate-Flume-module-to-ignite-extensions-td45010.html > > >>>>> [2] > > >>>>> > > >> > > > http://apache-ignite-developers.2346864.n4.nabble.com/DISCUSS-Proposal-for-Ignite-Extensions-as-a-separate-Bahir-module-or-Incubator-project-td44064.html > > >>>>> > > >>>>> - > > >>>>> Denis > > >>>>> > > >>>>> > > >>>>> On Sat, Jan 11, 2020 at 10:44 AM Николай Ижиков < > nizhi...@apache.org > > > > > >> wrote: > > >>>>> > > >>>>>> Hello, Igniters. > > >>>>>> > > >>>>>> During Ignite meetup I took part in there was a request from the > > >> users. > > >>>>>> They propose to create a custom spring boot autoconfigurer module > > for > > >>>>>> Ignite. > > >>>>>> This module should provide a smooth injection of Ignite to any > > >> spring-boot > > >>>>>> application. > > >>>>>> > > >>>>>> I've implemented a tiny straightforward prototype of the module > [1] > > >>>>>> Examples of the usage of integration can be found in the example > > >>>>>> application [2] > > >>>>>> > > >>>>>> For now, the module provides the following features: > > >>>>>> > > >>>>>> 1. Starts Ignite node and inject it in the spring > ApplicationContext > > >> if > > >>>>>> bean of the type IgniteConfiguration exists in the context. > > >>>>>> This can be achieved in two ways: > > >>>>>> * create `IgniteConfiguration` from java code [3] > > >>>>>> * add `ignite.xml` file to the application context [4] > > >>>>>> > > >>>>>> 2. Starts IgniteClient instance and injects it int the spring > > >> Application > > >>>>>> if: > > >>>>>> * ClientConfiguration bean exists in the context [5] > > >>>>>> * `spring.data.ignite.clientAddresses` exists in the application > > >>>>>> properties. [6] > > >>>>>> > > >>>>>> I have a following questions regards new module: > > >>>>>> > > >>>>>> 1. We have an extension initiative so where is the right place > for > > >> the > > >>>>>> new module? > > >>>>>> 2. Do we have spring experts in the community? What other > features > > >> for > > >>>>>> this autoconfigurer module required? > > >>>>>> > > >>>>>> [1] https://github.com/apache/ignite/pull/7237/files > > >>>>>> [2] > > >> https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example > > >>>>>> [3] > > >>>>>> > > >> > > > https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example/tree/master/src/main/java/org/apache/ignite/spring/boot/configfrombean > > >>>>>> [4] > > >>>>>> > > >> > > > https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example/tree/master/src/main/java/org/apache/ignite/spring/boot/configfromfile > > >>>>>> [5] > > >>>>>> > > >> > > > https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example/tree/master/src/main/java/org/apache/ignite/spring/boot/thinclientfrombean > > >>>>>> [6] > > >>>>>> > > >> > > > https://github.com/nizhikov/ignite-spring-boot-autoconfigure-example/tree/master/src/main/java/org/apache/ignite/spring/boot/thinclientfromconfig > > >>>>>> > > >>>>>> > > >>>> > > >>> > > >> > > >> > > > > >