>
> 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 Hazelcast
> implements
> > > the
> > > > > DynamicCacheManager. you can see that in the yaml configuration in
> > > > > micronaut documentation where a list of cache names are provided
> > along
> > > > with
> > > > > a configuration. Something similar can also be setup where a list
> of
> > > > > implementations from the yaml can be mapped to a configuration if
> > that
> > > > > would be more ideal.
> > > > >
> > > > >
> > > > >
> > > >
> > >
> >
> https://github.com/pollend/micronaut-ignite/tree/feature/rework/ignite-cache/src/main/java/io/micronaut/ignite
> > > > >
> > > > > On Sat, Aug 15, 2020 at 4:10 PM Saikat Maitra <
> > saikat.mai...@gmail.com
> > > >
> > > > > wrote:
> > > > >
> > > > > > Hi Michael,
> > > > > >
> > > > > > Welcome to the Ignite community!!!
> > > > > >
> > > > > > Please feel free to reach out if you have any questions with
> > respect
> > > to
> > > > > > Ignite Integration.
> > > > > >
> > > > > > I had a question specific to integration and wanted to ask if
> these
> > > > > > annotations also need to be implemented for the micronaut-ignite
> > > > > > integration.
> > > > > >
> > > > > > @Cacheable - Indicates a method is cacheable within the given
> cache
> > > > name
> > > > > > @CachePut - Indicates that the return value of a method
> invocation
> > > > should
> > > > > > be cached. Unlike @Cacheable the original operation is never
> > skipped.
> > > > > > @CacheInvalidate - Indicates the invocation of a method should
> > cause
> > > > the
> > > > > > invalidation of one or many caches.
> > > > > >
> > > > > > Denis - Thank you for sharing the details in dev list, it great
> to
> > > > learn
> > > > > > about micronaut-ignite module.
> > > > > >
> > > > > > Regards,
> > > > > > Saikat
> > > > > >
> > > > > > On Sat, Aug 15, 2020 at 12:35 AM Michael Pollind <
> > mpoll...@gmail.com
> > > >
> > > > > > wrote:
> > > > > >
> > > > > > > Here is the page that i've stubbed out:
> > > > > > >
> > > > >
> > >
> https://cwiki.apache.org/confluence/display/IGNITE/Micronaut+Integration
> > > > > > >
> > > > > > > I'll start trying to fill out some of the details over the next
> > few
> > > > > days
> > > > > > > and we can go from there.
> > > > > > >
> > > > > > > On Fri, Aug 14, 2020 at 2:47 PM Denis Magda <dma...@apache.org
> >
> > > > wrote:
> > > > > > >
> > > > > > > > You're in, now you can create wiki pages in the Ignite
> > namespace.
> > > > > > > >
> > > > > > > > Also, please subscribe to the list by sending a note to the
> > > > > > > > dev-subscr...@ignite.apache.org address. Otherwise, we need
> to
> > > > > approve
> > > > > > > > every email you send.
> > > > > > > >
> > > > > > > > -
> > > > > > > > Denis
> > > > > > > >
> > > > > > > >
> > > > > > > > On Fri, Aug 14, 2020 at 2:43 PM Michael Pollind <
> > > > mpoll...@gmail.com>
> > > > > > > > wrote:
> > > > > > > >
> > > > > > > >>
> > > > > > > >>
> > > > > > > >> here is the link:
> > > > > > > >>
> > > > > > > >>
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/users/viewuserprofile.action?username=mpollind
> > > > > > > >>
> > > > > > > >> Here is the work in progress pull request that I've put
> > > together:
> > > > > > > >>
> > https://github.com/micronaut-projects/micronaut-ignite/pull/33
> > > > > > > >>
> > > > > > > >>
> > > > > > > >>
> > > > > > > >> --
> > > > > > > >> Sent from:
> > > http://apache-ignite-developers.2346864.n4.nabble.com/
> > > > > > > >>
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to