You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Vladislav Pyatkov (Jira)" <ji...@apache.org> on 2020/02/17 14:51:00 UTC

[jira] [Created] (IGNITE-12689) Partitions should become owned after a checkpoint, regardless of a topology change. Nevertheless a rebalance is not required.

Vladislav Pyatkov created IGNITE-12689:
------------------------------------------

             Summary: Partitions should become owned after a checkpoint, regardless of a topology change. Nevertheless a rebalance is not required.
                 Key: IGNITE-12689
                 URL: https://issues.apache.org/jira/browse/IGNITE-12689
             Project: Ignite
          Issue Type: Bug
            Reporter: Vladislav Pyatkov


After checkpoint completed we try to own all partitions of rebalanced cache (see WalStateManager#onGroupRebalanceFinished):
{code}
cpFut.futureFor(FINISHED).listen(new IgniteInClosureX<IgniteInternalFuture>() {
    @Override public void applyx(IgniteInternalFuture future) {
        if (X.hasCause(future.error(), NodeStoppingException.class))
            return;

        for (Integer grpId0 : groupsToEnable) {
            try {
                cctx.database().walEnabled(grpId0, true, true);
            }
            catch (Exception e) {
                if (!X.hasCause(e, NodeStoppingException.class))
                    throw e;
            }

            CacheGroupContext grp = cctx.cache().cacheGroup(grpId0);

            if (grp != null)
                grp.topology().ownMoving(lastGroupTop);
            else if (log.isDebugEnabled())
                log.debug("Cache group was destroyed before checkpoint finished, [grpId=" + grpId0 + ']');
        }

        if (log.isDebugEnabled())
            log.debug("Refresh partitions due to rebalance finished");

        // Trigger exchange for switching to ideal assignment when all nodes are ready.
        cctx.exchange().refreshPartitions();
    }
});
{code}
But in case of topology changes during checkpoint pass, we are need to invoke rebalance manually (see GridDhtPartitionTopologyImpl#ownMoving):
{code}
if (lastAffChangeVer.compareTo(rebFinishedTopVer) > 0) {
    if (log.isInfoEnabled()) {
        log.info("Affinity topology changed, no MOVING partitions will be owned " +
            "[rebFinishedTopVer=" + rebFinishedTopVer +
            ", lastAffChangeVer=" + lastAffChangeVer + "]");
    }
{code}

That will be hardly ever happends, but if it was we restarted whole rebalance (over all partitions).I am advice start rebalance only when it needed and mark partitions as own if it definitely not need (when change of topology does not fluent to assignment).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)