/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package tachyon.conf;
import java.util.ArrayList;
import java.util.Arrays;
import tachyon.Constants;
/**
* Configurations used by master only.
*/
public class MasterConf extends Utils {
private static MasterConf MASTER_CONF = null;
/**
* This is for unit test only. DO NOT use it for other purpose.
*/
public static synchronized void clear() {
MASTER_CONF = null;
}
public static synchronized MasterConf get() {
if (MASTER_CONF == null) {
MASTER_CONF = new MasterConf();
}
return MASTER_CONF;
}
public final String JOURNAL_FOLDER;
public final String FORMAT_FILE_PREFIX;
public final String HOSTNAME;
public final int PORT;
public final String MASTER_ADDRESS;
public final int WEB_PORT;
public final String TEMPORARY_FOLDER;
public final int HEARTBEAT_INTERVAL_MS;
public final int SELECTOR_THREADS;
public final int QUEUE_SIZE_PER_SELECTOR;
public final int SERVER_THREADS;
public final int WORKER_TIMEOUT_MS;
public final ArrayList<String> WHITELIST = new ArrayList<String>();
private MasterConf() {
String journalFolder =
getProperty("tachyon.master.journal.folder", CommonConf.get().TACHYON_HOME + "/journal/");
if (!journalFolder.endsWith(Constants.PATH_SEPARATOR)) {
journalFolder += Constants.PATH_SEPARATOR;
}
JOURNAL_FOLDER = journalFolder;
FORMAT_FILE_PREFIX = "_format_";
HOSTNAME = getProperty("tachyon.master.hostname", "localhost");
PORT = getIntProperty("tachyon.master.port", Constants.DEFAULT_MASTER_PORT);
MASTER_ADDRESS =
(CommonConf.get().USE_ZOOKEEPER ? Constants.HEADER_FT : Constants.HEADER) + HOSTNAME + ":"
+ PORT;
WEB_PORT = getIntProperty("tachyon.master.web.port", Constants.DEFAULT_MASTER_WEB_PORT);
TEMPORARY_FOLDER = getProperty("tachyon.master.temporary.folder", "/tmp");
HEARTBEAT_INTERVAL_MS = getIntProperty("tachyon.master.heartbeat.interval.ms", Constants.SECOND_MS);
SELECTOR_THREADS = getIntProperty("tachyon.master.selector.threads", 3);
QUEUE_SIZE_PER_SELECTOR = getIntProperty("tachyon.master.queue.size.per.selector", 3000);
SERVER_THREADS = getIntProperty("tachyon.master.server.threads", 128);
WORKER_TIMEOUT_MS = getIntProperty("tachyon.master.worker.timeout.ms", 10 * Constants.SECOND_MS);
WHITELIST.addAll(Arrays.asList(getProperty("tachyon.master.whitelist",
Constants.PATH_SEPARATOR).split(",")));
String tPinList = getProperty("tachyon.master.pinlist", null);
if (tPinList != null && !tPinList.isEmpty()) {
System.err.println("WARNING: tachyon.master.pinlist is set but no longer supported!"
+ " Please use the pin function in the TFS Shell instead.");
}
}
}