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

Reply via email to