With some help from @Denis Magda <[hidden email]>, 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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> >> 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 <[hidden email]> 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 <[hidden email]> >> > > 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 <[hidden email]> >> wrote: >> > > > >> > > > > 👍 Nice catch! >> > > > > >> > > > > - >> > > > > Denis >> > > > > >> > > > > >> > > > > On Wed, Aug 26, 2020 at 12:16 PM Michael Pollind < >> [hidden email] >> > > >> > > > > 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 <[hidden email] >> > >> > > > 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 < >> > > [hidden email]> >> > > > > > > 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 < >> > > > [hidden email]> >> > > > > > > > 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 < >> > [hidden email] >> > > > >> > > > > > 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 < >> [hidden email]> >> > > > > 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 < >> > > > > > [hidden email] >> > > > > > > > >> > > > > > > > >> > 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 < >> > > > > > [hidden email] >> > > > > > > > >> > > > > > > > >> > 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 < >> > > > > > > [hidden email]> >> > > > > > > > >> > 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 < >> > > > > > [hidden email] >> > > > > > > > >> > > > > > > > >> > 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 < >> > > > [hidden email]> >> > > > > > > > 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 < >> > > > > > [hidden email] >> > > > > > > > >> > > > > > > > >> > 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 < >> > > > > [hidden email]> >> > > > > > > > >> 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 < >> > > > > > > > >> [hidden email] >> > > > > > > > >> > > >> > > > > > > > >> > > > 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 < >> > > > > > > > >> [hidden email]> >> > > > > > > > >> > > > > 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 < >> > > > > > > > [hidden email]> >> > > > > > > > >> > > 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 < >> > > > > > > > >> > [hidden email] >> > > > > > > > >> > > > >> > > > > > > > >> > > > > > 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 < >> > > > > > > > >> [hidden email] >> > > > > > > > >> > > >> > > > > > > > >> > > > > 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 < >> > > > > > > > >> > > > > [hidden email] >> > > > > > > > >> > > > > > > >> > > > > > > > >> > > > > > > > > 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 < >> > > > > > > > >> > > > > > [hidden email] >> > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > > > 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 >> > > > > > < >> > > > > > > > >> > > > > > > [hidden email]> >> > > > > > > > >> > > > > > > > > >> 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 < >> > > > > > > > >> > > > > [hidden email]> >> > > > > > > > >> > > > > > > > > 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 < >> > > > > > > > >> > > > > > > [hidden email] >> > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > > > >>>> 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 < >> > > > > > > > >> > > > > > [hidden email]> >> > > > > > > > >> > > > > > > > > >>>> 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 < >> > > > > > > > >> > > > > > > > > [hidden email] >> > > > > > > > >> > > > > > > > > >>>> > >> > > > > > > > >> > > > > > > > > >>>> > > 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 < >> > > > > > > > >> > > > > > > > > >>>> [hidden email] >> > > > > > > > >> > > > > > > > > >>>> > > >> > > > > > > > >> > > > > > > > > >>>> > > > 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 >> > > > > > > > >> > < >> > > > > > > > >> > > > > > > > > >>>> [hidden email]> >> > > > > > > > >> > > > > > > > > >>>> > > > > 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 >> > > > > > > > >> >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> > |
Thanks, Michael!
Congrats :) > 10 сент. 2020 г., в 19:17, Michael Pollind <[hidden email]> написал(а): > > With some help from @Denis Magda <[hidden email]>, 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 <[hidden email]> 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 <[hidden email]> 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 <[hidden email]> >>> 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 <[hidden email]> 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 <[hidden email]> >>>>> 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 <[hidden email]> >>> wrote: >>>>>> >>>>>>> 👍 Nice catch! >>>>>>> >>>>>>> - >>>>>>> Denis >>>>>>> >>>>>>> >>>>>>> On Wed, Aug 26, 2020 at 12:16 PM Michael Pollind < >>> [hidden email] >>>>> >>>>>>> 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 <[hidden email] >>>> >>>>>> 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 < >>>>> [hidden email]> >>>>>>>>> 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 < >>>>>> [hidden email]> >>>>>>>>>> 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 < >>>> [hidden email] >>>>>> >>>>>>>> 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 < >>> [hidden email]> >>>>>>> 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 < >>>>>>>> [hidden email] >>>>>>>>>> >>>>>>>>>>>>> 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 < >>>>>>>> [hidden email] >>>>>>>>>> >>>>>>>>>>>>> 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 < >>>>>>>>> [hidden email]> >>>>>>>>>>>>> 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 < >>>>>>>> [hidden email] >>>>>>>>>> >>>>>>>>>>>>> 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 < >>>>>> [hidden email]> >>>>>>>>>> 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 < >>>>>>>> [hidden email] >>>>>>>>>> >>>>>>>>>>>>> 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 < >>>>>>> [hidden email]> >>>>>>>>>>>> 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 < >>>>>>>>>>>> [hidden email] >>>>>>>>>>>>>> >>>>>>>>>>>>>>> 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 < >>>>>>>>>>>> [hidden email]> >>>>>>>>>>>>>>>> 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 < >>>>>>>>>> [hidden email]> >>>>>>>>>>>>>> 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 < >>>>>>>>>>>>> [hidden email] >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> 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 < >>>>>>>>>>>> [hidden email] >>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 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 < >>>>>>>>>>>>>>>> [hidden email] >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> 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 < >>>>>>>>>>>>>>>>> [hidden email] >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> 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 >>>>>>>> < >>>>>>>>>>>>>>>>>> [hidden email]> >>>>>>>>>>>>>>>>>>>>>> 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 < >>>>>>>>>>>>>>>> [hidden email]> >>>>>>>>>>>>>>>>>>>> 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 < >>>>>>>>>>>>>>>>>> [hidden email] >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> 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 < >>>>>>>>>>>>>>>>> [hidden email]> >>>>>>>>>>>>>>>>>>>>>>>> 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 < >>>>>>>>>>>>>>>>>>>> [hidden email] >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> 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 < >>>>>>>>>>>>>>>>>>>>>>>> [hidden email] >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> 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 >>>>>>>>>>>>> < >>>>>>>>>>>>>>>>>>>>>>>> [hidden email]> >>>>>>>>>>>>>>>>>>>>>>>>>>>> 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 >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> |
In reply to this post by Michael Pollind
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 <[hidden email]> wrote: > With some help from @Denis Magda <[hidden email]>, 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 <[hidden email]> > 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 <[hidden email]> 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 <[hidden email]> >>> 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 <[hidden email]> 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 <[hidden email]> >>> > > 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 <[hidden email]> >>> wrote: >>> > > > >>> > > > > 👍 Nice catch! >>> > > > > >>> > > > > - >>> > > > > Denis >>> > > > > >>> > > > > >>> > > > > On Wed, Aug 26, 2020 at 12:16 PM Michael Pollind < >>> [hidden email] >>> > > >>> > > > > 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 < >>> [hidden email]> >>> > > > 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 < >>> > > [hidden email]> >>> > > > > > > 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 < >>> > > > [hidden email]> >>> > > > > > > > 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 < >>> > [hidden email] >>> > > > >>> > > > > > 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 < >>> [hidden email]> >>> > > > > 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 < >>> > > > > > [hidden email] >>> > > > > > > > >>> > > > > > > > >> > 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 < >>> > > > > > [hidden email] >>> > > > > > > > >>> > > > > > > > >> > 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 < >>> > > > > > > [hidden email]> >>> > > > > > > > >> > 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 < >>> > > > > > [hidden email] >>> > > > > > > > >>> > > > > > > > >> > 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 < >>> > > > [hidden email]> >>> > > > > > > > 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 < >>> > > > > > [hidden email] >>> > > > > > > > >>> > > > > > > > >> > 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 < >>> > > > > [hidden email]> >>> > > > > > > > >> 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 < >>> > > > > > > > >> [hidden email] >>> > > > > > > > >> > > >>> > > > > > > > >> > > > 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 >>> < >>> > > > > > > > >> [hidden email]> >>> > > > > > > > >> > > > > 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 < >>> > > > > > > > [hidden email]> >>> > > > > > > > >> > > 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 < >>> > > > > > > > >> > [hidden email] >>> > > > > > > > >> > > > >>> > > > > > > > >> > > > > > 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 < >>> > > > > > > > >> [hidden email] >>> > > > > > > > >> > > >>> > > > > > > > >> > > > > 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 < >>> > > > > > > > >> > > > > [hidden email] >>> > > > > > > > >> > > > > > > >>> > > > > > > > >> > > > > > > > > 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 < >>> > > > > > > > >> > > > > > [hidden email] >>> > > > > > > > >> > > > > > > > >>> > > > > > > > >> > > > > > > > > > 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 >>> > > > > > < >>> > > > > > > > >> > > > > > > [hidden email]> >>> > > > > > > > >> > > > > > > > > >> 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 < >>> > > > > > > > >> > > > > [hidden email]> >>> > > > > > > > >> > > > > > > > > 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 < >>> > > > > > > > >> > > > > > > [hidden email] >>> > > > > > > > >> > > > > > > > > >>> > > > > > > > >> > > > > > > > > >>>> 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 < >>> > > > > > > > >> > > > > > [hidden email]> >>> > > > > > > > >> > > > > > > > > >>>> 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 < >>> > > > > > > > >> > > > > > > > > [hidden email] >>> > > > > > > > >> > > > > > > > > >>>> > >>> > > > > > > > >> > > > > > > > > >>>> > > 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 < >>> > > > > > > > >> > > > > > > > > >>>> [hidden email] >>> > > > > > > > >> > > > > > > > > >>>> > > >>> > > > > > > > >> > > > > > > > > >>>> > > > 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 >>> > > > > > > > >> > < >>> > > > > > > > >> > > > > > > > > >>>> [hidden email]> >>> > > > > > > > >> > > > > > > > > >>>> > > > > 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 >>> > > > > > > > >> >>> > > > > > > > > >>> > > > > > > > >>> > > > > > > >>> > > > > > >>> > > > > >>> > > > >>> > > >>> > >>> >> |
looks like I was wrong, will have to wait till this PR get merged and a
release is made in the repo. https://github.com/micronaut-projects/micronaut-core/pull/4070 On Fri, Sep 11, 2020 at 10:01 AM Michael Pollind <[hidden email]> wrote: > The caching is setup in the branch and the release candidate is already > out I think. can't think of anything off the top of my head with tweaking > the ignite cache module but i'm sure a few adjustments can be made. > > On Thu, Sep 10, 2020 at 10:41 AM Denis Magda <[hidden email]> wrote: > >> Michael, congrats, it was a pleasure working with you! >> >> Let us know once the release candidate is published. I'll go ahead and >> update my tutorial, and would probably create a separate blog post for >> DZone or Dev.to: >> >> https://www.gridgain.com/docs/tutorials/micronaut/getting-started/ignite-micronaut-getting-started >> >> Are you planning to work on the Micronaut Caching module? Or is it >> already enabled and we just need to prepare examples on how to use Ignite >> as a Micronaut cache? >> >> - >> Denis >> >> >> On Thu, Sep 10, 2020 at 9:17 AM Michael Pollind <[hidden email]> >> wrote: >> >>> With some help from @Denis Magda <[hidden email]>, 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 <[hidden email]> >>> 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 <[hidden email]> 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 <[hidden email]> >>>>> 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 <[hidden email]> >>>>> 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 < >>>>> [hidden email]> >>>>> > > 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 <[hidden email]> >>>>> wrote: >>>>> > > > >>>>> > > > > 👍 Nice catch! >>>>> > > > > >>>>> > > > > - >>>>> > > > > Denis >>>>> > > > > >>>>> > > > > >>>>> > > > > On Wed, Aug 26, 2020 at 12:16 PM Michael Pollind < >>>>> [hidden email] >>>>> > > >>>>> > > > > 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 < >>>>> [hidden email]> >>>>> > > > 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 < >>>>> > > [hidden email]> >>>>> > > > > > > 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 < >>>>> > > > [hidden email]> >>>>> > > > > > > > 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 < >>>>> > [hidden email] >>>>> > > > >>>>> > > > > > 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 < >>>>> [hidden email]> >>>>> > > > > 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 < >>>>> > > > > > [hidden email] >>>>> > > > > > > > >>>>> > > > > > > > >> > 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 < >>>>> > > > > > [hidden email] >>>>> > > > > > > > >>>>> > > > > > > > >> > 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 < >>>>> > > > > > > [hidden email]> >>>>> > > > > > > > >> > 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 < >>>>> > > > > > [hidden email] >>>>> > > > > > > > >>>>> > > > > > > > >> > 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 < >>>>> > > > [hidden email]> >>>>> > > > > > > > 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 < >>>>> > > > > > [hidden email] >>>>> > > > > > > > >>>>> > > > > > > > >> > 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 < >>>>> > > > > [hidden email]> >>>>> > > > > > > > >> 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 < >>>>> > > > > > > > >> [hidden email] >>>>> > > > > > > > >> > > >>>>> > > > > > > > >> > > > 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 < >>>>> > > > > > > > >> [hidden email]> >>>>> > > > > > > > >> > > > > 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 >>>>> < >>>>> > > > > > > > [hidden email]> >>>>> > > > > > > > >> > > 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 < >>>>> > > > > > > > >> > [hidden email] >>>>> > > > > > > > >> > > > >>>>> > > > > > > > >> > > > > > 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 < >>>>> > > > > > > > >> [hidden email] >>>>> > > > > > > > >> > > >>>>> > > > > > > > >> > > > > 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 < >>>>> > > > > > > > >> > > > > [hidden email] >>>>> > > > > > > > >> > > > > > > >>>>> > > > > > > > >> > > > > > > > > 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 < >>>>> > > > > > > > >> > > > > > [hidden email] >>>>> > > > > > > > >> > > > > > > > >>>>> > > > > > > > >> > > > > > > > > > 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 >>>>> > > > > > < >>>>> > > > > > > > >> > > > > > > [hidden email]> >>>>> > > > > > > > >> > > > > > > > > >> 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 < >>>>> > > > > > > > >> > > > > [hidden email]> >>>>> > > > > > > > >> > > > > > > > > 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 < >>>>> > > > > > > > >> > > > > > > [hidden email] >>>>> > > > > > > > >> > > > > > > > > >>>>> > > > > > > > >> > > > > > > > > >>>> 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 < >>>>> > > > > > > > >> > > > > > [hidden email]> >>>>> > > > > > > > >> > > > > > > > > >>>> 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 < >>>>> > > > > > > > >> > > > > > > > > [hidden email] >>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>> > > > > > > > >> > > > > > > > > >>>> > > 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 < >>>>> > > > > > > > >> > > > > > > > > >>>> [hidden email] >>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>> > > > > > > > >> > > > > > > > > >>>> > > > 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 >>>>> > > > > > > > >> > < >>>>> > > > > > > > >> > > > > > > > > >>>> [hidden email]> >>>>> > > > > > > > >> > > > > > > > > >>>> > > > > 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 >>>>> > > > > > > > >> >>>>> > > > > > > > > >>>>> > > > > > > > >>>>> > > > > > > >>>>> > > > > > >>>>> > > > > >>>>> > > > >>>>> > > >>>>> > >>>>> >>>> |
here is the release:
https://search.maven.org/artifact/io.micronaut.ignite/micronaut-ignite-core/1.0.0.RC1/jar On Fri, Sep 11, 2020 at 10:16 AM Michael Pollind <[hidden email]> wrote: > looks like I was wrong, will have to wait till this PR get merged and a > release is made in the repo. > > https://github.com/micronaut-projects/micronaut-core/pull/4070 > > On Fri, Sep 11, 2020 at 10:01 AM Michael Pollind <[hidden email]> > wrote: > >> The caching is setup in the branch and the release candidate is already >> out I think. can't think of anything off the top of my head with tweaking >> the ignite cache module but i'm sure a few adjustments can be made. >> >> On Thu, Sep 10, 2020 at 10:41 AM Denis Magda <[hidden email]> wrote: >> >>> Michael, congrats, it was a pleasure working with you! >>> >>> Let us know once the release candidate is published. I'll go ahead and >>> update my tutorial, and would probably create a separate blog post for >>> DZone or Dev.to: >>> >>> https://www.gridgain.com/docs/tutorials/micronaut/getting-started/ignite-micronaut-getting-started >>> >>> Are you planning to work on the Micronaut Caching module? Or is it >>> already enabled and we just need to prepare examples on how to use Ignite >>> as a Micronaut cache? >>> >>> - >>> Denis >>> >>> >>> On Thu, Sep 10, 2020 at 9:17 AM Michael Pollind <[hidden email]> >>> wrote: >>> >>>> With some help from @Denis Magda <[hidden email]>, 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 <[hidden email]> >>>> 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 <[hidden email]> 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 <[hidden email]> >>>>>> 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 <[hidden email]> >>>>>> 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 < >>>>>> [hidden email]> >>>>>> > > 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 <[hidden email]> >>>>>> wrote: >>>>>> > > > >>>>>> > > > > 👍 Nice catch! >>>>>> > > > > >>>>>> > > > > - >>>>>> > > > > Denis >>>>>> > > > > >>>>>> > > > > >>>>>> > > > > On Wed, Aug 26, 2020 at 12:16 PM Michael Pollind < >>>>>> [hidden email] >>>>>> > > >>>>>> > > > > 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 < >>>>>> [hidden email]> >>>>>> > > > 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 < >>>>>> > > [hidden email]> >>>>>> > > > > > > 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 < >>>>>> > > > [hidden email]> >>>>>> > > > > > > > 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 < >>>>>> > [hidden email] >>>>>> > > > >>>>>> > > > > > 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 < >>>>>> [hidden email]> >>>>>> > > > > 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 < >>>>>> > > > > > [hidden email] >>>>>> > > > > > > > >>>>>> > > > > > > > >> > 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 < >>>>>> > > > > > [hidden email] >>>>>> > > > > > > > >>>>>> > > > > > > > >> > 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 < >>>>>> > > > > > > [hidden email]> >>>>>> > > > > > > > >> > 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 < >>>>>> > > > > > [hidden email] >>>>>> > > > > > > > >>>>>> > > > > > > > >> > 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 < >>>>>> > > > [hidden email]> >>>>>> > > > > > > > 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 < >>>>>> > > > > > [hidden email] >>>>>> > > > > > > > >>>>>> > > > > > > > >> > 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 < >>>>>> > > > > [hidden email]> >>>>>> > > > > > > > >> 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 < >>>>>> > > > > > > > >> [hidden email] >>>>>> > > > > > > > >> > > >>>>>> > > > > > > > >> > > > 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 < >>>>>> > > > > > > > >> [hidden email]> >>>>>> > > > > > > > >> > > > > 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 < >>>>>> > > > > > > > [hidden email]> >>>>>> > > > > > > > >> > > 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 < >>>>>> > > > > > > > >> > [hidden email] >>>>>> > > > > > > > >> > > > >>>>>> > > > > > > > >> > > > > > 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 < >>>>>> > > > > > > > >> [hidden email] >>>>>> > > > > > > > >> > > >>>>>> > > > > > > > >> > > > > 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 < >>>>>> > > > > > > > >> > > > > [hidden email] >>>>>> > > > > > > > >> > > > > > > >>>>>> > > > > > > > >> > > > > > > > > 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 < >>>>>> > > > > > > > >> > > > > > [hidden email] >>>>>> > > > > > > > >> > > > > > > > >>>>>> > > > > > > > >> > > > > > > > > > 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 >>>>>> > > > > > < >>>>>> > > > > > > > >> > > > > > > [hidden email]> >>>>>> > > > > > > > >> > > > > > > > > >> 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 < >>>>>> > > > > > > > >> > > > > [hidden email]> >>>>>> > > > > > > > >> > > > > > > > > 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 < >>>>>> > > > > > > > >> > > > > > > [hidden email] >>>>>> > > > > > > > >> > > > > > > > > >>>>>> > > > > > > > >> > > > > > > > > >>>> 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 < >>>>>> > > > > > > > >> > > > > > [hidden email]> >>>>>> > > > > > > > >> > > > > > > > > >>>> 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 < >>>>>> > > > > > > > >> > > > > > > > > [hidden email] >>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>> > > > > > > > >> > > > > > > > > >>>> > > 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 < >>>>>> > > > > > > > >> > > > > > > > > >>>> [hidden email] >>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>> > > > > > > > >> > > > > > > > > >>>> > > > 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 >>>>>> > > > > > > > >> > < >>>>>> > > > > > > > >> > > > > > > > > >>>> [hidden email]> >>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > 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 >>>>>> > > > > > > > >> >>>>>> > > > > > > > > >>>>>> > > > > > > > >>>>>> > > > > > > >>>>>> > > > > > >>>>>> > > > > >>>>>> > > > >>>>>> > > >>>>>> > >>>>>> >>>>> |
Great, Michael! I announced the integration via our twitter channel:
https://twitter.com/ApacheIgnite/status/1305568860964179968?s=20 and we'll work on a technical article a bit later once finish with the release of the new Ignite docs. - Denis On Mon, Sep 14, 2020 at 10:10 AM Michael Pollind <[hidden email]> wrote: > here is the release: > https://search.maven.org/artifact/io.micronaut.ignite/micronaut-ignite-core/1.0.0.RC1/jar > > On Fri, Sep 11, 2020 at 10:16 AM Michael Pollind <[hidden email]> > wrote: > >> looks like I was wrong, will have to wait till this PR get merged and a >> release is made in the repo. >> >> https://github.com/micronaut-projects/micronaut-core/pull/4070 >> >> On Fri, Sep 11, 2020 at 10:01 AM Michael Pollind <[hidden email]> >> wrote: >> >>> The caching is setup in the branch and the release candidate is already >>> out I think. can't think of anything off the top of my head with tweaking >>> the ignite cache module but i'm sure a few adjustments can be made. >>> >>> On Thu, Sep 10, 2020 at 10:41 AM Denis Magda <[hidden email]> wrote: >>> >>>> Michael, congrats, it was a pleasure working with you! >>>> >>>> Let us know once the release candidate is published. I'll go ahead and >>>> update my tutorial, and would probably create a separate blog post for >>>> DZone or Dev.to: >>>> >>>> https://www.gridgain.com/docs/tutorials/micronaut/getting-started/ignite-micronaut-getting-started >>>> >>>> Are you planning to work on the Micronaut Caching module? Or is it >>>> already enabled and we just need to prepare examples on how to use Ignite >>>> as a Micronaut cache? >>>> >>>> - >>>> Denis >>>> >>>> >>>> On Thu, Sep 10, 2020 at 9:17 AM Michael Pollind <[hidden email]> >>>> wrote: >>>> >>>>> With some help from @Denis Magda <[hidden email]>, 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 <[hidden email]> >>>>> 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 <[hidden email]> >>>>>> 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 <[hidden email]> >>>>>>> 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 <[hidden email]> >>>>>>> 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 < >>>>>>> [hidden email]> >>>>>>> > > 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 <[hidden email]> >>>>>>> wrote: >>>>>>> > > > >>>>>>> > > > > 👍 Nice catch! >>>>>>> > > > > >>>>>>> > > > > - >>>>>>> > > > > Denis >>>>>>> > > > > >>>>>>> > > > > >>>>>>> > > > > On Wed, Aug 26, 2020 at 12:16 PM Michael Pollind < >>>>>>> [hidden email] >>>>>>> > > >>>>>>> > > > > 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 < >>>>>>> [hidden email]> >>>>>>> > > > 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 < >>>>>>> > > [hidden email]> >>>>>>> > > > > > > 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 < >>>>>>> > > > [hidden email]> >>>>>>> > > > > > > > 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 < >>>>>>> > [hidden email] >>>>>>> > > > >>>>>>> > > > > > 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 < >>>>>>> [hidden email]> >>>>>>> > > > > 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 < >>>>>>> > > > > > [hidden email] >>>>>>> > > > > > > > >>>>>>> > > > > > > > >> > 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 < >>>>>>> > > > > > [hidden email] >>>>>>> > > > > > > > >>>>>>> > > > > > > > >> > 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 < >>>>>>> > > > > > > [hidden email]> >>>>>>> > > > > > > > >> > 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 < >>>>>>> > > > > > [hidden email] >>>>>>> > > > > > > > >>>>>>> > > > > > > > >> > 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 < >>>>>>> > > > [hidden email]> >>>>>>> > > > > > > > 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 < >>>>>>> > > > > > [hidden email] >>>>>>> > > > > > > > >>>>>>> > > > > > > > >> > 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 < >>>>>>> > > > > [hidden email]> >>>>>>> > > > > > > > >> 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 >>>>>>> < >>>>>>> > > > > > > > >> [hidden email] >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >> > > > 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 < >>>>>>> > > > > > > > >> [hidden email]> >>>>>>> > > > > > > > >> > > > > 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 < >>>>>>> > > > > > > > [hidden email]> >>>>>>> > > > > > > > >> > > 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 < >>>>>>> > > > > > > > >> > [hidden email] >>>>>>> > > > > > > > >> > > > >>>>>>> > > > > > > > >> > > > > > 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 < >>>>>>> > > > > > > > >> [hidden email] >>>>>>> > > > > > > > >> > > >>>>>>> > > > > > > > >> > > > > 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 < >>>>>>> > > > > > > > >> > > > > [hidden email] >>>>>>> > > > > > > > >> > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > 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 < >>>>>>> > > > > > > > >> > > > > > [hidden email] >>>>>>> > > > > > > > >> > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > > 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 >>>>>>> > > > > > < >>>>>>> > > > > > > > >> > > > > > > [hidden email]> >>>>>>> > > > > > > > >> > > > > > > > > >> 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 < >>>>>>> > > > > > > > >> > > > > [hidden email]> >>>>>>> > > > > > > > >> > > > > > > > > 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 < >>>>>>> > > > > > > > >> > > > > > > [hidden email] >>>>>>> > > > > > > > >> > > > > > > > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> 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 < >>>>>>> > > > > > > > >> > > > > > [hidden email]> >>>>>>> > > > > > > > >> > > > > > > > > >>>> 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 < >>>>>>> > > > > > > > >> > > > > > > > > [hidden email] >>>>>>> > > > > > > > >> > > > > > > > > >>>> > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > 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 < >>>>>>> > > > > > > > >> > > > > > > > > >>>> [hidden email] >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > 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 >>>>>>> > > > > > > > >> > < >>>>>>> > > > > > > > >> > > > > > > > > >>>> [hidden email]> >>>>>>> > > > > > > > >> > > > > > > > > >>>> > > > > 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 >>>>>>> > > > > > > > >> >>>>>>> > > > > > > > > >>>>>>> > > > > > > > >>>>>>> > > > > > > >>>>>>> > > > > > >>>>>>> > > > > >>>>>>> > > > >>>>>>> > > >>>>>>> > >>>>>>> >>>>>> |
Free forum by Nabble | Edit this page |