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