You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by Dmitry Lazurkin <di...@gmail.com> on 2021/04/10 16:21:33 UTC

Historical rebalance doesn't work for caches with rebalanceDelay > 0

Hello, folks.

I have big cache with configured rebalanceMode = ASYNC, rebalanceDelay =
10_000ms. Persistence is enabled, maxWalArchiveSize = 10GB. And I passed
-DIGNITE_PREFER_WAL_REBALANCE=true and 
-DIGNITE_PDS_WAL_REBALANCE_THRESHOLD=1 to Ignite. So node should use
historical rebalance if there is enough WAL. But it doesn't. After
investigation I found that GridDhtPreloader#generateAssignments always
get called with exchFut = null, and this method can't set histPartitions
without exchFut. I think, that problem in
GridCachePartitionExchangeManager
(https://github.com/apache/ignite/blob/bc24f6baf3e9b4f98cf98cc5df67fb5deb5ceb6c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java#L3486).
It doesn't call generateAssignments without forcePreload if
rebalanceDelay is configured.

Historical rebalance works after removing rebalanceDelay.

- May be this is bug because I see proper usage of rebalaceDelay in
GridDhtPartitionDemander#addAssignments?

- Is this useful to have rebalanceDelay for persistent caches?

- Can I turn off rebalanceDelay for existing caches?

Thank you all.



Re: Historical rebalance doesn't work for caches with rebalanceDelay > 0

Posted by Dmitry Lazurkin <di...@gmail.com>.
Ilya, thank you for answer.

I am looking forward to dynamic cache config changes (:.

I've dirty patched CacheConfiguration. Now it always returns
rebalanceDelay as 0 if rebalanceDelay > 0. It works.

On 21.04.2021 13:33, Ilya Kasnacheev wrote:
> Hello!
>
> 1) I think that rebalanceDelay is an outdated option, now that we have
> baseline topology and baseline auto-adjust. Just set baseline
> auto-adjust to the value of rebalance delay and you will be much
> better off.
>
> 2) I'm not sure it was, but definitely not anymore.
>
> 3) I don't think so, you will have to recreate.
>
> Regards,
> -- 
> Ilya Kasnacheev
>
>
> сб, 10 апр. 2021 г. в 19:22, Dmitry Lazurkin <dilaz03@gmail.com
> <ma...@gmail.com>>:
>
>     Hello, folks.
>
>     I have big cache with configured rebalanceMode = ASYNC,
>     rebalanceDelay =
>     10_000ms. Persistence is enabled, maxWalArchiveSize = 10GB. And I
>     passed
>     -DIGNITE_PREFER_WAL_REBALANCE=true and 
>     -DIGNITE_PDS_WAL_REBALANCE_THRESHOLD=1 to Ignite. So node should use
>     historical rebalance if there is enough WAL. But it doesn't. After
>     investigation I found that GridDhtPreloader#generateAssignments always
>     get called with exchFut = null, and this method can't set
>     histPartitions
>     without exchFut. I think, that problem in
>     GridCachePartitionExchangeManager
>     (https://github.com/apache/ignite/blob/bc24f6baf3e9b4f98cf98cc5df67fb5deb5ceb6c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java#L3486).
>     It doesn't call generateAssignments without forcePreload if
>     rebalanceDelay is configured.
>
>     Historical rebalance works after removing rebalanceDelay.
>
>     - May be this is bug because I see proper usage of rebalaceDelay in
>     GridDhtPartitionDemander#addAssignments?
>
>     - Is this useful to have rebalanceDelay for persistent caches?
>
>     - Can I turn off rebalanceDelay for existing caches?
>
>     Thank you all.
>
>

Re: Historical rebalance doesn't work for caches with rebalanceDelay > 0

Posted by Ilya Kasnacheev <il...@gmail.com>.
Hello again!

I have filed a ticket to mark this setting as deprecated:
https://issues.apache.org/jira/browse/IGNITE-14613

Regards,
-- 
Ilya Kasnacheev


ср, 21 апр. 2021 г. в 13:33, Ilya Kasnacheev <il...@gmail.com>:

> Hello!
>
> 1) I think that rebalanceDelay is an outdated option, now that we have
> baseline topology and baseline auto-adjust. Just set baseline auto-adjust
> to the value of rebalance delay and you will be much better off.
>
> 2) I'm not sure it was, but definitely not anymore.
>
> 3) I don't think so, you will have to recreate.
>
> Regards,
> --
> Ilya Kasnacheev
>
>
> сб, 10 апр. 2021 г. в 19:22, Dmitry Lazurkin <di...@gmail.com>:
>
>> Hello, folks.
>>
>> I have big cache with configured rebalanceMode = ASYNC, rebalanceDelay =
>> 10_000ms. Persistence is enabled, maxWalArchiveSize = 10GB. And I passed
>> -DIGNITE_PREFER_WAL_REBALANCE=true and
>> -DIGNITE_PDS_WAL_REBALANCE_THRESHOLD=1 to Ignite. So node should use
>> historical rebalance if there is enough WAL. But it doesn't. After
>> investigation I found that GridDhtPreloader#generateAssignments always
>> get called with exchFut = null, and this method can't set histPartitions
>> without exchFut. I think, that problem in
>> GridCachePartitionExchangeManager
>> (
>> https://github.com/apache/ignite/blob/bc24f6baf3e9b4f98cf98cc5df67fb5deb5ceb6c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java#L3486
>> ).
>> It doesn't call generateAssignments without forcePreload if
>> rebalanceDelay is configured.
>>
>> Historical rebalance works after removing rebalanceDelay.
>>
>> - May be this is bug because I see proper usage of rebalaceDelay in
>> GridDhtPartitionDemander#addAssignments?
>>
>> - Is this useful to have rebalanceDelay for persistent caches?
>>
>> - Can I turn off rebalanceDelay for existing caches?
>>
>> Thank you all.
>>
>>
>>

