com.alibaba.doris.admin.service.common.node.NodeReloadThread.java Source code

Java tutorial

Introduction

Here is the source code for com.alibaba.doris.admin.service.common.node.NodeReloadThread.java

Source

/**
 * 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;
    }
}