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)

Reply via email to