Re: Historical rebalance doesn't work for caches with rebalanceDelay > 0

Posted by Ilya Kasnacheev <il...@gmail.com>.
Hello!

1) I think that rebalanceDelay is an outdated option, now that we have
baseline topology and baseline auto-adjust. Just set baseline auto-adjust
to the value of rebalance delay and you will be much better off.

2) I'm not sure it was, but definitely not anymore.

3) I don't think so, you will have to recreate.

Regards,
-- 
Ilya Kasnacheev


сб, 10 апр. 2021 г. в 19:22, Dmitry Lazurkin <di...@gmail.com>:

> Hello, folks.
>
> I have big cache with configured rebalanceMode = ASYNC, rebalanceDelay =
> 10_000ms. Persistence is enabled, maxWalArchiveSize = 10GB. And I passed
> -DIGNITE_PREFER_WAL_REBALANCE=true and
> -DIGNITE_PDS_WAL_REBALANCE_THRESHOLD=1 to Ignite. So node should use
> historical rebalance if there is enough WAL. But it doesn't. After
> investigation I found that GridDhtPreloader#generateAssignments always
> get called with exchFut = null, and this method can't set histPartitions
> without exchFut. I think, that problem in
> GridCachePartitionExchangeManager
> (
> https://github.com/apache/ignite/blob/bc24f6baf3e9b4f98cf98cc5df67fb5deb5ceb6c/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java#L3486
> ).
> It doesn't call generateAssignments without forcePreload if
> rebalanceDelay is configured.
>
> Historical rebalance works after removing rebalanceDelay.
>
> - May be this is bug because I see proper usage of rebalaceDelay in
> GridDhtPartitionDemander#addAssignments?
>
> - Is this useful to have rebalanceDelay for persistent caches?
>
> - Can I turn off rebalanceDelay for existing caches?
>
> Thank you all.
>
>
>