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