/** * Project: doris.admin.service.common-0.1.0-SNAPSHOT * * File Created at 2011-5-24 * $Id$ * * Copyright 1999-2100 Alibaba.com Corporation Limited. * All rights reserved. * * This software is the confidential and proprietary information of * Alibaba Company. ("Confidential Information"). You shall not * disclose such Confidential Information and shall use it only in * accordance with the terms of the license agreement you entered into * with Alibaba.com. */ package com.alibaba.doris.admin.service.common.node; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.alibaba.doris.admin.core.AdminServiceLocator; import com.alibaba.doris.admin.service.PropertiesService; import com.alibaba.doris.common.AdminServiceConstants; /** * TODO Comment of NodeReloadThread * * @author mian.hem */ public class NodeReloadThread extends Thread { private static PropertiesService propertyService = AdminServiceLocator .getPropertiesService(); private static final long nodeReloadInterval = propertyService .getProperty( "nodeReloadInterval", Long.TYPE, AdminServiceConstants.NODE_DEFAULT_RELOAD_INTERVAL); private static final Log log = LogFactory.getLog(NodeReloadThread.class); private NodesManager nodeManager = null; protected volatile boolean stopped = false; public NodeReloadThread(NodesManager nodeManager) { super(); if (nodeManager == null) { throw new IllegalStateException("nodeManager cannot be null!"); } this.nodeManager = nodeManager; } public void run() { while (!stopped) { if (log.isDebugEnabled()) { log.debug("Node reload task starts..."); } try { sleep(nodeReloadInterval); nodeManager.reLoadNodes(); if (log.isDebugEnabled()) { log.debug("Node reload task ends..."); } } catch (Throwable e) { log.error("node reload thread exceptioin occurs." + e.getMessage(), e); } } } public synchronized void end() { nodeManager = null; stopped = true; } }