/**
* 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 org.apache.hadoop.hdfs.server.common;
import org.apache.hadoop.hdfs.server.namenode.MetaRecoveryContext;
/************************************
* Some handy internal HDFS constants
*
************************************/
public interface HdfsConstants {
/**
* Type of the node
*/
static public enum NodeType {
NAME_NODE,
DATA_NODE;
}
// Startup options
static public enum StartupOption{
FORMAT ("-format"),
REGULAR ("-regular"),
UPGRADE ("-upgrade"),
RECOVER ("-recover"),
FORCE ("-force"),
ROLLBACK("-rollback"),
FINALIZE("-finalize"),
IMPORT ("-importCheckpoint"),
NONINTERACTIVE ("-nonInteractive");
// Used only with recovery option
private int force = MetaRecoveryContext.FORCE_NONE;
// used only with format option
private boolean isConfirmationNeeded = true;
private boolean isInteractive = true;
private String name = null;
private StartupOption(String arg) {this.name = arg;}
public String getName() {return name;}
public MetaRecoveryContext createRecoveryContext() {
if (!name.equals(RECOVER.name))
return null;
return new MetaRecoveryContext(force);
}
public void setForce(int force) {
this.force = force;
}
public int getForce() {
return this.force;
}
public void setConfirmationNeeded(boolean confirmationNeeded) {
this.isConfirmationNeeded = confirmationNeeded;
}
public boolean getConfirmationNeeded() {
return isConfirmationNeeded;
}
public void setInteractive(boolean interactive) {
this.isInteractive = interactive;
}
public boolean getInteractive() {
return isInteractive;
}
}
// Timeouts for communicating with DataNode for streaming writes/reads
public static int READ_TIMEOUT = 60 * 1000;
public static int READ_TIMEOUT_EXTENSION = 3 * 1000;
public static int WRITE_TIMEOUT = 8 * 60 * 1000;
public static int WRITE_TIMEOUT_EXTENSION = 5 * 1000; //for write pipeline
// The lease holder for recovery initiated by the NameNode
public static final String NN_RECOVERY_LEASEHOLDER = "NN_Recovery";
}