Hello!

I guess you could be starting a service instance on every node, doing
warmup in init().

Then service requests will be only routed on nodes where warmup is complete.

Regards,
-- 
Ilya Kasnacheev


чт, 17 янв. 2019 г. в 13:26, Lukas Polacek <lukas.pola...@innovatrics.com>:

> Technically, I could delay joining the cluster by adding Thread.sleep()
> into the BEFORE_NODE_START lifecycle bean (or my newly
> created BEFORE_CLUSTER_JOIN). I'd like to iterate through the local cache
> in one of those lifecycle beans - but that doesn't seem possible.
>
> Regarding cluster groups: I can't use IgniteCluster::forAttributes, since
> attributes are set at the node start. The only remaining option seems
> IgniteCluster::forPredicate, but that's also not very helpful, since I
> don't see how to leverage ClusterNode's properties, in particular its
> metrics.
>
> We have been using IgniteSet as mentioned above to produce an "active
> cluster group" but I'm looking for something simpler. Today I found a very
> problematic case which will require yet another special logic to handle it.
>
> On Fri, Jan 11, 2019 at 4:14 PM Ilya Kasnacheev <ilya.kasnach...@gmail.com>
> wrote:
>
>> Hello!
>>
>> Actually, delaying joining the cluster is complex enough since it will
>> add a lot of unexpected concerns.
>>
>> There are ClusterGroup's precisely for that purpose.
>>
>> Regards,
>> --
>> Ilya Kasnacheev
>>
>>
>> пт, 11 янв. 2019 г. в 15:58, Lukas Polacek <lukas.pola...@innovatrics.com
>> >:
>>
>>> Hi,
>>> we already do that by using an IgniteSet which contains consistent IDs
>>> of the nodes that are ready, but it's very error-prone and unnecessarily
>>> complex. Delaying joining the cluster would make everything simpler.
>>>
>>> On Thu, Jan 10, 2019 at 1:38 PM Ilya Kasnacheev <
>>> ilya.kasnach...@gmail.com> wrote:
>>>
>>>> Hello!
>>>>
>>>> I think you should decouple workload readiness from joining the cluster.
>>>>
>>>> You should let node join cluster first, then iterate entries, and only
>>>> then allow workload to this node.
>>>>
>>>> Regards,
>>>> --
>>>> Ilya Kasnacheev
>>>>
>>>>
>>>> чт, 3 янв. 2019 г. в 13:18, Lukas Polacek <
>>>> lukas.pola...@innovatrics.com>:
>>>>
>>>>> Hi,
>>>>> in our use case we need to run some C++ code (via JNI) whenever
>>>>> something is pushed into the local Ignite cache. In other words, we need 
>>>>> to
>>>>> have Ignite in sync with C++ memory. We have a local listener that listens
>>>>> to EVT_CACHE_OBJECT_PUT events and executes the C++ code, so everything is
>>>>> fine while the node is running. However, we use native persistence, so
>>>>> after a node restart, the local cache is read from the disk but the C++
>>>>> code hasn't been run for any cache entries, which means that Ignite and 
>>>>> C++
>>>>> memory are out of sync.
>>>>>
>>>>> Iterating through the local cache entries is only possible once the
>>>>> node has already joined the cluster, but that's too late for us - it needs
>>>>> to be done before joining the cluster.
>>>>>
>>>>> I've managed to add a lifecycle bean event BEFORE_CLUSTER_JOIN (see
>>>>> http://apache-ignite-users.70518.x6.nabble.com/Register-listeners-before-joining-the-cluster-tc25944.html,
>>>>> a PR is hopefully coming soon), which is triggered before joining the
>>>>> cluster but at that point we cannot access the cache via
>>>>> ignite.cache(...). Is there a way to access all entries in the native
>>>>> persistence at that point or earlier? I'm also fine with modifying the
>>>>> Ignite source code if that's necessary (and simple enough), since we are
>>>>> just prototyping.
>>>>>
>>>>

Reply via email to