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