package com.alipay.bluewhale.core.callback.impl; import java.util.concurrent.TimeUnit; import org.apache.log4j.Logger; import com.alipay.bluewhale.core.callback.BaseCallback; import com.alipay.bluewhale.core.cluster.StormStatus; import com.alipay.bluewhale.core.daemon.NimbusData; import com.alipay.bluewhale.core.daemon.StatusType; import com.alipay.bluewhale.core.schedule.DelayEventRunnable; /** * �ӳ� oldStatus.getDelaySecs()���ִ�е�ǰ״̬��StatusTransition.transition do_rebalance���� * */ public class DelayRebalanceTransitionCallback extends BaseCallback { private static Logger LOG = Logger.getLogger(DelayRebalanceTransitionCallback.class); private NimbusData data; private String topologyid; private StormStatus oldStatus; public DelayRebalanceTransitionCallback(NimbusData data, String topologyid, StormStatus status) { this.data=data; this.topologyid=topologyid; this.oldStatus=status; } @Override public <T> Object execute(T... args) { LOG.info("Delaying event " + oldStatus.getStatusType().getStatus() + " for " + oldStatus.getDelaySecs() + " secs for " + topologyid); data.getScheduExec().schedule(new DelayEventRunnable(data,topologyid,StatusType.do_rebalance), oldStatus.getDelaySecs(), TimeUnit.SECONDS); return null; } }