Great, Michael! I announced the integration via our twitter channel: https://twitter.com/ApacheIgnite/status/1305568860964179968?s=20
and we'll work on a technical article a bit later once finish with the release of the new Ignite docs. - Denis On Mon, Sep 14, 2020 at 10:10 AM Michael Pollind <mpoll...@gmail.com> wrote: > here is the release: > https://search.maven.org/artifact/io.micronaut.ignite/micronaut-ignite-core/1.0.0.RC1/jar > > On Fri, Sep 11, 2020 at 10:16 AM Michael Pollind <mpoll...@gmail.com> > wrote: > >> looks like I was wrong, will have to wait till this PR get merged and a >> release is made in the repo. >> >> https://github.com/micronaut-projects/micronaut-core/pull/4070 >> >> On Fri, Sep 11, 2020 at 10:01 AM Michael Pollind <mpoll...@gmail.com> >> wrote: >> >>> The caching is setup in the branch and the release candidate is already >>> out I think. can't think of anything off the top of my head with tweaking >>> the ignite cache module but i'm sure a few adjustments can be made. >>> >>> On Thu, Sep 10, 2020 at 10:41 AM Denis Magda <dma...@apache.org> wrote: >>> >>>> Michael, congrats, it was a pleasure working with you! >>>> >>>> Let us know once the release candidate is published. I'll go ahead and >>>> update my tutorial, and would probably create a separate blog post for >>>> DZone or Dev.to: >>>> >>>> https://www.gridgain.com/docs/tutorials/micronaut/getting-started/ignite-micronaut-getting-started >>>> >>>> Are you planning to work on the Micronaut Caching module? Or is it >>>> already enabled and we just need to prepare examples on how to use Ignite >>>> as a Micronaut cache? >>>> >>>> - >>>> Denis >>>> >>>> >>>> On Thu, Sep 10, 2020 at 9:17 AM Michael Pollind <mpoll...@gmail.com> >>>> wrote: >>>> >>>>> With some help from @Denis Magda <dma...@gridgain.com>, we were able >>>>> to rework micronaut-ignite and a release candidate was approved. I'm >>>>> pretty happy with this first pass and there is a lot more that can be >>>>> added >>>>> but this is a good initial first step. >>>>> >>>>> documentation can be bound here: >>>>> https://micronaut-projects.github.io/micronaut-ignite/snapshot/guide/ >>>>> PR: https://github.com/micronaut-projects/micronaut-ignite/pull/33 >>>>> >>>>> On Thu, Aug 27, 2020 at 5:32 PM Michael Pollind <mpoll...@gmail.com> >>>>> wrote: >>>>> >>>>>> Not sure, I would probably bring that up in the PR so the micronaut >>>>>> devs are aware of this. Not sure how the CI will work and what can be >>>>>> arranged in this case. >>>>>> >>>>>> On Thu, Aug 27, 2020 at 3:50 PM Denis Magda <dma...@apache.org> >>>>>> wrote: >>>>>> >>>>>>> Michael, >>>>>>> >>>>>>> The docs look good enough for the release. Once the integration is >>>>>>> released, I'll update and extend my Micronaut tutorial elucidating >>>>>>> on how >>>>>>> to use the integration in practice for various use cases. >>>>>>> >>>>>>> Btw, are the ignite-core and ignite-cache Maven artifacts will be >>>>>>> released >>>>>>> for a specific version of Ignite? Ideally, the version of Ignite >>>>>>> needs to >>>>>>> be set in a pom.xml and the Micronaut integration should pick them >>>>>>> up. >>>>>>> >>>>>>> Also, what are we doing next - reviewing APIs of the ignite-cache >>>>>>> module or >>>>>>> going through a review process of the ignite-core and merging it >>>>>>> first to >>>>>>> the Micronaut repository? >>>>>>> >>>>>>> - >>>>>>> Denis >>>>>>> >>>>>>> >>>>>>> On Wed, Aug 26, 2020 at 3:35 PM Michael Pollind <mpoll...@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>> > Also you need to sign the CLA since you add a commit to my branch. >>>>>>> > >>>>>>> > branch: >>>>>>> https://github.com/pollend/micronaut-ignite/tree/feature/rework >>>>>>> > linked PR: >>>>>>> https://github.com/micronaut-projects/micronaut-ignite/pull/33 >>>>>>> > >>>>>>> > -- >>>>>>> > Michael Pollind >>>>>>> > >>>>>>> > On Wed, Aug 26, 2020 at 3:29 PM Denis Magda <dma...@apache.org> >>>>>>> wrote: >>>>>>> > >>>>>>> > > Could you share the full path to the branch? Don't want to pick >>>>>>> a wrong >>>>>>> > one >>>>>>> > > accidentally. >>>>>>> > > >>>>>>> > > >>>>>>> > > - >>>>>>> > > Denis >>>>>>> > > >>>>>>> > > >>>>>>> > > On Wed, Aug 26, 2020 at 2:47 PM Michael Pollind < >>>>>>> mpoll...@gmail.com> >>>>>>> > > wrote: >>>>>>> > > >>>>>>> > > > so that clears up the extra flag for micronaut-cache. just >>>>>>> need to >>>>>>> > > > intercept the default IgniteConfiguration bean and update the >>>>>>> > > > configuration. if you pull my latest changes from the rework >>>>>>> branch you >>>>>>> > > can >>>>>>> > > > look at the docs for that micronaut module. `./gradlew docs`. >>>>>>> > Finalizing >>>>>>> > > > the docs should be the last part of this. The configuration >>>>>>> from my >>>>>>> > > > perspective seems pretty much there. Is there anything else >>>>>>> that is >>>>>>> > > > missing? >>>>>>> > > > >>>>>>> > > > On Wed, Aug 26, 2020 at 1:31 PM Denis Magda <dma...@apache.org> >>>>>>> wrote: >>>>>>> > > > >>>>>>> > > > > 👍 Nice catch! >>>>>>> > > > > >>>>>>> > > > > - >>>>>>> > > > > Denis >>>>>>> > > > > >>>>>>> > > > > >>>>>>> > > > > On Wed, Aug 26, 2020 at 12:16 PM Michael Pollind < >>>>>>> mpoll...@gmail.com >>>>>>> > > >>>>>>> > > > > wrote: >>>>>>> > > > > >>>>>>> > > > > > One thing that just occurred to me for the >>>>>>> > > DefaultIgniteConfiguration. >>>>>>> > > > > you >>>>>>> > > > > > can actually just intercept the bean when it's created. >>>>>>> This should >>>>>>> > > let >>>>>>> > > > > us >>>>>>> > > > > > use the enable flag from ignite-core for ignite-cache >>>>>>> without the >>>>>>> > > > > > additional flag. >>>>>>> > > > > > >>>>>>> > > > > > @Singleton >>>>>>> > > > > > public class IgniteConfigurationFactoryInterceptor >>>>>>> implements >>>>>>> > > > > > BeanCreatedEventListener<DefaultIgniteConfiguration> { >>>>>>> > > > > > @Override >>>>>>> > > > > > public IgniteConfiguration >>>>>>> > > > > > onCreated(BeanCreatedEvent<DefaultIgniteConfiguration> >>>>>>> event) { >>>>>>> > > > > > IgniteConfiguration configuration = >>>>>>> event.getBean(); >>>>>>> > > > > > configuration.setIgniteInstanceName("instance-a"); >>>>>>> > > > > > return configuration; >>>>>>> > > > > > } >>>>>>> > > > > > } >>>>>>> > > > > > >>>>>>> > > > > > >>>>>>> > > > > > On Wed, Aug 26, 2020 at 11:31 AM Denis Magda < >>>>>>> dma...@apache.org> >>>>>>> > > > wrote: >>>>>>> > > > > > >>>>>>> > > > > > > Michael, >>>>>>> > > > > > > >>>>>>> > > > > > > Looks terrific! I went ahead and grouped the >>>>>>> configuration >>>>>>> > samples >>>>>>> > > > by a >>>>>>> > > > > > > client type: >>>>>>> > > > > > > >>>>>>> > > > > >>>>>>> > > >>>>>>> https://cwiki.apache.org/confluence/display/IGNITE/Micronaut+Integration >>>>>>> > > > > > > >>>>>>> > > > > > > As you see, the "Ignite Thin Client" section is blank >>>>>>> for now. >>>>>>> > > Would >>>>>>> > > > > you >>>>>>> > > > > > > mind filling it with configuration options following the >>>>>>> format >>>>>>> > > taken >>>>>>> > > > > for >>>>>>> > > > > > > the thick client? >>>>>>> > > > > > > >>>>>>> > > > > > > Ping me here once you're ready to review the API and >>>>>>> > implementation >>>>>>> > > > of >>>>>>> > > > > > the >>>>>>> > > > > > > ignite-caching module. >>>>>>> > > > > > > >>>>>>> > > > > > > - >>>>>>> > > > > > > Denis >>>>>>> > > > > > > >>>>>>> > > > > > > >>>>>>> > > > > > > On Tue, Aug 25, 2020 at 9:16 PM Michael Pollind < >>>>>>> > > mpoll...@gmail.com> >>>>>>> > > > > > > wrote: >>>>>>> > > > > > > >>>>>>> > > > > > > > Here is a sample project I threw together and I've >>>>>>> also updated >>>>>>> > > the >>>>>>> > > > > > wiki >>>>>>> > > > > > > > just a bit. working on updating the documentation on >>>>>>> the >>>>>>> > > micronaut >>>>>>> > > > > end. >>>>>>> > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > >>>>>>> > > > >>>>>>> > >>>>>>> https://cwiki.apache.org/confluence/display/IGNITE/Micronaut+Integration >>>>>>> > > > > > > > https://github.com/pollend/micronaut-ignite-sample >>>>>>> > > > > > > > >>>>>>> > > > > > > > On Mon, Aug 24, 2020 at 6:57 PM Michael Pollind < >>>>>>> > > > mpoll...@gmail.com> >>>>>>> > > > > > > > wrote: >>>>>>> > > > > > > > >>>>>>> > > > > > > > > >>>>>>> > > > > > > > > >>>>>>> > > > > > > > > yea, I'm not sure about ignite-cache config. >>>>>>> splitting it >>>>>>> > into >>>>>>> > > > two >>>>>>> > > > > > > > modules >>>>>>> > > > > > > > > seems kind of overly complicated, but I also don't >>>>>>> really >>>>>>> > like >>>>>>> > > > the >>>>>>> > > > > > > random >>>>>>> > > > > > > > > boolean flag. here is the tweaks from the config your >>>>>>> > provider: >>>>>>> > > > > > > > > https://github.com/pollend/micronaut-ignite/pull/2 >>>>>>> > > > > > > > > >>>>>>> > > > > > > > > kind of strange that there are not getters for the >>>>>>> > > > > > > > > TcpDiscoveryKubernetesIpFinder but there is enough >>>>>>> to verify >>>>>>> > > that >>>>>>> > > > > the >>>>>>> > > > > > > > > correct ipfinder was set from the unit test i've >>>>>>> written. >>>>>>> > > > > > > > > >>>>>>> > > > > > > > > static ip finder >>>>>>> > > > > > > > > >>>>>>> > > > > > > > > "ignite.enabled" >>>>>>> : true, >>>>>>> > > > > > > > > "ignite.communication-spi.local-port" : >>>>>>> > > > > > "localhost:1800", >>>>>>> > > > > > > > > "ignite.discovery-spi.static-ip-finder.enabled" >>>>>>> : "true", >>>>>>> > > > > > > > > >>>>>>> "ignite.discovery-spi.static-ip-finder.addresses[0]": " >>>>>>> > > > > > 127.0.0.1:47500 >>>>>>> > > > > > > ", >>>>>>> > > > > > > > > >>>>>>> "ignite.discovery-spi.static-ip-finder.addresses[1]": " >>>>>>> > > > > > 127.0.0.1:47501 >>>>>>> > > > > > > ", >>>>>>> > > > > > > > > >>>>>>> > > > > > > > > kubernetties ip finder >>>>>>> > > > > > > > > >>>>>>> > > > > > > > > "ignite.enabled" >>>>>>> : true, >>>>>>> > > > > > > > > "ignite.communication-spi.local-port" >>>>>>> : >>>>>>> > > > > > > "localhost:1800", >>>>>>> > > > > > > > > "ignite.discovery-spi.kubernetes-ip-finder.enabled" >>>>>>> : >>>>>>> > "true", >>>>>>> > > > > > > > > >>>>>>> "ignite.discovery-spi.kubernetes-ip-finder.namespace": >>>>>>> > > > "HelloWorld" >>>>>>> > > > > > > > > >>>>>>> > > > > > > > > >>>>>>> > > > > > > > > >>>>>>> > > > > > > > > >>>>>>> > > > > > > > > >>>>>>> > > > > > > > > On Mon, Aug 24, 2020 at 6:16 PM Denis Magda < >>>>>>> > dma...@apache.org >>>>>>> > > > >>>>>>> > > > > > wrote: >>>>>>> > > > > > > > > >>>>>>> > > > > > > > >> Michael, >>>>>>> > > > > > > > >> >>>>>>> > > > > > > > >> I was thinking over the idea of splitting the >>>>>>> ignite-cache >>>>>>> > > > module >>>>>>> > > > > in >>>>>>> > > > > > > two >>>>>>> > > > > > > > >> (one for a thick-client based connection and the >>>>>>> other for >>>>>>> > > thin >>>>>>> > > > > > client >>>>>>> > > > > > > > >> connections), and would try to avoid this route if >>>>>>> possible. >>>>>>> > > > > > > > >> >>>>>>> > > > > > > > >> With the @CacheConfig annotation, Micronaut >>>>>>> developers can >>>>>>> > > > create >>>>>>> > > > > a >>>>>>> > > > > > > > >> generic >>>>>>> > > > > > > > >> implementation that is agnostic to the Ignite >>>>>>> connectivity >>>>>>> > > > > methods, >>>>>>> > > > > > > > which >>>>>>> > > > > > > > >> is good. While internally, the ignite-cache >>>>>>> implementation >>>>>>> > can >>>>>>> > > > > > decide >>>>>>> > > > > > > > what >>>>>>> > > > > > > > >> Ignite Cache API to use (the thick or thin client >>>>>>> one, >>>>>>> > depends >>>>>>> > > > on >>>>>>> > > > > > the >>>>>>> > > > > > > > type >>>>>>> > > > > > > > >> of a client you started with our auto-configuration >>>>>>> > feature). >>>>>>> > > > > Let’s >>>>>>> > > > > > > > >> discuss >>>>>>> > > > > > > > >> all the existing issues here and jump on another >>>>>>> call to >>>>>>> > > > finalize >>>>>>> > > > > a >>>>>>> > > > > > > > >> solution if needed. >>>>>>> > > > > > > > >> >>>>>>> > > > > > > > >> Denis >>>>>>> > > > > > > > >> >>>>>>> > > > > > > > >> On Monday, August 24, 2020, Denis Magda < >>>>>>> dma...@apache.org> >>>>>>> > > > > wrote: >>>>>>> > > > > > > > >> >>>>>>> > > > > > > > >> > Michael, >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > Great progress, thanks for your patience. I went >>>>>>> ahead and >>>>>>> > > > > pushed >>>>>>> > > > > > > some >>>>>>> > > > > > > > >> > changes to your working branch. As you'll see, >>>>>>> those >>>>>>> > changes >>>>>>> > > > do >>>>>>> > > > > > some >>>>>>> > > > > > > > >> minor >>>>>>> > > > > > > > >> > tweaks in the >>>>>>> DefaultIgniteThinClientConfiguration class >>>>>>> > and >>>>>>> > > > add >>>>>>> > > > > > > > Static >>>>>>> > > > > > > > >> > with Kubernetes IP finders to the >>>>>>> > DefaultIgniteConfiguration >>>>>>> > > > > > class. >>>>>>> > > > > > > > The >>>>>>> > > > > > > > >> > IgniteConfigurationSpec fails for now, but I >>>>>>> think we'll >>>>>>> > > > figure >>>>>>> > > > > > how >>>>>>> > > > > > > to >>>>>>> > > > > > > > >> > modify the test on the call today. >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > Also, let's decide if we want to configure >>>>>>> IgniteCaches >>>>>>> > via >>>>>>> > > > the >>>>>>> > > > > > > > >> Micronaut >>>>>>> > > > > > > > >> > configuration. If an application needs to create >>>>>>> any >>>>>>> > caches, >>>>>>> > > > it >>>>>>> > > > > > can >>>>>>> > > > > > > do >>>>>>> > > > > > > > >> this >>>>>>> > > > > > > > >> > dynamically after an Ignite instance is started. >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > - >>>>>>> > > > > > > > >> > Denis >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > On Sat, Aug 22, 2020 at 1:15 PM Michael Pollind < >>>>>>> > > > > > mpoll...@gmail.com >>>>>>> > > > > > > > >>>>>>> > > > > > > > >> > wrote: >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > The way i've gone about providing dependencies is >>>>>>> that >>>>>>> > these >>>>>>> > > > can >>>>>>> > > > > > be >>>>>>> > > > > > > > >> > provided through a factory. >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > @Bean >>>>>>> > > > > > > > >> > @Named("default") >>>>>>> > > > > > > > >> > @Primary >>>>>>> > > > > > > > >> > public IgniteConfiguration >>>>>>> > > > > > > > >> igniteConfiguration(DefaultIgniteConfiguration >>>>>>> > configuration, >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> Collection<DefaultCacheConfiguration> >>>>>>> cacheConfigurations, >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> Collection<PluginProvider> providers, >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> Collection<DefaultExecutorConfiguration> >>>>>>> > > executorConfigurations, >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> Optional<PlatformConfiguration> >>>>>>> platformConfigurations, >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > Optional<CollisionSpi> >>>>>>> > > > > > > > >> collisionSpi, >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> Collection<LoadBalancingSpi> loadBalancingSpis, >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > Collection<FailoverSpi> >>>>>>> > > > > > > > >> failoverSpis, >>>>>>> > > > > > > > >> > >>>>>>> > > @ConsistencyId >>>>>>> > > > > > > > >> Optional<Serializable> consistencyId, >>>>>>> > > > > > > > >> > >>>>>>> > > > @IgniteLifecycle >>>>>>> > > > > > > > >> Collection<LifecycleBean> lifecycleBeans) { >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >>>>>>> > > > >>>>>>> configuration.setCacheConfiguration(cacheConfigurations.toArray(new >>>>>>> > > > > > > > >> CacheConfiguration[0])) >>>>>>> > > > > > > > >> > .setPluginProviders(providers.toArray(new >>>>>>> > > > > > > PluginProvider[0])) >>>>>>> > > > > > > > >> > >>>>>>> > > > > > >>>>>>> .setExecutorConfiguration(executorConfigurations.toArray(new >>>>>>> > > > > > > > >> ExecutorConfiguration[0])) >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > >>>>>>> .setPlatformConfiguration(platformConfigurations.orElse(null)) >>>>>>> > > > > > > > >> > .setFailoverSpi(failoverSpis.toArray(new >>>>>>> > > > > FailoverSpi[0])) >>>>>>> > > > > > > > >> > >>>>>>> .setLoadBalancingSpi(loadBalancingSpis.toArray(new >>>>>>> > > > > > > > >> LoadBalancingSpi[0])) >>>>>>> > > > > > > > >> > >>>>>>> .setConsistentId(consistencyId.orElse(null)) >>>>>>> > > > > > > > >> > >>>>>>> .setLifecycleBeans(lifecycleBeans.toArray(new >>>>>>> > > > > > > > LifecycleBean[0])) >>>>>>> > > > > > > > >> > >>>>>>> .setCollisionSpi(collisionSpi.orElse(null)); >>>>>>> > > > > > > > >> > return configuration; >>>>>>> > > > > > > > >> > } >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > On Sat, Aug 22, 2020 at 8:37 AM Michael Pollind < >>>>>>> > > > > > mpoll...@gmail.com >>>>>>> > > > > > > > >>>>>>> > > > > > > > >> > wrote: >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > here is an updated example what the yaml looks >>>>>>> like now. >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > ignite: >>>>>>> > > > > > > > >> > enabled: true >>>>>>> > > > > > > > >> > comunication-spi: >>>>>>> > > > > > > > >> > local-port: 5555 >>>>>>> > > > > > > > >> > cache-configurations: >>>>>>> > > > > > > > >> > - accounts: >>>>>>> > > > > > > > >> > table-name: ACCOUNTS >>>>>>> > > > > > > > >> > key-type: String >>>>>>> > > > > > > > >> > - books: >>>>>>> > > > > > > > >> > table-name: BOOKS >>>>>>> > > > > > > > >> > key-type: String >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > On Fri, Aug 21, 2020 at 10:28 PM Michael Pollind < >>>>>>> > > > > > > mpoll...@gmail.com> >>>>>>> > > > > > > > >> > wrote: >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > micronaut will only inject into a nested object >>>>>>> if its >>>>>>> > > static >>>>>>> > > > > and >>>>>>> > > > > > > > nested >>>>>>> > > > > > > > >> > in a class. Its a separate final class so it will >>>>>>> not work >>>>>>> > > in >>>>>>> > > > > this >>>>>>> > > > > > > > >> case. So >>>>>>> > > > > > > > >> > DataRegionConfiguration will not get set from the >>>>>>> > > environment. >>>>>>> > > > > > This >>>>>>> > > > > > > > is a >>>>>>> > > > > > > > >> > working example but this can be adjusted. I >>>>>>> guess it >>>>>>> > would >>>>>>> > > > have >>>>>>> > > > > > to >>>>>>> > > > > > > be >>>>>>> > > > > > > > >> > setup like DefaultIgniteConfiguration. >>>>>>> > > > > > > DefaultDataStorageConfiguration >>>>>>> > > > > > > > >> > and a nested EachProperty? Lets try have a >>>>>>> minimum working >>>>>>> > > > setup >>>>>>> > > > > > and >>>>>>> > > > > > > > >> then >>>>>>> > > > > > > > >> > add in the missing configurations as we go? >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > @ConfigurationBuilder(value = >>>>>>> "dataStorageConfiguration", >>>>>>> > > > > > excludes = >>>>>>> > > > > > > > >> "dataRegionConfigurations") >>>>>>> > > > > > > > >> > final DataStorageConfiguration >>>>>>> dataStorageConfiguration = >>>>>>> > > new >>>>>>> > > > > > > > >> DataStorageConfiguration(); >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > @EachProperty("dataRegionConfigurations") >>>>>>> > > > > > > > >> > public static class >>>>>>> DefaultDataRegionConfiguration { >>>>>>> > > > > > > > >> > @ConfigurationBuilder() >>>>>>> > > > > > > > >> > DataRegionConfiguration >>>>>>> dataRegionConfiguration = new >>>>>>> > > > > > > > >> DataRegionConfiguration(); >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > public DataRegionConfiguration >>>>>>> > > > getDataRegionConfiguration() >>>>>>> > > > > { >>>>>>> > > > > > > > >> > return dataRegionConfiguration; >>>>>>> > > > > > > > >> > } >>>>>>> > > > > > > > >> > } >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > On Fri, Aug 21, 2020 at 7:08 PM Michael Pollind < >>>>>>> > > > > > mpoll...@gmail.com >>>>>>> > > > > > > > >>>>>>> > > > > > > > >> > wrote: >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > Dennis, >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > oh, so I made those adjustments. I must have >>>>>>> missed it >>>>>>> > > because >>>>>>> > > > > > that >>>>>>> > > > > > > > >> didn't >>>>>>> > > > > > > > >> > occur to me. So DefaultIgniteConfiguration is >>>>>>> fine, but >>>>>>> > > > > > > > >> ClientConfiguration >>>>>>> > > > > > > > >> > is a final class so that can't be extended from. >>>>>>> This PR >>>>>>> > is >>>>>>> > > > > > starting >>>>>>> > > > > > > > to >>>>>>> > > > > > > > >> > shape up from my perspective, I just need to >>>>>>> update the >>>>>>> > > > > > > documentation. >>>>>>> > > > > > > > >> The >>>>>>> > > > > > > > >> > other thing I did was add a flag for the >>>>>>> associated cache >>>>>>> > to >>>>>>> > > > use >>>>>>> > > > > > > > >> > micronuat-cache. umm, I'll play with this a bit >>>>>>> and see >>>>>>> > If I >>>>>>> > > > can >>>>>>> > > > > > > work >>>>>>> > > > > > > > >> out >>>>>>> > > > > > > > >> > something better. ignite.enabled can be false but >>>>>>> you can >>>>>>> > > > > provide >>>>>>> > > > > > > your >>>>>>> > > > > > > > >> own >>>>>>> > > > > > > > >> > bean in place but that doesn't seem quite right. >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > [image: image.png] >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > >>>>>>> > > > https://github.com/micronaut-projects/micronaut-ignite/pull/33 >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > On Fri, Aug 21, 2020 at 6:29 PM Denis Magda < >>>>>>> > > > dma...@apache.org> >>>>>>> > > > > > > > wrote: >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > Michael, >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > Thanks, for verifying. >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > I've tried extending ClientConfiguration but >>>>>>> couldn't get >>>>>>> > > the >>>>>>> > > > > > > > >> > > getters/setters working with >>>>>>> ConfigurationBuilder. >>>>>>> > Instead >>>>>>> > > > > they >>>>>>> > > > > > > are >>>>>>> > > > > > > > >> just >>>>>>> > > > > > > > >> > > placed into wrapper classes. >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > Have a look at how Hazelcast implemented the >>>>>>> default >>>>>>> > > > > configuration >>>>>>> > > > > > > for >>>>>>> > > > > > > > >> its >>>>>>> > > > > > > > >> > thin client by extending ClientConfig class of >>>>>>> Hazelcast >>>>>>> > > core: >>>>>>> > > > > > > > >> > >>>>>>> > https://github.com/micronaut-projects/micronaut-cache/blob/ >>>>>>> > > > > > > > >> > >>>>>>> > > > > >>>>>>> master/cache-hazelcast/src/main/java/io/micronaut/cache/hazelcast/ >>>>>>> > > > > > > > >> > HazelcastClientConfiguration.java >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > Some observations. After extending ClientConfig, >>>>>>> their >>>>>>> > > > > Micronaut's >>>>>>> > > > > > > > >> > HazelcastClientConfiguration exposes the following >>>>>>> > > > configuration >>>>>>> > > > > > > > >> > parameteres: >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > - Some fields of primitive types that belong >>>>>>> to the >>>>>>> > > parent >>>>>>> > > > > > > > >> ClientConfig >>>>>>> > > > > > > > >> > class. They do this by adding this - *includes >>>>>>> = >>>>>>> > > > > {"properties", >>>>>>> > > > > > > > >> > "instanceName", "labels", "userContext", >>>>>>> > "clusterName"}* >>>>>>> > > > > > > > >> > - ClientNetworkConfig, ConnectionRetryConfig, >>>>>>> > > SocketOptions >>>>>>> > > > > > > > >> properties >>>>>>> > > > > > > > >> > (that exist in the parent ClientConfig class) >>>>>>> can not >>>>>>> > be >>>>>>> > > > > > > inherited >>>>>>> > > > > > > > as >>>>>>> > > > > > > > >> > above. Thus, they define those with >>>>>>> > @ConfigurationBuilder >>>>>>> > > > > > > manually. >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > As a result, their implementation is simple and >>>>>>> compact, >>>>>>> > and >>>>>>> > > > > here >>>>>>> > > > > > > is a >>>>>>> > > > > > > > >> > final list of configuration properties: >>>>>>> > > > > > > > >> > >>>>>>> https://micronaut-projects.github.io/micronaut-cache/ >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> >>>>>>> > > > > > > > >>>>>>> > > > > > >>>>>>> > > > >>>>>>> > >>>>>>> snapshot/guide/#io.micronaut.cache.hazelcast.HazelcastClientConfiguration >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > Could you check if we can follow a similar >>>>>>> approach? Let's >>>>>>> > > > start >>>>>>> > > > > > > with >>>>>>> > > > > > > > >> the >>>>>>> > > > > > > > >> > thin client. It's much simpler. >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > > yea, will need to >>>>>>> > > > > > > > >> > > setup a way for a user to provide their own >>>>>>> bean because >>>>>>> > > > there >>>>>>> > > > > > is >>>>>>> > > > > > > no >>>>>>> > > > > > > > >> way >>>>>>> > > > > > > > >> > a >>>>>>> > > > > > > > >> > > full configuration could be covered but I >>>>>>> haven't quite >>>>>>> > > > worked >>>>>>> > > > > > > that >>>>>>> > > > > > > > >> out >>>>>>> > > > > > > > >> > > yet. >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > That will be outstanding and fit well the design. >>>>>>> Let me >>>>>>> > > know >>>>>>> > > > if >>>>>>> > > > > > you >>>>>>> > > > > > > > >> need >>>>>>> > > > > > > > >> > me to help to figure out how to do that with >>>>>>> Micronaut. >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > - >>>>>>> > > > > > > > >> > Denis >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > On Fri, Aug 21, 2020 at 5:52 PM Michael Pollind < >>>>>>> > > > > > mpoll...@gmail.com >>>>>>> > > > > > > > >>>>>>> > > > > > > > >> > wrote: >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > > Dennis, >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >> > > This is what I came up with with some of the >>>>>>> > suggestions: >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >> > > >>>>>>> > > > https://github.com/micronaut-projects/micronaut-ignite/blob/ >>>>>>> > > > > > > > >> > >>>>>>> 3e1529ca4a40c2eb00793e344a36bb48d2a7d3fe/ignite-core/src/ >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >>>>>>> > > > > >>>>>>> > >>>>>>> main/java/io/micronaut/ignite/configuration/DefaultIgniteConfiguration. >>>>>>> > > > > > > > >> > java >>>>>>> > > > > > > > >> > > and >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >> > > >>>>>>> > > > https://github.com/micronaut-projects/micronaut-ignite/blob/ >>>>>>> > > > > > > > >> > >>>>>>> 3e1529ca4a40c2eb00793e344a36bb48d2a7d3fe/ignite-core/src/ >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> >>>>>>> > > > > > > > >>>>>>> > > > > > > >>>>>>> > > > > > >>>>>>> > > > > >>>>>>> > > > >>>>>>> > > >>>>>>> > >>>>>>> main/java/io/micronaut/ignite/configuration/DefaultCacheConfiguration.java >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >> > > test cases: >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >> > > >>>>>>> > > > https://github.com/micronaut-projects/micronaut-ignite/blob/ >>>>>>> > > > > > > > >> > >>>>>>> 3e1529ca4a40c2eb00793e344a36bb48d2a7d3fe/ignite-core/src/ >>>>>>> > > > > > > > >> > >>>>>>> > > test/groovy/io/micronaut/ignite/IgniteConfigurationSpec.groovy >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >> > > I've tried extending ClientConfiguration but >>>>>>> couldn't >>>>>>> > get >>>>>>> > > > the >>>>>>> > > > > > > > >> > > getters/setters working with >>>>>>> ConfigurationBuilder. >>>>>>> > Instead >>>>>>> > > > > they >>>>>>> > > > > > > are >>>>>>> > > > > > > > >> just >>>>>>> > > > > > > > >> > > placed into wrapper classes. Anyways, I don't >>>>>>> think >>>>>>> > > > > > > > >> ConfigurationProperty >>>>>>> > > > > > > > >> > > is supposed to work this way. Also note the >>>>>>> table in the >>>>>>> > > > > > > > >> documentation is >>>>>>> > > > > > > > >> > > generated and without a way to exclude things I >>>>>>> don't >>>>>>> > > think >>>>>>> > > > > this >>>>>>> > > > > > > > will >>>>>>> > > > > > > > >> > work >>>>>>> > > > > > > > >> > > cleanly. The other thing I wanted to do was nest >>>>>>> > > > @EachProperty >>>>>>> > > > > > in >>>>>>> > > > > > > a >>>>>>> > > > > > > > >> > single >>>>>>> > > > > > > > >> > > @ConfigurationProperties but that doesn't work >>>>>>> with how >>>>>>> > > > stuff >>>>>>> > > > > > gets >>>>>>> > > > > > > > >> > resolved >>>>>>> > > > > > > > >> > > ( >>>>>>> > > > > > >>>>>>> https://github.com/micronaut-projects/micronaut-core/issues/3938 >>>>>>> > > > > > > ). >>>>>>> > > > > > > > >> so >>>>>>> > > > > > > > >> > the >>>>>>> > > > > > > > >> > > cachConfiguration is in another class. This is >>>>>>> kind of a >>>>>>> > > > first >>>>>>> > > > > > > > working >>>>>>> > > > > > > > >> > > example so this will need to be adjusted quite >>>>>>> a bit. >>>>>>> > yea, >>>>>>> > > > > will >>>>>>> > > > > > > need >>>>>>> > > > > > > > >> to >>>>>>> > > > > > > > >> > > setup a way for a user to provide their own >>>>>>> bean because >>>>>>> > > > there >>>>>>> > > > > > is >>>>>>> > > > > > > no >>>>>>> > > > > > > > >> way >>>>>>> > > > > > > > >> > a >>>>>>> > > > > > > > >> > > full configuration could be covered but I >>>>>>> haven't quite >>>>>>> > > > worked >>>>>>> > > > > > > that >>>>>>> > > > > > > > >> out >>>>>>> > > > > > > > >> > > yet. >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >> > > If this is ok then I can do another pass on the >>>>>>> > > confluence. >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >> > > On Fri, Aug 21, 2020 at 1:55 PM Denis Magda < >>>>>>> > > > > dma...@apache.org> >>>>>>> > > > > > > > >> wrote: >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >> > > > Michael, >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > > Finally, I figured out Micronaut configuration >>>>>>> > > > > specificities. >>>>>>> > > > > > > What >>>>>>> > > > > > > > >> > > confused >>>>>>> > > > > > > > >> > > > me before, is that even though the beans >>>>>>> configuration >>>>>>> > > in >>>>>>> > > > > > > > Micronaut >>>>>>> > > > > > > > >> > looks >>>>>>> > > > > > > > >> > > > quite similar to the Spring Boot approach, >>>>>>> the former >>>>>>> > > > > > automates >>>>>>> > > > > > > a >>>>>>> > > > > > > > >> lot >>>>>>> > > > > > > > >> > > with >>>>>>> > > > > > > > >> > > > the help of reflection in runtime. That's how >>>>>>> our >>>>>>> > > default >>>>>>> > > > > > Spring >>>>>>> > > > > > > > >> Boot >>>>>>> > > > > > > > >> > > > configuration looks >>>>>>> > > > > > > > >> > > > < >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > >>>>>>> > https://github.com/apache/ignite-extensions/blob/master/ >>>>>>> > > > > > > > >> > >>>>>>> modules/spring-boot-thin-client-autoconfigure-ext/src/ >>>>>>> > > > > > > > >> > >>>>>>> > > > main/java/org/apache/ignite/springframework/boot/autoconfigure/ >>>>>>> > > > > > > > >> > IgniteClientConfigurer.java >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > like. And that's enough to let the users >>>>>>> define any >>>>>>> > > > possible >>>>>>> > > > > > > > >> property >>>>>>> > > > > > > > >> > of >>>>>>> > > > > > > > >> > > an >>>>>>> > > > > > > > >> > > > IgniteConfiguration instance as per this >>>>>>> example >>>>>>> > > > > > > > >> > > > < >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > >>>>>>> https://apacheignite-mix.readme.io/docs/spring-boot# >>>>>>> > > > > > > > >> > set-ignite-up-via-spring-boot-configuration >>>>>>> > > > > > > > >> > > > >. >>>>>>> > > > > > > > >> > > > The upside of the reflection. >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > > Anyway, let's go back to our world. That's >>>>>>> what I >>>>>>> > would >>>>>>> > > > > > suggest. >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > > *Ignite Thin Client* >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > > - Let's create >>>>>>> DefaultThinClientConfiguration that >>>>>>> > > > > > *extends* >>>>>>> > > > > > > > >> > Ignite's >>>>>>> > > > > > > > >> > > > ClientConfiguration >>>>>>> > > > > > > > >> > > > < >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > >>>>>>> https://github.com/apache/ignite/blob/master/modules/ >>>>>>> > > > > > > > >> > >>>>>>> core/src/main/java/org/apache/ignite/configuration/ >>>>>>> > > > > > > > >> > ClientConfiguration.java >>>>>>> > > > > > > > >> > > > >. >>>>>>> > > > > > > > >> > > > Once done, it will be possible to >>>>>>> configure most of >>>>>>> > > > > > > > >> > > ClientConfiguration >>>>>>> > > > > > > > >> > > > settings which are primitive types. (guess >>>>>>> that's >>>>>>> > how >>>>>>> > > > you >>>>>>> > > > > > > were >>>>>>> > > > > > > > >> doing >>>>>>> > > > > > > > >> > > > that >>>>>>> > > > > > > > >> > > > before I joined the review) >>>>>>> > > > > > > > >> > > > - Some fields of the ClientConfiguration >>>>>>> class are >>>>>>> > of >>>>>>> > > > > > custom >>>>>>> > > > > > > > >> > > > non-primitive types and should be added >>>>>>> into the >>>>>>> > > > > > > > >> > > > DefaultThinClientConfiguration explicitly >>>>>>> via the >>>>>>> > > > > > > > >> > > @ConfigurationBuilder >>>>>>> > > > > > > > >> > > > annotation. Those fields are *sslType, >>>>>>> sslProtocol, >>>>>>> > > > > > > > >> > > > sslCtxFactory, txCfg*. >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > > Apart from the >>>>>>> DefaultThinClientConfiguration, can we >>>>>>> > > > > support >>>>>>> > > > > > > > >> another >>>>>>> > > > > > > > >> > > > configuration approach when a >>>>>>> ClientConfiguration bean >>>>>>> > > is >>>>>>> > > > > > > created >>>>>>> > > > > > > > >> > > > programmatically in the source code and the >>>>>>> > integration >>>>>>> > > > uses >>>>>>> > > > > > > that >>>>>>> > > > > > > > >> bean >>>>>>> > > > > > > > >> > to >>>>>>> > > > > > > > >> > > > initialize an instance of the thin client >>>>>>> (instead of >>>>>>> > > > > > > > >> > > > using DefaultThinClientConfiguration that >>>>>>> requires to >>>>>>> > > set >>>>>>> > > > > the >>>>>>> > > > > > > > >> > properties >>>>>>> > > > > > > > >> > > > via YAML,etc.). For instance, that's how the >>>>>>> > > > > > ClientConfiguration >>>>>>> > > > > > > > >> bean >>>>>>> > > > > > > > >> > is >>>>>>> > > > > > > > >> > > > created programmatically in Spring Boot >>>>>>> > > > > > > > >> > > > < >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >> >>>>>>> > > > > > > >>>>>>> > > > > >>>>>>> > > >>>>>>> https://apacheignite-mix.readme.io/docs/spring-boot#set-thin-client-up- >>>>>>> > > > > > > > >> > programmatically >>>>>>> > > > > > > > >> > > > >and >>>>>>> > > > > > > > >> > > > our integration uses it to initialize an >>>>>>> Ignite >>>>>>> > object. >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > > *Ignite Node (server or thick client)* >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > > Obviously, this one is trickier due to the >>>>>>> numerous >>>>>>> > > > > > > configuration >>>>>>> > > > > > > > >> > > > parameters of the IgniteConfiguration class >>>>>>> > > > > > > > >> > > > < >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > >>>>>>> https://github.com/apache/ignite/blob/master/modules/ >>>>>>> > > > > > > > >> > >>>>>>> core/src/main/java/org/apache/ignite/configuration/ >>>>>>> > > > > > > > >> > IgniteConfiguration.java >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > . >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > > So, as you suggested before, we need to >>>>>>> select the >>>>>>> > most >>>>>>> > > > > > > frequently >>>>>>> > > > > > > > >> used >>>>>>> > > > > > > > >> > > > configuration parameters and add them to the >>>>>>> > > > > > > > >> DefaultIgniteConfiguration >>>>>>> > > > > > > > >> > > > with @ConfigurationBuilder annotation. >>>>>>> However, it >>>>>>> > seems >>>>>>> > > > > > > > reasonable >>>>>>> > > > > > > > >> if >>>>>>> > > > > > > > >> > > > DefaultIgniteConfiguration will extend >>>>>>> Ignite's >>>>>>> > > > > > > > IgniteConfiguration >>>>>>> > > > > > > > >> (so >>>>>>> > > > > > > > >> > > > that we don't need to list parameters of >>>>>>> primitive >>>>>>> > > types). >>>>>>> > > > > > Based >>>>>>> > > > > > > > on >>>>>>> > > > > > > > >> my >>>>>>> > > > > > > > >> > > > experience, I would add the following >>>>>>> settings of >>>>>>> > custom >>>>>>> > > > > > > > >> non-primitive >>>>>>> > > > > > > > >> > > > types: >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > > - TcpDiscoverySpi >>>>>>> > > > > > > > >> > > > < >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >>>>>>> > > > >>>>>>> https://github.com/apache/ignite/blob/f4b30f7f1e736845ffa8eaf2d8aa17 >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> >>>>>>> > > > > > > > >>>>>>> > > > > > > >>>>>>> > > > > > >>>>>>> > > > > >>>>>>> > > > >>>>>>> > > >>>>>>> > >>>>>>> 1700a928eb/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ >>>>>>> > > > > > > > >> > TcpDiscoverySpi.java >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > with >>>>>>> > > > > > > > >> > > > all its fields of primitive types (this >>>>>>> should be >>>>>>> > > done >>>>>>> > > > > > > easily, >>>>>>> > > > > > > > >> > right, >>>>>>> > > > > > > > >> > > > without copy-paste?) and its ipFinder >>>>>>> field. In the >>>>>>> > > > > > > beginning, >>>>>>> > > > > > > > I >>>>>>> > > > > > > > >> > would >>>>>>> > > > > > > > >> > > > only >>>>>>> > > > > > > > >> > > > support setting TcpDiscoveryVmIpFinder >>>>>>> > > > > > > > >> > > > < >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >>>>>>> > > > >>>>>>> https://github.com/apache/ignite/blob/f4b30f7f1e736845ffa8eaf2d8aa17 >>>>>>> > > > > > > > >> > >>>>>>> 1700a928eb/modules/core/src/main/java/org/apache/ignite/ >>>>>>> > > > > > > > >> > >>>>>>> spi/discovery/tcp/ipfinder/vm/TcpDiscoveryVmIpFinder.java >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > and >>>>>>> > > > > > > > >> > > > KubernetesIpFinder >>>>>>> > > > > > > > >> > > > < >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >>>>>>> > > > >>>>>>> https://github.com/apache/ignite/blob/f4b30f7f1e736845ffa8eaf2d8aa17 >>>>>>> > > > > > > > >> > >>>>>>> 1700a928eb/modules/kubernetes/src/main/java/org/apache/ >>>>>>> > > > > > > > >> > ignite/spi/discovery/tcp/ipfinder/kubernetes/ >>>>>>> > > > > > > > >> > TcpDiscoveryKubernetesIpFinder.java >>>>>>> > > > > > > > >> > > > >via >>>>>>> > > > > > > > >> > > > the DefaultIgniteConfiguration. >>>>>>> > > > > > > > >> > > > - DataStorageConfiguration >>>>>>> > > > > > > > >> > > > < >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >>>>>>> > > > >>>>>>> https://github.com/apache/ignite/blob/f4b30f7f1e736845ffa8eaf2d8aa17 >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > >>>>>>> > > > >>>>>>> 1700a928eb/modules/core/src/main/java/org/apache/ignite/configuration/ >>>>>>> > > > > > > > >> > DataStorageConfiguration.java >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > including >>>>>>> > > > > > > > >> > > > its DataStorageConfiguration.dataRegions >>>>>>> property. >>>>>>> > > > > > > > >> > > > - TcpCommunicationSpi >>>>>>> > > > > > > > >> > > > < >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >>>>>>> > > > >>>>>>> https://github.com/apache/ignite/blob/f4b30f7f1e736845ffa8eaf2d8aa17 >>>>>>> > > > > > > > >> > >>>>>>> 1700a928eb/modules/core/src/main/java/org/apache/ignite/ >>>>>>> > > > > > > > >> > spi/communication/tcp/TcpCommunicationSpi.java >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > with >>>>>>> > > > > > > > >> > > > its fields of primitive types. Again, here >>>>>>> is I'm >>>>>>> > > > > assuming >>>>>>> > > > > > > that >>>>>>> > > > > > > > >> we >>>>>>> > > > > > > > >> > can >>>>>>> > > > > > > > >> > > > do >>>>>>> > > > > > > > >> > > > this avoiding copy-pasting. Either through >>>>>>> > > > > > > > @ConfigurationBuilder >>>>>>> > > > > > > > >> > > > (include) >>>>>>> > > > > > > > >> > > > or inheritence. >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > > If the user wants to configure any settings >>>>>>> > unsupported >>>>>>> > > by >>>>>>> > > > > > > > >> > > > DefaultIgniteConfiguration then, there should >>>>>>> be a way >>>>>>> > > to >>>>>>> > > > > > create >>>>>>> > > > > > > > an >>>>>>> > > > > > > > >> > > > IgniteConfiguration bean programmatically and >>>>>>> use it >>>>>>> > to >>>>>>> > > > > > > initialize >>>>>>> > > > > > > > >> an >>>>>>> > > > > > > > >> > > > Ignite instance (instead of >>>>>>> > DefaultIgniteConfiguration). >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > > What's your thinking? Let me know if I'm >>>>>>> still missing >>>>>>> > > > > > > something. >>>>>>> > > > > > > > >> > > > - >>>>>>> > > > > > > > >> > > > Denis >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > > On Wed, Aug 19, 2020 at 8:49 PM Saikat Maitra >>>>>>> < >>>>>>> > > > > > > > >> saikat.mai...@gmail.com >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >> > > > wrote: >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > > > Hi Michael, Denis >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > > I was looking into tiering options for >>>>>>> ehcache[1] >>>>>>> > and >>>>>>> > > > > > network >>>>>>> > > > > > > > >> options >>>>>>> > > > > > > > >> > > for >>>>>>> > > > > > > > >> > > > > Hazelcast[2] and I am thinking we can >>>>>>> implement >>>>>>> > > > something >>>>>>> > > > > > > > >> similar to >>>>>>> > > > > > > > >> > > > > configure CommunicationSpi >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > > [1] >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > >>>>>>> https://micronaut-projects.github.io/micronaut-cache/ >>>>>>> > > > > > > > >> > snapshot/guide/#ehcache >>>>>>> > > > > > > > >> > > > > [2] >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > >>>>>>> https://micronaut-projects.github.io/micronaut-cache/ >>>>>>> > > > > > > > >> > snapshot/guide/#hazelcast >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > > Let me know what you think. >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > > Regards, >>>>>>> > > > > > > > >> > > > > Saikat >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > > On Wed, Aug 19, 2020 at 7:09 PM Michael >>>>>>> Pollind < >>>>>>> > > > > > > > >> mpoll...@gmail.com> >>>>>>> > > > > > > > >> > > > > wrote: >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > > > > A lot of this was just figured out through >>>>>>> > > > > > experimentation. >>>>>>> > > > > > > > You >>>>>>> > > > > > > > >> can >>>>>>> > > > > > > > >> > > ask >>>>>>> > > > > > > > >> > > > > > questions in the micronaut gitter: >>>>>>> > > > > > > > >> > > > > > https://gitter.im/micronautfw/questions >>>>>>> > > > > > > > >> > > > > > . Micronaut documentation is pretty >>>>>>> comprehensive: >>>>>>> > > > > > > > >> > > > > > >>>>>>> https://docs.micronaut.io/latest/guide/index.html >>>>>>> > . >>>>>>> > > > look >>>>>>> > > > > > for >>>>>>> > > > > > > > >> > > > EachProperty >>>>>>> > > > > > > > >> > > > > > and ConfigurationProperty. you can also >>>>>>> hunt >>>>>>> > through >>>>>>> > > > the >>>>>>> > > > > > > > current >>>>>>> > > > > > > > >> > > > existing >>>>>>> > > > > > > > >> > > > > > micronaut modules and find how those >>>>>>> configuration >>>>>>> > > > items >>>>>>> > > > > > are >>>>>>> > > > > > > > >> setup. >>>>>>> > > > > > > > >> > > > There >>>>>>> > > > > > > > >> > > > > > is also the unit test cases in >>>>>>> micronaut-core >>>>>>> > which >>>>>>> > > > have >>>>>>> > > > > > > been >>>>>>> > > > > > > > >> > pretty >>>>>>> > > > > > > > >> > > > > > helpful in the past in working out how >>>>>>> some of >>>>>>> > these >>>>>>> > > > > > > > annotations >>>>>>> > > > > > > > >> > work >>>>>>> > > > > > > > >> > > > in >>>>>>> > > > > > > > >> > > > > > practice. >>>>>>> > > > > > > > >> > > > > > >>>>>>> > > > > > > > >> > > > > > On Wed, Aug 19, 2020 at 4:50 PM Denis >>>>>>> Magda < >>>>>>> > > > > > > > dma...@apache.org> >>>>>>> > > > > > > > >> > > wrote: >>>>>>> > > > > > > > >> > > > > > >>>>>>> > > > > > > > >> > > > > > > Michael, >>>>>>> > > > > > > > >> > > > > > > >>>>>>> > > > > > > > >> > > > > > > Alright, then the question on the >>>>>>> possible >>>>>>> > > quantity >>>>>>> > > > of >>>>>>> > > > > > > > Ignite >>>>>>> > > > > > > > >> > > > instances >>>>>>> > > > > > > > >> > > > > > is >>>>>>> > > > > > > > >> > > > > > > settled - the integration will allow to >>>>>>> > > > > auto-configure a >>>>>>> > > > > > > > >> single >>>>>>> > > > > > > > >> > > > > instance >>>>>>> > > > > > > > >> > > > > > > only. >>>>>>> > > > > > > > >> > > > > > > >>>>>>> > > > > > > > >> > > > > > > Give me a couple of days to look into >>>>>>> the >>>>>>> > > > > configuration >>>>>>> > > > > > > > >> matters >>>>>>> > > > > > > > >> > of >>>>>>> > > > > > > > >> > > > > > > DefaultIgniteConfiguration and see what >>>>>>> I can >>>>>>> > > > suggest. >>>>>>> > > > > > > Could >>>>>>> > > > > > > > >> you >>>>>>> > > > > > > > >> > > > > > recommend >>>>>>> > > > > > > > >> > > > > > > any materials (or sources) that on >>>>>>> Micronaut >>>>>>> > > > > > configuration >>>>>>> > > > > > > > >> > > specifies >>>>>>> > > > > > > > >> > > > > > > (through YAML and programmatically via >>>>>>> source >>>>>>> > > code)? >>>>>>> > > > > > > > >> > > > > > > >>>>>>> > > > > > > > >> > > > > > > Denis >>>>>>> > > > > > > > >> > > > > > > >>>>>>> > > > > > > > >> > > > > > > On Wednesday, August 19, 2020, Michael >>>>>>> Pollind < >>>>>>> > > > > > > > >> > mpoll...@gmail.com >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > > > > wrote: >>>>>>> > > > > > > > >> > > > > > > >>>>>>> > > > > > > > >> > > > > > > > I don't think micronaut will be able >>>>>>> to infer >>>>>>> > > the >>>>>>> > > > > > > > >> > > communicationSpi, >>>>>>> > > > > > > > >> > > > > so >>>>>>> > > > > > > > >> > > > > > > you >>>>>>> > > > > > > > >> > > > > > > > need to define it separately as >>>>>>> follows: >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > > > >>>>>>> https://github.com/pollend/micronaut-ignite/blob/feature/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> >>>>>>> > > > > > >>>>>>> > >>>>>>> rework-1/ignite-core/src/main/java/io/micronaut/ignite/configuration/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> DefaultIgniteConfiguration.java#L40-L43. >>>>>>> > > > > > > > >> > > > > > > > With this setup the configuration >>>>>>> should look >>>>>>> > > > pretty >>>>>>> > > > > > > much >>>>>>> > > > > > > > >> like >>>>>>> > > > > > > > >> > > the >>>>>>> > > > > > > > >> > > > > > > > spring-boot sample you showed me: >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > https://apacheignite-mix.readme.io/docs/spring-boot# >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> set-ignite-up-via-spring-boot-configuration. >>>>>>> > > > > > > > >> > > > > > > > I agree it should make the >>>>>>> configuration >>>>>>> > easier >>>>>>> > > > with >>>>>>> > > > > > > just >>>>>>> > > > > > > > >> > > allowing >>>>>>> > > > > > > > >> > > > a >>>>>>> > > > > > > > >> > > > > > > single >>>>>>> > > > > > > > >> > > > > > > > instance and it matches up well with >>>>>>> > spring-boot >>>>>>> > > > > > > > >> configuration: >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > https://docs.micronaut.io/latest/api/io/micronaut/ >>>>>>> > > > > > > > >> > > > > > > > context/annotation/Requires.html. >>>>>>> > > > > > > > >> > > > > > > > Since its mostly a niche usecase then >>>>>>> having >>>>>>> > > that >>>>>>> > > > as >>>>>>> > > > > > the >>>>>>> > > > > > > > >> > default >>>>>>> > > > > > > > >> > > > use >>>>>>> > > > > > > > >> > > > > > case >>>>>>> > > > > > > > >> > > > > > > > seems pretty ideal to me. the >>>>>>> definition will >>>>>>> > > work >>>>>>> > > > > as >>>>>>> > > > > > > > >> follows: >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > ignite: >>>>>>> > > > > > > > >> > > > > > > > enable true >>>>>>> > > > > > > > >> > > > > > > > ignite-instance-name: name >>>>>>> > > > > > > > >> > > > > > > > communication-spi: >>>>>>> > > > > > > > >> > > > > > > > local-port: 5555 >>>>>>> > > > > > > > >> > > > > > > > data-storage-configuration: >>>>>>> > > > > > > > >> > > > > > > > ... >>>>>>> > > > > > > > >> > > > > > > > cache-configurations: >>>>>>> > > > > > > > >> > > > > > > > - name: accounts >>>>>>> > > > > > > > >> > > > > > > > queryEntities: >>>>>>> > > > > > > > >> > > > > > > > - tableName: NAME >>>>>>> > > > > > > > >> > > > > > > > ... >>>>>>> > > > > > > > >> > > > > > > > - ... >>>>>>> > > > > > > > >> > > > > > > > ignite-thin: >>>>>>> > > > > > > > >> > > > > > > > enable: false >>>>>>> > > > > > > > >> > > > > > > > instance-name: name >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > Micronaut has some mechanism to >>>>>>> enforce the >>>>>>> > > > presence >>>>>>> > > > > > of >>>>>>> > > > > > > > >> > something >>>>>>> > > > > > > > >> > > > > that >>>>>>> > > > > > > > >> > > > > > > > should suffice for this usecase: >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > https://docs.micronaut.io/latest/api/io/micronaut/ >>>>>>> > > > > > > > >> > > > > > > > context/annotation/Requires.html >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > On Wed, Aug 19, 2020 at 2:45 PM Denis >>>>>>> Magda < >>>>>>> > > > > > > > >> dma...@apache.org >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >> > > > > wrote: >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > Michael, >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > > The current way I have it setup >>>>>>> is the >>>>>>> > > primary >>>>>>> > > > > > bean >>>>>>> > > > > > > is >>>>>>> > > > > > > > >> used >>>>>>> > > > > > > > >> > > by >>>>>>> > > > > > > > >> > > > > > > default >>>>>>> > > > > > > > >> > > > > > > > so >>>>>>> > > > > > > > >> > > > > > > > > > you won't be able to use >>>>>>> micronaut-cache >>>>>>> > > with >>>>>>> > > > > > > anything >>>>>>> > > > > > > > >> but >>>>>>> > > > > > > > >> > > the >>>>>>> > > > > > > > >> > > > > > > default >>>>>>> > > > > > > > >> > > > > > > > > > bean. I guess one can override >>>>>>> the other >>>>>>> > if >>>>>>> > > > the >>>>>>> > > > > > > > >> > configuration >>>>>>> > > > > > > > >> > > > is >>>>>>> > > > > > > > >> > > > > > > > present. >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > The more I'm thinking the more I'm >>>>>>> convinced >>>>>>> > > > that >>>>>>> > > > > we >>>>>>> > > > > > > > >> > shouldn't >>>>>>> > > > > > > > >> > > > > bother >>>>>>> > > > > > > > >> > > > > > > > about >>>>>>> > > > > > > > >> > > > > > > > > the auto-configuration of several >>>>>>> Ignite >>>>>>> > > > > instances. >>>>>>> > > > > > > As I >>>>>>> > > > > > > > >> said >>>>>>> > > > > > > > >> > > > > before, >>>>>>> > > > > > > > >> > > > > > > > > that's an occasional use case. >>>>>>> Furthermore, >>>>>>> > > > > > Micronout >>>>>>> > > > > > > is >>>>>>> > > > > > > > >> > > designed >>>>>>> > > > > > > > >> > > > > for >>>>>>> > > > > > > > >> > > > > > > > > micro-services and serverless >>>>>>> functions and >>>>>>> > I >>>>>>> > > > can >>>>>>> > > > > > > hardly >>>>>>> > > > > > > > >> > think >>>>>>> > > > > > > > >> > > > of a >>>>>>> > > > > > > > >> > > > > > use >>>>>>> > > > > > > > >> > > > > > > > > case when a micro-service or >>>>>>> function would >>>>>>> > > need >>>>>>> > > > > to >>>>>>> > > > > > > boot >>>>>>> > > > > > > > >> up >>>>>>> > > > > > > > >> > > > several >>>>>>> > > > > > > > >> > > > > > > > Ignite >>>>>>> > > > > > > > >> > > > > > > > > clients. What if we let to >>>>>>> auto-configure a >>>>>>> > > > single >>>>>>> > > > > > > > Ignite >>>>>>> > > > > > > > >> > > > instance >>>>>>> > > > > > > > >> > > > > > per >>>>>>> > > > > > > > >> > > > > > > > > application process? What's your >>>>>>> view on >>>>>>> > this? >>>>>>> > > > It >>>>>>> > > > > > will >>>>>>> > > > > > > > >> > > > > significantly >>>>>>> > > > > > > > >> > > > > > > > > simplify the design and >>>>>>> implementation of >>>>>>> > > > > > integration. >>>>>>> > > > > > > > If >>>>>>> > > > > > > > >> > > anybody >>>>>>> > > > > > > > >> > > > > > needs >>>>>>> > > > > > > > >> > > > > > > > > several Ignite instances, then he >>>>>>> can >>>>>>> > > > instantiate >>>>>>> > > > > > them >>>>>>> > > > > > > > >> > > manually. >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > By default the >>>>>>> > > > > > > > >> > > > > > > > > > thick client instance will >>>>>>> replace the >>>>>>> > > > > thin-client >>>>>>> > > > > > > > >> > > DynamicCache >>>>>>> > > > > > > > >> > > > > if >>>>>>> > > > > > > > >> > > > > > > that >>>>>>> > > > > > > > >> > > > > > > > > > would be ok? >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > If you agree on my proposal above, >>>>>>> then I >>>>>>> > > would >>>>>>> > > > > > simply >>>>>>> > > > > > > > >> > disallow >>>>>>> > > > > > > > >> > > > > > > > > auto-starting more than one Ignite >>>>>>> instance >>>>>>> > > (let >>>>>>> > > > > it >>>>>>> > > > > > > be a >>>>>>> > > > > > > > >> > thick >>>>>>> > > > > > > > >> > > or >>>>>>> > > > > > > > >> > > > > > thin >>>>>>> > > > > > > > >> > > > > > > > > client). For example, if a thick >>>>>>> client is >>>>>>> > > > already >>>>>>> > > > > > > > >> started, >>>>>>> > > > > > > > >> > > then >>>>>>> > > > > > > > >> > > > > > throw >>>>>>> > > > > > > > >> > > > > > > an >>>>>>> > > > > > > > >> > > > > > > > > exception on an attempt to >>>>>>> initialize a thin >>>>>>> > > > > client >>>>>>> > > > > > > (and >>>>>>> > > > > > > > >> vice >>>>>>> > > > > > > > >> > > > > versa). >>>>>>> > > > > > > > >> > > > > > > As >>>>>>> > > > > > > > >> > > > > > > > > for thick vs. thin client usage in >>>>>>> relation >>>>>>> > to >>>>>>> > > > > > > > Micronaut, >>>>>>> > > > > > > > >> I >>>>>>> > > > > > > > >> > > would >>>>>>> > > > > > > > >> > > > > > > > recommend >>>>>>> > > > > > > > >> > > > > > > > > using the thin client if Micronaut >>>>>>> is >>>>>>> > deployed >>>>>>> > > > in >>>>>>> > > > > a >>>>>>> > > > > > > > >> > serverless >>>>>>> > > > > > > > >> > > > > > function >>>>>>> > > > > > > > >> > > > > > > > > (the thin client connects to the >>>>>>> cluster >>>>>>> > > > faster), >>>>>>> > > > > > > while >>>>>>> > > > > > > > >> for >>>>>>> > > > > > > > >> > > > > > > > micro-services >>>>>>> > > > > > > > >> > > > > > > > > you can use both types of clients. >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > The main reason why I was using the >>>>>>> spring >>>>>>> > > bean >>>>>>> > > > > > > > definition >>>>>>> > > > > > > > >> > was >>>>>>> > > > > > > > >> > > > > mainly >>>>>>> > > > > > > > >> > > > > > > for >>>>>>> > > > > > > > >> > > > > > > > > > convenience and I'm not sure what >>>>>>> fields >>>>>>> > are >>>>>>> > > > the >>>>>>> > > > > > > most >>>>>>> > > > > > > > >> > > relevant. >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > Ok, seems that I'm missing some >>>>>>> important >>>>>>> > > point >>>>>>> > > > > > about >>>>>>> > > > > > > > >> > > Micronaut. >>>>>>> > > > > > > > >> > > > > Let >>>>>>> > > > > > > > >> > > > > > me >>>>>>> > > > > > > > >> > > > > > > > > double-check the following with you. >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > Assume these are the only fields of >>>>>>> the >>>>>>> > > > > > > > >> > > > DefaultIgniteConfiguration: >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > private final String name; >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > @ConfigurationBuilder() >>>>>>> > > > > > > > >> > > > > > > > > private IgniteConfiguration >>>>>>> > > igniteConfiguration >>>>>>> > > > = >>>>>>> > > > > > new >>>>>>> > > > > > > > >> > > > > > > > > IgniteConfiguration(); >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > Will I be able to set up the >>>>>>> > communicationSpi >>>>>>> > > > bean >>>>>>> > > > > > > below >>>>>>> > > > > > > > >> > > without >>>>>>> > > > > > > > >> > > > > > having >>>>>>> > > > > > > > >> > > > > > > > it >>>>>>> > > > > > > > >> > > > > > > > > as a field of the >>>>>>> > DefaultIgniteConfiguration? >>>>>>> > > > Are >>>>>>> > > > > > you >>>>>>> > > > > > > > >> > getting a >>>>>>> > > > > > > > >> > > > > > > > > NullPointerException? >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > ignite: >>>>>>> > > > > > > > >> > > > > > > > > name: some_name >>>>>>> > > > > > > > >> > > > > > > > > igniteConfiguration: >>>>>>> > > > > > > > >> > > > > > > > > communicationSpi: >>>>>>> > > > > > > > >> > > > > > > > > {redefining some fields >>>>>>> of the >>>>>>> > > SPI} >>>>>>> > > > > > > > >> > > > > > > > > - >>>>>>> > > > > > > > >> > > > > > > > > Denis >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > On Wed, Aug 19, 2020 at 12:17 AM >>>>>>> Michael >>>>>>> > > > Pollind < >>>>>>> > > > > > > > >> > > > > mpoll...@gmail.com >>>>>>> > > > > > > > >> > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > wrote: >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > > Here is the initial setup that I >>>>>>> quickly >>>>>>> > > threw >>>>>>> > > > > > > > together >>>>>>> > > > > > > > >> > along >>>>>>> > > > > > > > >> > > > > with >>>>>>> > > > > > > > >> > > > > > > some >>>>>>> > > > > > > > >> > > > > > > > > > example test cases. I feel like >>>>>>> this might >>>>>>> > > > get a >>>>>>> > > > > > > > little >>>>>>> > > > > > > > >> > > > > complicated >>>>>>> > > > > > > > >> > > > > > > > but I >>>>>>> > > > > > > > >> > > > > > > > > > think it's doable. >>>>>>> > > > > > > > >> > > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >>>>>>> https://github.com/pollend/micronaut-ignite/blob/feature/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> >>>>>>> > > > > > >>>>>>> > >>>>>>> rework-1/ignite-core/src/main/java/io/micronaut/ignite/configuration/ >>>>>>> > > > > > > > >> > > > > > > > DefaultIgniteConfiguration.java >>>>>>> > > > > > > > >> > > > > > > > > > along with some relevant test: >>>>>>> > > > > > > > >> > > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >>>>>>> https://github.com/pollend/micronaut-ignite/blob/feature/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > > > rework-1/ignite-core/src/test/groovy/io/micronaut/ignite/ >>>>>>> > > > > > > > >> > > > > > > > IgniteConfigurationSpec.groovy#L55-L73 >>>>>>> > > > > > > > >> > > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > > On Tue, Aug 18, 2020 at 11:49 PM >>>>>>> Michael >>>>>>> > > > > Pollind < >>>>>>> > > > > > > > >> > > > > > mpoll...@gmail.com >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > > wrote: >>>>>>> > > > > > > > >> > > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > >> >>>>>>> > > > > > > > >> > > > > > > > > >> >>>>>>> > > > > > > > >> > > > > > > > > >> The main reason why I was using >>>>>>> the >>>>>>> > spring >>>>>>> > > > bean >>>>>>> > > > > > > > >> definition >>>>>>> > > > > > > > >> > > was >>>>>>> > > > > > > > >> > > > > > > mainly >>>>>>> > > > > > > > >> > > > > > > > > for >>>>>>> > > > > > > > >> > > > > > > > > >> convenience and I'm not sure >>>>>>> what fields >>>>>>> > > are >>>>>>> > > > > the >>>>>>> > > > > > > most >>>>>>> > > > > > > > >> > > > relevant. >>>>>>> > > > > > > > >> > > > > > Will >>>>>>> > > > > > > > >> > > > > > > > > have >>>>>>> > > > > > > > >> > > > > > > > > >> to be kind of specific since the >>>>>>> > > > configuration >>>>>>> > > > > > > might >>>>>>> > > > > > > > >> get a >>>>>>> > > > > > > > >> > > > > little >>>>>>> > > > > > > > >> > > > > > > > > >> complicated. The other thing you >>>>>>> can do >>>>>>> > is >>>>>>> > > > use >>>>>>> > > > > > > > >> > > > > > > > > >> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > https://docs.micronaut.io/latest/api/io/micronaut/core/ >>>>>>> > > > > > > > >> > > > > > > > convert/format/MapFormat.html >>>>>>> > > > > > > > >> > > > > > > > > >> which will just map fields and >>>>>>> values and >>>>>>> > > you >>>>>>> > > > > can >>>>>>> > > > > > > > pass >>>>>>> > > > > > > > >> > that >>>>>>> > > > > > > > >> > > to >>>>>>> > > > > > > > >> > > > > > > > somewhere >>>>>>> > > > > > > > >> > > > > > > > > >> else to be manage it. >>>>>>> > > > > > > > >> > > > > > > > > >> >>>>>>> > > > > > > > >> > > > > > > > > >> so you will need to do something >>>>>>> like >>>>>>> > this >>>>>>> > > as >>>>>>> > > > > > > > follows: >>>>>>> > > > > > > > >> > > > > > > > > >> >>>>>>> > > > > > > > >> > > > > > > > > >> private final String name; >>>>>>> > > > > > > > >> > > > > > > > > >> @ConfigurationBuilder() >>>>>>> > > > > > > > >> > > > > > > > > >> private IgniteConfiguration >>>>>>> > > > > igniteConfiguration = >>>>>>> > > > > > > new >>>>>>> > > > > > > > >> > > > > > > > > IgniteConfiguration(); >>>>>>> > > > > > > > >> > > > > > > > > >> @ConfigurationBuilder(value = >>>>>>> > > > > "communicationSpi") >>>>>>> > > > > > > > >> > > > > > > > > >> private TcpCommunicationSpi >>>>>>> > > communicationSpi >>>>>>> > > > = >>>>>>> > > > > > new >>>>>>> > > > > > > > >> > > > > > > > > TcpCommunicationSpi(); >>>>>>> > > > > > > > >> > > > > > > > > >> >>>>>>> > > > > > > > >> > > > > > > > > >> [image: image.png] >>>>>>> > > > > > > > >> > > > > > > > > >> >>>>>>> > > > > > > > >> > > > > > > > > >> >>>>>>> > > > > > > > >> > > > > > > > > >> On Tue, Aug 18, 2020 at 11:05 PM >>>>>>> Michael >>>>>>> > > > > Pollind >>>>>>> > > > > > < >>>>>>> > > > > > > > >> > > > > > > mpoll...@gmail.com> >>>>>>> > > > > > > > >> > > > > > > > > >> wrote: >>>>>>> > > > > > > > >> > > > > > > > > >> >>>>>>> > > > > > > > >> > > > > > > > > >>> Its whatever is setup by >>>>>>> default when >>>>>>> > the >>>>>>> > > > > object >>>>>>> > > > > > > is >>>>>>> > > > > > > > >> > > > declared. I >>>>>>> > > > > > > > >> > > > > > > think >>>>>>> > > > > > > > >> > > > > > > > > we >>>>>>> > > > > > > > >> > > > > > > > > >>> will have to define multiple >>>>>>> > > > > > ConfigurationBuilders >>>>>>> > > > > > > > If >>>>>>> > > > > > > > >> i'm >>>>>>> > > > > > > > >> > > not >>>>>>> > > > > > > > >> > > > > > > > mistaken >>>>>>> > > > > > > > >> > > > > > > > > for >>>>>>> > > > > > > > >> > > > > > > > > >>> the IgniteConfiguration. you >>>>>>> don't need >>>>>>> > > to >>>>>>> > > > > > > provide >>>>>>> > > > > > > > >> the >>>>>>> > > > > > > > >> > > name >>>>>>> > > > > > > > >> > > > > > since >>>>>>> > > > > > > > >> > > > > > > > > that is >>>>>>> > > > > > > > >> > > > > > > > > >>> provided by the key for each >>>>>>> > configuration >>>>>>> > > > > under >>>>>>> > > > > > > > >> > > > EachProperty. >>>>>>> > > > > > > > >> > > > > > The >>>>>>> > > > > > > > >> > > > > > > > > name is >>>>>>> > > > > > > > >> > > > > > > > > >>> the qualified name that refers >>>>>>> to that >>>>>>> > > bean >>>>>>> > > > > and >>>>>>> > > > > > > also >>>>>>> > > > > > > > >> the >>>>>>> > > > > > > > >> > > same >>>>>>> > > > > > > > >> > > > > > > > > qualifier for >>>>>>> > > > > > > > >> > > > > > > > > >>> the Ignite instance. For the >>>>>>> most part >>>>>>> > > will >>>>>>> > > > > just >>>>>>> > > > > > > use >>>>>>> > > > > > > > >> the >>>>>>> > > > > > > > >> > > > > primary >>>>>>> > > > > > > > >> > > > > > > bean >>>>>>> > > > > > > > >> > > > > > > > > for >>>>>>> > > > > > > > >> > > > > > > > > >>> most part. I think you can only >>>>>>> have one >>>>>>> > > > cache >>>>>>> > > > > > > > >> instance >>>>>>> > > > > > > > >> > > > active >>>>>>> > > > > > > > >> > > > > > at a >>>>>>> > > > > > > > >> > > > > > > > > time. >>>>>>> > > > > > > > >> > > > > > > > > >>> The current way I have it setup >>>>>>> is the >>>>>>> > > > primary >>>>>>> > > > > > > bean >>>>>>> > > > > > > > is >>>>>>> > > > > > > > >> > used >>>>>>> > > > > > > > >> > > > by >>>>>>> > > > > > > > >> > > > > > > > default >>>>>>> > > > > > > > >> > > > > > > > > so >>>>>>> > > > > > > > >> > > > > > > > > >>> you won't be able to use >>>>>>> micronaut-cache >>>>>>> > > > with >>>>>>> > > > > > > > anything >>>>>>> > > > > > > > >> > but >>>>>>> > > > > > > > >> > > > the >>>>>>> > > > > > > > >> > > > > > > > default >>>>>>> > > > > > > > >> > > > > > > > > >>> bean. I guess one can override >>>>>>> the other >>>>>>> > > if >>>>>>> > > > > the >>>>>>> > > > > > > > >> > > configuration >>>>>>> > > > > > > > >> > > > > is >>>>>>> > > > > > > > >> > > > > > > > > present. >>>>>>> > > > > > > > >> > > > > > > > > >>> One problem I see is >>>>>>> micronaut-cache. We >>>>>>> > > can >>>>>>> > > > > > only >>>>>>> > > > > > > > use >>>>>>> > > > > > > > >> one >>>>>>> > > > > > > > >> > > > > > instance >>>>>>> > > > > > > > >> > > > > > > of >>>>>>> > > > > > > > >> > > > > > > > > >>> DynamicCache but I need to >>>>>>> verify how >>>>>>> > that >>>>>>> > > > > works >>>>>>> > > > > > > > >> again. >>>>>>> > > > > > > > >> > By >>>>>>> > > > > > > > >> > > > > > default >>>>>>> > > > > > > > >> > > > > > > > the >>>>>>> > > > > > > > >> > > > > > > > > >>> thick client instance will >>>>>>> replace the >>>>>>> > > > > > thin-client >>>>>>> > > > > > > > >> > > > DynamicCache >>>>>>> > > > > > > > >> > > > > > if >>>>>>> > > > > > > > >> > > > > > > > that >>>>>>> > > > > > > > >> > > > > > > > > >>> would be ok? >>>>>>> > > > > > > > >> > > > > > > > > >>> >>>>>>> > > > > > > > >> > > > > > > > > >>> ignite: >>>>>>> > > > > > > > >> > > > > > > > > >>> thick-clients: >>>>>>> > > > > > > > >> > > > > > > > > >>> default: <--- primary bean >>>>>>> > > > > > > > >> > > > > > > > > >>> ... >>>>>>> > > > > > > > >> > > > > > > > > >>> second-bean: >>>>>>> > > > > > > > >> > > > > > > > > >>> ... >>>>>>> > > > > > > > >> > > > > > > > > >>> thin-clients: >>>>>>> > > > > > > > >> > > > > > > > > >>> default: <--- primary bean >>>>>>> > > > > > > > >> > > > > > > > > >>> ... >>>>>>> > > > > > > > >> > > > > > > > > >>> second-bean: >>>>>>> > > > > > > > >> > > > > > > > > >>> .... >>>>>>> > > > > > > > >> > > > > > > > > >>> >>>>>>> > > > > > > > >> > > > > > > > > >>> >>>>>>> > > > > > > > >> > > > > > > > > >>> >>>>>>> > > > > > > > >> > > > > > > > > >>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > https://docs.micronaut.io/latest/api/io/micronaut/ >>>>>>> > > > > > > > >> > > > > > > > context/annotation/Requires.html >>>>>>> > > > > > > > >> > > > > > > > > >>> >>>>>>> > > > > > > > >> > > > > > > > > >>> On Tue, Aug 18, 2020 at 10:13 >>>>>>> PM Denis >>>>>>> > > > Magda < >>>>>>> > > > > > > > >> > > > > dma...@apache.org> >>>>>>> > > > > > > > >> > > > > > > > > wrote: >>>>>>> > > > > > > > >> > > > > > > > > >>> >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > oh, so we probably don't >>>>>>> need to work >>>>>>> > > > with >>>>>>> > > > > > > > multiple >>>>>>> > > > > > > > >> > > > > instances. >>>>>>> > > > > > > > >> > > > > > > > This >>>>>>> > > > > > > > >> > > > > > > > > >>>> is what >>>>>>> > > > > > > > >> > > > > > > > > >>>> > I have in the current master >>>>>>> branch. >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>> In most cases, people start a >>>>>>> single >>>>>>> > > > instance >>>>>>> > > > > > of >>>>>>> > > > > > > a >>>>>>> > > > > > > > >> thick >>>>>>> > > > > > > > >> > > or >>>>>>> > > > > > > > >> > > > > thin >>>>>>> > > > > > > > >> > > > > > > > > client >>>>>>> > > > > > > > >> > > > > > > > > >>>> per >>>>>>> > > > > > > > >> > > > > > > > > >>>> application. The clients are >>>>>>> > > multi-threaded >>>>>>> > > > > and >>>>>>> > > > > > > can >>>>>>> > > > > > > > >> > > utilize >>>>>>> > > > > > > > >> > > > > all >>>>>>> > > > > > > > >> > > > > > > the >>>>>>> > > > > > > > >> > > > > > > > > CPUs >>>>>>> > > > > > > > >> > > > > > > > > >>>> effectively. However, it's not >>>>>>> harmful >>>>>>> > to >>>>>>> > > > > have >>>>>>> > > > > > > the >>>>>>> > > > > > > > >> > ability >>>>>>> > > > > > > > >> > > > to >>>>>>> > > > > > > > >> > > > > > > > > configure >>>>>>> > > > > > > > >> > > > > > > > > >>>> several clients per >>>>>>> application. As far >>>>>>> > > as >>>>>>> > > > I >>>>>>> > > > > > > > >> understand, >>>>>>> > > > > > > > >> > > > > > Micronaut >>>>>>> > > > > > > > >> > > > > > > > > >>>> distinguishes clients per the >>>>>>> > > > > > > > >> > > > "IgniteClientConfiguration.name" >>>>>>> > > > > > > > >> > > > > > > > > property, >>>>>>> > > > > > > > >> > > > > > > > > >>>> right? >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>> So what defaults are set for >>>>>>> > > > > > IgniteConfiguration? >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>> Does it matter to Micronaut >>>>>>> what those >>>>>>> > > > > defaults >>>>>>> > > > > > > > are? >>>>>>> > > > > > > > >> By >>>>>>> > > > > > > > >> > > > > looking >>>>>>> > > > > > > > >> > > > > > at >>>>>>> > > > > > > > >> > > > > > > > the >>>>>>> > > > > > > > >> > > > > > > > > >>>> IgniteThinClientConfiguration >>>>>>> > > > > > > > >> > > > > > > > > >>>> < >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > https://micronaut-projects.github.io/micronaut-ignite/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > snapshot/api/io/micronaut/ignite/configuration/ >>>>>>> > > > > > > > >> > > > > > > > IgniteThinClientConfiguration.html >>>>>>> > > > > > > > >> > > > > > > > > >>>> >, >>>>>>> > > > > > > > >> > > > > > > > > >>>> that defines >>>>>>> > > > > > > > >> > > > > >>>>>>> org.apache.ignite.configuration.ClientConfiguration >>>>>>> > > > > > > > >> > > > > > > > > >>>> property >>>>>>> > > > > > > > >> > > > > > > > > >>>> (under the name of >>>>>>> "configuration"), I >>>>>>> > > see >>>>>>> > > > > that >>>>>>> > > > > > > > >> > Micronaut >>>>>>> > > > > > > > >> > > > > could >>>>>>> > > > > > > > >> > > > > > > > > >>>> introspect >>>>>>> > > > > > > > >> > > > > > > > > >>>> all the fields of the >>>>>>> > ClientConfiguration >>>>>>> > > > and >>>>>>> > > > > > > > >> prepared >>>>>>> > > > > > > > >> > > these >>>>>>> > > > > > > > >> > > > > > > > > properties >>>>>>> > > > > > > > >> > > > > > > > > >>>> table >>>>>>> > > > > > > > >> > > > > > > > > >>>> < >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > https://micronaut-projects.github.io/micronaut-ignite/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > snapshot/guide/#io.micronaut.ignite.configuration. >>>>>>> > > > > > > > >> > > > > > > > IgniteThinClientConfiguration >>>>>>> > > > > > > > >> > > > > > > > > >>>> >. >>>>>>> > > > > > > > >> > > > > > > > > >>>> For me, it means that whenever >>>>>>> I am >>>>>>> > > > > configuring >>>>>>> > > > > > > the >>>>>>> > > > > > > > >> thin >>>>>>> > > > > > > > >> > > > > client >>>>>>> > > > > > > > >> > > > > > > in a >>>>>>> > > > > > > > >> > > > > > > > > >>>> YAML >>>>>>> > > > > > > > >> > > > > > > > > >>>> file, Micronaut will create an >>>>>>> instance >>>>>>> > > of >>>>>>> > > > > the >>>>>>> > > > > > > > >> > > > > > ClientConfiguration >>>>>>> > > > > > > > >> > > > > > > > > >>>> (Ignite >>>>>>> > > > > > > > >> > > > > > > > > >>>> sets the defaults), and then I >>>>>>> can >>>>>>> > > override >>>>>>> > > > > > some >>>>>>> > > > > > > > >> > settings >>>>>>> > > > > > > > >> > > > such >>>>>>> > > > > > > > >> > > > > > as >>>>>>> > > > > > > > >> > > > > > > > > >>>> "addresses" or >>>>>>> > > "enablePartitionAwareness". >>>>>>> > > > > Does >>>>>>> > > > > > > > this >>>>>>> > > > > > > > >> > sound >>>>>>> > > > > > > > >> > > > > > > accurate >>>>>>> > > > > > > > >> > > > > > > > > >>>> concerning Micronaut? >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>> Jumping back to the >>>>>>> > IgniteConfiguration, >>>>>>> > > I >>>>>>> > > > > > would >>>>>>> > > > > > > > just >>>>>>> > > > > > > > >> > swap >>>>>>> > > > > > > > >> > > > the >>>>>>> > > > > > > > >> > > > > > > > "path" >>>>>>> > > > > > > > >> > > > > > > > > >>>> that >>>>>>> > > > > > > > >> > > > > > > > > >>>> is the String with the >>>>>>> "config" that is >>>>>>> > > > > > > > >> > > IgniteConfiguration. >>>>>>> > > > > > > > >> > > > > > Then >>>>>>> > > > > > > > >> > > > > > > > let >>>>>>> > > > > > > > >> > > > > > > > > >>>> Ignite take care of the >>>>>>> > > IgniteConfiguration >>>>>>> > > > > > > > defaults >>>>>>> > > > > > > > >> and >>>>>>> > > > > > > > >> > > > > allow a >>>>>>> > > > > > > > >> > > > > > > > > >>>> developer >>>>>>> > > > > > > > >> > > > > > > > > >>>> to override some defaults >>>>>>> (such as >>>>>>> > > > > > > > >> discoverySPI.ipFinder >>>>>>> > > > > > > > >> > > or >>>>>>> > > > > > > > >> > > > > > memory >>>>>>> > > > > > > > >> > > > > > > > > >>>> settings). Just in case, you >>>>>>> can find >>>>>>> > > > > > > > >> > IgniteConfiguration >>>>>>> > > > > > > > >> > > > > > defaults >>>>>>> > > > > > > > >> > > > > > > > > here >>>>>>> > > > > > > > >> > > > > > > > > >>>> < >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > https://github.com/apache/ignite/blob/master/modules/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > core/src/main/java/org/apache/ignite/configuration/ >>>>>>> > > > > > > > >> > > > > > > > IgniteConfiguration.java >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> . >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>> - >>>>>>> > > > > > > > >> > > > > > > > > >>>> Denis >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>> On Tue, Aug 18, 2020 at 8:59 >>>>>>> PM Michael >>>>>>> > > > > > Pollind < >>>>>>> > > > > > > > >> > > > > > > mpoll...@gmail.com >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> wrote: >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>> > oh, so we probably don't >>>>>>> need to work >>>>>>> > > > with >>>>>>> > > > > > > > multiple >>>>>>> > > > > > > > >> > > > > instances. >>>>>>> > > > > > > > >> > > > > > > > This >>>>>>> > > > > > > > >> > > > > > > > > >>>> is what >>>>>>> > > > > > > > >> > > > > > > > > >>>> > I have in the current master >>>>>>> branch. >>>>>>> > I >>>>>>> > > > > > believe >>>>>>> > > > > > > I >>>>>>> > > > > > > > >> was >>>>>>> > > > > > > > >> > > > > > originally >>>>>>> > > > > > > > >> > > > > > > > > >>>> trying to >>>>>>> > > > > > > > >> > > > > > > > > >>>> > set-up the configuration >>>>>>> with the >>>>>>> > > default >>>>>>> > > > > > > ignite >>>>>>> > > > > > > > >> > > instance >>>>>>> > > > > > > > >> > > > > but >>>>>>> > > > > > > > >> > > > > > > > found >>>>>>> > > > > > > > >> > > > > > > > > I >>>>>>> > > > > > > > >> > > > > > > > > >>>> > couldn't cover enough of the >>>>>>> > > > configuration. >>>>>>> > > > > > So >>>>>>> > > > > > > > what >>>>>>> > > > > > > > >> > > > defaults >>>>>>> > > > > > > > >> > > > > > are >>>>>>> > > > > > > > >> > > > > > > > set >>>>>>> > > > > > > > >> > > > > > > > > >>>> for >>>>>>> > > > > > > > >> > > > > > > > > >>>> > IgniteConfiguration? some of >>>>>>> those >>>>>>> > > > factory >>>>>>> > > > > > > items >>>>>>> > > > > > > > >> can't >>>>>>> > > > > > > > >> > > be >>>>>>> > > > > > > > >> > > > > > > covered >>>>>>> > > > > > > > >> > > > > > > > > >>>> with how >>>>>>> > > > > > > > >> > > > > > > > > >>>> > micronaut sets up >>>>>>> configurations. >>>>>>> > > > > > > > >> > @ConfigurationProperty >>>>>>> > > > > > > > >> > > > can >>>>>>> > > > > > > > >> > > > > > > only >>>>>>> > > > > > > > >> > > > > > > > be >>>>>>> > > > > > > > >> > > > > > > > > >>>> > defined on a known factory, >>>>>>> there are >>>>>>> > > > ways >>>>>>> > > > > to >>>>>>> > > > > > > > have >>>>>>> > > > > > > > >> > > > multiple >>>>>>> > > > > > > > >> > > > > > > > > factories >>>>>>> > > > > > > > >> > > > > > > > > >>>> and >>>>>>> > > > > > > > >> > > > > > > > > >>>> > label them optional but that >>>>>>> easily >>>>>>> > > gets >>>>>>> > > > > > > > >> overwhelming. >>>>>>> > > > > > > > >> > > In >>>>>>> > > > > > > > >> > > > > > this >>>>>>> > > > > > > > >> > > > > > > > > >>>> situation >>>>>>> > > > > > > > >> > > > > > > > > >>>> > providing your own bean would >>>>>>> > probably >>>>>>> > > be >>>>>>> > > > > > more >>>>>>> > > > > > > > >> ideal >>>>>>> > > > > > > > >> > in >>>>>>> > > > > > > > >> > > > this >>>>>>> > > > > > > > >> > > > > > > > > >>>> situation when >>>>>>> > > > > > > > >> > > > > > > > > >>>> > I think about it. I was >>>>>>> worrying >>>>>>> > that >>>>>>> > > I >>>>>>> > > > > > > wouldn't >>>>>>> > > > > > > > >> be >>>>>>> > > > > > > > >> > > able >>>>>>> > > > > > > > >> > > > to >>>>>>> > > > > > > > >> > > > > > > cover >>>>>>> > > > > > > > >> > > > > > > > > >>>> enough >>>>>>> > > > > > > > >> > > > > > > > > >>>> > of the configuration with >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > ignite: enabled: true >>>>>>> thin-clients: >>>>>>> > > > > > > default: >>>>>>> > > > > > > > >> > > > > > address: >>>>>>> > > > > > > > >> > > > > > > > > - >>>>>>> > > > > > > > >> > > > > > > > > >>>> > "127.0.0.1:10800" - " >>>>>>> > > > 127.0.0.1:10801" >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > thin-client-2: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > address: - " >>>>>>> > 127.0.0.1:10800 >>>>>>> > > " >>>>>>> > > > > > > - " >>>>>>> > > > > > > > >> > > > > > 127.0.0.1:10801 >>>>>>> > > > > > > > >> > > > > > > " >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > you can see it in the current >>>>>>> > snapshot >>>>>>> > > > > > > > >> documentation: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >>>>>>> > > > > >>>>>>> > >>>>>>> https://micronaut-projects.github.io/micronaut-ignite/snapshot/guide/ >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > On Tue, Aug 18, 2020 at 4:16 >>>>>>> PM Denis >>>>>>> > > > > Magda < >>>>>>> > > > > > > > >> > > > > > dma...@apache.org> >>>>>>> > > > > > > > >> > > > > > > > > >>>> wrote: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > Michael, thanks for >>>>>>> filling out the >>>>>>> > > > wiki >>>>>>> > > > > > > page. >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > I'm looking at the >>>>>>> > Auto-Configuration >>>>>>> > > > > wiki >>>>>>> > > > > > > > >> section >>>>>>> > > > > > > > >> > and >>>>>>> > > > > > > > >> > > > the >>>>>>> > > > > > > > >> > > > > > > > current >>>>>>> > > > > > > > >> > > > > > > > > >>>> > version >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > of the >>>>>>> > > > io.micronaut.ignite.configuration. >>>>>>> > > > > > > > >> > > > > > > > IgniteClientConfiguration >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > < >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > https://github.com/micronaut-projects/micronaut-ignite/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > > > > >> > > > > > >>>>>>> > > > > > > > >> > > > >>>>>>> > > blob/master/ignite-core/src/main/java/io/micronaut/ignite/ >>>>>>> > > > > > > > >> > configuration/ >>>>>>> > > > > > > > >> > > > > > > > IgniteClientConfiguration.java >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > class, >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > and wonder if we can >>>>>>> perform the >>>>>>> > > > > following >>>>>>> > > > > > > > >> changes: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > 1. Rename the >>>>>>> > > > > IgniteClientConfiguration >>>>>>> > > > > > to >>>>>>> > > > > > > > >> > > > > > > > IgniteConfiguration >>>>>>> > > > > > > > >> > > > > > > > > >>>> (or, to >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > avoid ambiguity, even to >>>>>>> > > > > > > > >> > DefaultIgniteConfiguration >>>>>>> > > > > > > > >> > > > as >>>>>>> > > > > > > > >> > > > > > it's >>>>>>> > > > > > > > >> > > > > > > > > done >>>>>>> > > > > > > > >> > > > > > > > > >>>> for >>>>>>> > > > > > > > >> > > > > > > > > >>>> > the >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > Mongo driver >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > < >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > https://micronaut-projects.github.io/micronaut-mongodb/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > latest/api/io/micronaut/configuration/mongo/reactive/ >>>>>>> > > > > > > > >> > > > > > > > DefaultMongoConfiguration.html >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >). >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > The rationale for this >>>>>>> change is >>>>>>> > > > that >>>>>>> > > > > > the >>>>>>> > > > > > > > >> > > developers >>>>>>> > > > > > > > >> > > > > > might >>>>>>> > > > > > > > >> > > > > > > > need >>>>>>> > > > > > > > >> > > > > > > > > >>>> to >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > start an embedded >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > Ignite server node >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > < >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >>>>>>> https://www.gridgain.com/docs/latest/installation-guide/ >>>>>>> > > > > > > > >> > > > > > > > deployment-modes#embedded-deployment >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >. >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > So, I would not limit >>>>>>> the >>>>>>> > > > integration >>>>>>> > > > > > > scope >>>>>>> > > > > > > > to >>>>>>> > > > > > > > >> > the >>>>>>> > > > > > > > >> > > > > Ignite >>>>>>> > > > > > > > >> > > > > > > > > clients >>>>>>> > > > > > > > >> > > > > > > > > >>>> > only. >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > 2. Presently, >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > io.micronaut.ignite.configuration.IgniteClientConfiguration >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > supports two parameters >>>>>>> - the >>>>>>> > > "name" >>>>>>> > > > > and >>>>>>> > > > > > > > >> "path". >>>>>>> > > > > > > > >> > I >>>>>>> > > > > > > > >> > > > > would >>>>>>> > > > > > > > >> > > > > > > > > replace >>>>>>> > > > > > > > >> > > > > > > > > >>>> the >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > "path" >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > parameter with the >>>>>>> "config" one >>>>>>> > > that >>>>>>> > > > > > > > >> instantiates >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > org.apache.ignite.IgniteConfiguration. >>>>>>> > > > > > If >>>>>>> > > > > > > we >>>>>>> > > > > > > > >> do >>>>>>> > > > > > > > >> > > that, >>>>>>> > > > > > > > >> > > > > > then >>>>>>> > > > > > > > >> > > > > > > > the >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > developers >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > will be able to set any >>>>>>> property >>>>>>> > > of >>>>>>> > > > > the >>>>>>> > > > > > > > >> > > > > > IgniteConfiguration >>>>>>> > > > > > > > >> > > > > > > > > >>>> straight >>>>>>> > > > > > > > >> > > > > > > > > >>>> > in >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > the >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > main YAML file. See how >>>>>>> it's >>>>>>> > done >>>>>>> > > > for >>>>>>> > > > > > the >>>>>>> > > > > > > > >> Ignite >>>>>>> > > > > > > > >> > > > Spring >>>>>>> > > > > > > > >> > > > > > > Boot >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > Auto-Configuration >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > < >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > https://apacheignite-mix.readme.io/docs/spring-boot# >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> set-ignite-up-via-spring-boot-configuration >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >. >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > Guess, we can do the >>>>>>> same with >>>>>>> > > > > > Micronaut. >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > 3. If the previous >>>>>>> modification >>>>>>> > is >>>>>>> > > > > > > feasible, >>>>>>> > > > > > > > >> > then I >>>>>>> > > > > > > > >> > > > > would >>>>>>> > > > > > > > >> > > > > > > > > rework >>>>>>> > > > > > > > >> > > > > > > > > >>>> the >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > Ignite thin client >>>>>>> configuration >>>>>>> > > > > > > similarly, >>>>>>> > > > > > > > >> > taking >>>>>>> > > > > > > > >> > > > our >>>>>>> > > > > > > > >> > > > > > > Spring >>>>>>> > > > > > > > >> > > > > > > > > >>>> Boot >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > integration for the >>>>>>> thin client >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > < >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > https://apacheignite-mix.readme.io/docs/spring-boot# >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > set-thin-client-up-via-spring-boot-configuration >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > as a reference. As I >>>>>>> see, the >>>>>>> > > > current >>>>>>> > > > > > > > version >>>>>>> > > > > > > > >> of >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> IgniteThinClientConfiguration >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > < >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > https://github.com/micronaut-projects/micronaut-ignite/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > > > > >> > > > > > >>>>>>> > > > > > > > >> > > > >>>>>>> > > blob/master/ignite-core/src/main/java/io/micronaut/ignite/ >>>>>>> > > > > > > > >> > configuration/ >>>>>>> > > > > > > > >> > > > > > > > IgniteThinClientConfiguration.java >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > already >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > adopts this approach. I >>>>>>> would >>>>>>> > only >>>>>>> > > > > > rename >>>>>>> > > > > > > > >> > > > > "configuration" >>>>>>> > > > > > > > >> > > > > > > to >>>>>>> > > > > > > > >> > > > > > > > > >>>> "config", >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > and >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > remove the >>>>>>> "transaction" field >>>>>>> > > since >>>>>>> > > > > you >>>>>>> > > > > > > can >>>>>>> > > > > > > > >> pass >>>>>>> > > > > > > > >> > > the >>>>>>> > > > > > > > >> > > > > > > > > >>>> transactional >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > settings via the YAML >>>>>>> following >>>>>>> > > the >>>>>>> > > > > > format >>>>>>> > > > > > > > >> below: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > ignite-thin-client: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > name: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > config: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > addresses: >>>>>>> <IP_addresses> >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> partitionAwarenessEnabled: >>>>>>> > > true >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> transactionConfiguration: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > defaultTxConcurrency:... >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> defaultTxTimeout >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > - >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > Denis >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > On Mon, Aug 17, 2020 at >>>>>>> 6:50 PM >>>>>>> > > Michael >>>>>>> > > > > > > > Pollind < >>>>>>> > > > > > > > >> > > > > > > > > mpoll...@gmail.com >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > wrote: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > oh, that makes more >>>>>>> sense. so >>>>>>> > those >>>>>>> > > > > > methods >>>>>>> > > > > > > > get >>>>>>> > > > > > > > >> > > > wrapped >>>>>>> > > > > > > > >> > > > > > > into a >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > micronaut-aop intercept. >>>>>>> Below >>>>>>> > I've >>>>>>> > > > > > listed >>>>>>> > > > > > > > the >>>>>>> > > > > > > > >> > > > relevant >>>>>>> > > > > > > > >> > > > > > > > sections >>>>>>> > > > > > > > >> > > > > > > > > >>>> of >>>>>>> > > > > > > > >> > > > > > > > > >>>> > code >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > that would handle each >>>>>>> annotation >>>>>>> > > > along >>>>>>> > > > > > > with >>>>>>> > > > > > > > >> the >>>>>>> > > > > > > > >> > > > methods >>>>>>> > > > > > > > >> > > > > > > that >>>>>>> > > > > > > > >> > > > > > > > > get >>>>>>> > > > > > > > >> > > > > > > > > >>>> > called >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > from the ignite branch >>>>>>> I'm >>>>>>> > working >>>>>>> > > > > from. >>>>>>> > > > > > > > >> Hopefully >>>>>>> > > > > > > > >> > > > this >>>>>>> > > > > > > > >> > > > > > > helps. >>>>>>> > > > > > > > >> > > > > > > > > >>>> The key >>>>>>> > > > > > > > >> > > > > > > > > >>>> > is >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > specified from the >>>>>>> CacheConfig >>>>>>> > > > > annotation >>>>>>> > > > > > > but >>>>>>> > > > > > > > >> this >>>>>>> > > > > > > > >> > > can >>>>>>> > > > > > > > >> > > > > be >>>>>>> > > > > > > > >> > > > > > > > > changed >>>>>>> > > > > > > > >> > > > > > > > > >>>> if >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > there >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > is a better way to >>>>>>> represent the >>>>>>> > > key. >>>>>>> > > > > By >>>>>>> > > > > > > > >> default >>>>>>> > > > > > > > >> > it >>>>>>> > > > > > > > >> > > > uses >>>>>>> > > > > > > > >> > > > > > > this >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > DefaultCacheKeyGenerator( >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> >>>>>>> https://github.com/micronaut-projects/micronaut-cache/blob/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > master/cache-core/src/main/java/io/micronaut/cache/ >>>>>>> > > > > > > > >> > interceptor/ >>>>>>> > > > > > > > >> > > > > > > > DefaultCacheKeyGenerator.java >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > ). >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > I also finished up this >>>>>>> document >>>>>>> > on >>>>>>> > > > > > sunday: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > >>>>>>> > > > > > > > >> > > > > >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >> >>>>>>> > > > > > > > >>>>>>> > > > > > >>>>>>> > > > >>>>>>> > >>>>>>> https://cwiki.apache.org/confluence/display/IGNITE/Micronaut+Integration >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > . >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > Any suggestions with >>>>>>> what I could >>>>>>> > > > > expand >>>>>>> > > > > > on >>>>>>> > > > > > > > and >>>>>>> > > > > > > > >> > how >>>>>>> > > > > > > > >> > > > this >>>>>>> > > > > > > > >> > > > > > > could >>>>>>> > > > > > > > >> > > > > > > > > be >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > adjusted. >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > Cacheable: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > For Cacheable it will >>>>>>> run a get >>>>>>> > and >>>>>>> > > > > > issue a >>>>>>> > > > > > > > >> put if >>>>>>> > > > > > > > >> > > the >>>>>>> > > > > > > > >> > > > > > value >>>>>>> > > > > > > > >> > > > > > > > is >>>>>>> > > > > > > > >> > > > > > > > > >>>> not >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > present >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > in the cache. >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > -> micronaut-cache: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> >>>>>>> https://github.com/micronaut-projects/micronaut-cache/blob/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > master/cache-core/src/main/java/io/micronaut/cache/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> interceptor/CacheInterceptor.java#L163-L170 >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > -> ignite-cache: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > get: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >>>>>>> https://github.com/pollend/micronaut-ignite/blob/feature/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > rework/ignite-cache/src/main/java/io/micronaut/ignite/ >>>>>>> > > > > > > > >> > > > > > > > IgniteSyncCache.java#L60-L70 >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > CachePut: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > For cache put it will >>>>>>> invalidate >>>>>>> > if >>>>>>> > > > the >>>>>>> > > > > > > > return >>>>>>> > > > > > > > >> is >>>>>>> > > > > > > > >> > > null >>>>>>> > > > > > > > >> > > > > > else >>>>>>> > > > > > > > >> > > > > > > it >>>>>>> > > > > > > > >> > > > > > > > > >>>> will >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > issue a >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > put. I think there might >>>>>>> be a >>>>>>> > > mistake >>>>>>> > > > > in >>>>>>> > > > > > my >>>>>>> > > > > > > > >> code >>>>>>> > > > > > > > >> > > > > because I >>>>>>> > > > > > > > >> > > > > > > use >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > putIfAbsent >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > for both cases. I need to >>>>>>> > > investigate >>>>>>> > > > > > that >>>>>>> > > > > > > > >> closer >>>>>>> > > > > > > > >> > > and >>>>>>> > > > > > > > >> > > > > > write >>>>>>> > > > > > > > >> > > > > > > > some >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > additional >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > test cases to verify the >>>>>>> > behaviour. >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > --> micronaut-cache: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> >>>>>>> https://github.com/micronaut-projects/micronaut-cache/blob/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > master/cache-core/src/main/java/io/micronaut/cache/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> interceptor/CacheInterceptor.java#L510-L525 >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > -> ignite-cache: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > put: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >>>>>>> https://github.com/pollend/micronaut-ignite/blob/feature/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > rework/ignite-cache/src/main/java/io/micronaut/ignite/ >>>>>>> > > > > > > > >> > > > > > > > IgniteSyncCache.java#L83-L88 >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > invalidate: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >>>>>>> https://github.com/pollend/micronaut-ignite/blob/feature/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > rework/ignite-cache/src/main/java/io/micronaut/ignite/ >>>>>>> > > > > > > > >> > > > > > > > IgniteSyncCache.java#L91-L95 >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > CacheInvalidate: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > for cache invalidation >>>>>>> it will >>>>>>> > just >>>>>>> > > > be >>>>>>> > > > > > > > removed >>>>>>> > > > > > > > >> by >>>>>>> > > > > > > > >> > > the >>>>>>> > > > > > > > >> > > > > key. >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > --> micronaut-cache: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> >>>>>>> https://github.com/micronaut-projects/micronaut-cache/blob/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > master/cache-core/src/main/java/io/micronaut/cache/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> interceptor/CacheInterceptor.java#L590-L596 >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > -> ignite-cache: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > invalidate: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >>>>>>> https://github.com/pollend/micronaut-ignite/blob/feature/ >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > rework/ignite-cache/src/main/java/io/micronaut/ignite/ >>>>>>> > > > > > > > >> > > > > > > > IgniteSyncCache.java#L91-L95 >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > On Mon, Aug 17, 2020 at >>>>>>> 5:23 PM >>>>>>> > > > Saikat >>>>>>> > > > > > > > Maitra < >>>>>>> > > > > > > > >> > > > > > > > > >>>> saikat.mai...@gmail.com >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > wrote: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > Hi Michael, >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > In the Example >>>>>>> Cacheable Object >>>>>>> > > you >>>>>>> > > > > are >>>>>>> > > > > > > > using >>>>>>> > > > > > > > >> > > > > @CachePut, >>>>>>> > > > > > > > >> > > > > > > > > >>>> @Cacheable >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > annotations and >>>>>>> > @CacheInvalidate >>>>>>> > > > > > > > annotations >>>>>>> > > > > > > > >> > and I >>>>>>> > > > > > > > >> > > > was >>>>>>> > > > > > > > >> > > > > > > > trying >>>>>>> > > > > > > > >> > > > > > > > > to >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > understand >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > when user use these >>>>>>> annotation >>>>>>> > > then >>>>>>> > > > > > what >>>>>>> > > > > > > > >> would >>>>>>> > > > > > > > >> > be >>>>>>> > > > > > > > >> > > > the >>>>>>> > > > > > > > >> > > > > > > > > underlying >>>>>>> > > > > > > > >> > > > > > > > > >>>> > Ignite >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > operation that will >>>>>>> happen? and >>>>>>> > > how >>>>>>> > > > > > those >>>>>>> > > > > > > > >> > > operations >>>>>>> > > > > > > > >> > > > > are >>>>>>> > > > > > > > >> > > > > > > > > >>>> performed? >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > An example like when >>>>>>> user call >>>>>>> > > this >>>>>>> > > > > > below >>>>>>> > > > > > > > >> method >>>>>>> > > > > > > > >> > > > then >>>>>>> > > > > > > > >> > > > > > how >>>>>>> > > > > > > > >> > > > > > > > the >>>>>>> > > > > > > > >> > > > > > > > > >>>> result >>>>>>> > > > > > > > >> > > > > > > > > >>>> > of >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > getValue is cached? >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > @Cacheable >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > int >>>>>>> getValue(String name) { >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > return >>>>>>> > > > > > > > >> counters.computeIfAbsent(name, { >>>>>>> > > > > > > > >> > 0 >>>>>>> > > > > > > > >> > > }) >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > } >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > Regards, >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > Saikat >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > On Sat, Aug 15, 2020 >>>>>>> at 7:21 PM >>>>>>> > > > > Michael >>>>>>> > > > > > > > >> Pollind >>>>>>> > > > > > > > >> > < >>>>>>> > > > > > > > >> > > > > > > > > >>>> mpoll...@gmail.com> >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > wrote: >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > when you mean these >>>>>>> > annotations >>>>>>> > > > do >>>>>>> > > > > > you >>>>>>> > > > > > > > mean >>>>>>> > > > > > > > >> > this >>>>>>> > > > > > > > >> > > > > would >>>>>>> > > > > > > > >> > > > > > > > need >>>>>>> > > > > > > > >> > > > > > > > > >>>> to be >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > implemented in >>>>>>> ignite? >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > The project at the >>>>>>> moment is >>>>>>> > > > split >>>>>>> > > > > > into >>>>>>> > > > > > > > >> > multiple >>>>>>> > > > > > > > >> > > > > > > modules. >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > ignite-core, >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > ignite-cache, etc >>>>>>> ... The >>>>>>> > plan >>>>>>> > > > was >>>>>>> > > > > to >>>>>>> > > > > > > > also >>>>>>> > > > > > > > >> > have >>>>>>> > > > > > > > >> > > > > > > > ignite-data >>>>>>> > > > > > > > >> > > > > > > > > >>>> but >>>>>>> > > > > > > > >> > > > > > > > > >>>> > that >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > will >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > take a bit of work >>>>>>> to get >>>>>>> > > working >>>>>>> > > > > > > > correctly >>>>>>> > > > > > > > >> > but >>>>>>> > > > > > > > >> > > > the >>>>>>> > > > > > > > >> > > > > > > basic >>>>>>> > > > > > > > >> > > > > > > > > >>>> config is >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > mostly >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > done. The plan is >>>>>>> also to >>>>>>> > > verify >>>>>>> > > > > the >>>>>>> > > > > > > API >>>>>>> > > > > > > > >> > > described >>>>>>> > > > > > > > >> > > > > in >>>>>>> > > > > > > > >> > > > > > > the >>>>>>> > > > > > > > >> > > > > > > > > >>>> wiki and >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > make >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > sure this is what >>>>>>> would work >>>>>>> > > > best. >>>>>>> > > > > At >>>>>>> > > > > > > the >>>>>>> > > > > > > > >> > moment >>>>>>> > > > > > > > >> > > > I'm >>>>>>> > > > > > > > >> > > > > > > > missing >>>>>>> > > > > > > > >> > > > > > > > > >>>> an >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > implementation for >>>>>>> the >>>>>>> > > thin-cache >>>>>>> > > > > and >>>>>>> > > > > > > how >>>>>>> > > > > > > > >> that >>>>>>> > > > > > > > >> > > > would >>>>>>> > > > > > > > >> > > > > > fit >>>>>>> > > > > > > > >> > > > > > > > > into >>>>>>> > > > > > > > >> > > > > > > > > >>>> this >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > scheme. >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > I've removed it due >>>>>>> to the >>>>>>> > > added >>>>>>> > > > > > > > complexity >>>>>>> > > > > > > > >> > but >>>>>>> > > > > > > > >> > > > I'm >>>>>>> > > > > > > > >> > > > > > sure >>>>>>> > > > > > > > >> > > > > > > > > >>>> something >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > could >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > be >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > arranged that would >>>>>>> work. >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > For Ignite-cache, I >>>>>>> have it >>>>>>> > as >>>>>>> > > a >>>>>>> > > > > > > separate >>>>>>> > > > > > > > >> > module >>>>>>> > > > > > > > >> > > > > that >>>>>>> > > > > > > > >> > > > > > > can >>>>>>> > > > > > > > >> > > > > > > > be >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > optionally >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > included in a >>>>>>> micronaut >>>>>>> > project >>>>>>> > > > > where >>>>>>> > > > > > > > this >>>>>>> > > > > > > > >> > > module >>>>>>> > > > > > > > >> > > > > also >>>>>>> > > > > > > > >> > > > > > > > has a >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > dependency >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > on >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > micronaut-cache. The >>>>>>> > AsyncCache >>>>>>> > > > and >>>>>>> > > > > > > > >> SyncCache >>>>>>> > > > > > > > >> > > are >>>>>>> > > > > > > > >> > > > > the >>>>>>> > > > > > > > >> > > > > > > two >>>>>>> > > > > > > > >> > > > > > > > > >>>> > interfaces >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > that >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > micronaut-cache >>>>>>> defines. >>>>>>> > There >>>>>>> > > > are >>>>>>> > > > > > two >>>>>>> > > > > > > > >> ways to >>>>>>> > > > > > > > >> > > > > define >>>>>>> > > > > > > > >> > > > > > > the >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > implementation, >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > you can either >>>>>>> provide beans >>>>>>> > > for >>>>>>> > > > > > > > AsyncCache >>>>>>> > > > > > > > >> > and >>>>>>> > > > > > > > >> > > > > > > SyncCache >>>>>>> > > > > > > > >> > > > > > > > > but >>>>>>> > > > > > > > >> > > > > > > > > >>>> they >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > also >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > define a >>>>>>> DynamicCacheManager >>>>>>> > > that >>>>>>> > > > > > will >>>>>>> > > > > > > > use >>>>>>> > > > > > > > >> the >>>>>>> > > > > > > > >> > > > name >>>>>>> > > > > > > > >> > > > > of >>>>>>> > > > > > > > >> > > > > > > the >>>>>>> > > > > > > > >> > > > > > > > > >>>> instance >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > to >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > refer to the name of >>>>>>> the >>>>>>> > cache >>>>>>> > > > > used. >>>>>>> > > > > > In >>>>>>> > > > > > > > the >>>>>>> > > > > > > > >> > > > > > > documentation >>>>>>> > > > > > > > >> > > > > > > > I >>>>>>> > > > > > > > >> > > > > > > > > >>>> believe >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > for >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > > Teracotta you give a >>>>>>> list of >>>>>>> > > > caches >>>>>>> > > > > > you >>>>>>> > > > > > > > >> want >>>>>>> > > > > > > > >> > and >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> > >>>>>>> > > > > > > > >> >>>>>>> > > > > > > > >> -- >>>>>>> > > > > > > > >> - >>>>>>> > > > > > > > >> Denis >>>>>>> > > > > > > > >> >>>>>>> > > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > >>>>>>> > > > > > >>>>>>> > > > > >>>>>>> > > > >>>>>>> > > >>>>>>> > >>>>>>> >>>>>>