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