blob: fcffa64fc0f6cb23c6586f254b84e92b49601df3 [file] [log] [blame]
/**
* 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.dfs;
import org.apache.hadoop.conf.Configuration;
/************************************
* Some handy constants
*
************************************/
public interface FSConstants {
public static int MIN_BLOCKS_FOR_WRITE = 5;
//
// IPC Opcodes
//
// Processed at namenode
public static final byte OP_ERROR = (byte) 0;
public static final byte OP_HEARTBEAT = (byte) 1;
public static final byte OP_BLOCKRECEIVED = (byte) 2;
public static final byte OP_BLOCKREPORT = (byte) 3;
public static final byte OP_TRANSFERDATA = (byte) 4;
// Processed at namenode, from client
public static final byte OP_CLIENT_OPEN = (byte) 20;
public static final byte OP_CLIENT_STARTFILE = (byte) 21;
public static final byte OP_CLIENT_ADDBLOCK = (byte) 22;
public static final byte OP_CLIENT_RENAMETO = (byte) 23;
public static final byte OP_CLIENT_DELETE = (byte) 24;
public static final byte OP_CLIENT_COMPLETEFILE = (byte) 25;
public static final byte OP_CLIENT_LISTING = (byte) 26;
public static final byte OP_CLIENT_OBTAINLOCK = (byte) 27;
public static final byte OP_CLIENT_RELEASELOCK = (byte) 28;
public static final byte OP_CLIENT_EXISTS = (byte) 29;
public static final byte OP_CLIENT_ISDIR = (byte) 30;
public static final byte OP_CLIENT_MKDIRS = (byte) 31;
public static final byte OP_CLIENT_RENEW_LEASE = (byte) 32;
public static final byte OP_CLIENT_ABANDONBLOCK = (byte) 33;
public static final byte OP_CLIENT_RAWSTATS = (byte) 34;
public static final byte OP_CLIENT_DATANODEREPORT = (byte) 35;
public static final byte OP_CLIENT_DATANODE_HINTS = (byte) 36;
// Processed at datanode, back from namenode
public static final byte OP_ACK = (byte) 40;
public static final byte OP_TRANSFERBLOCKS = (byte) 41;
public static final byte OP_INVALIDATE_BLOCKS = (byte) 42;
public static final byte OP_FAILURE = (byte) 43;
// Processed at client, back from namenode
public static final byte OP_CLIENT_OPEN_ACK = (byte) 60;
public static final byte OP_CLIENT_STARTFILE_ACK = (byte) 61;
public static final byte OP_CLIENT_ADDBLOCK_ACK = (byte) 62;
public static final byte OP_CLIENT_RENAMETO_ACK = (byte) 63;
public static final byte OP_CLIENT_DELETE_ACK = (byte) 64;
public static final byte OP_CLIENT_COMPLETEFILE_ACK = (byte) 65;
public static final byte OP_CLIENT_TRYAGAIN = (byte) 66;
public static final byte OP_CLIENT_LISTING_ACK = (byte) 67;
public static final byte OP_CLIENT_OBTAINLOCK_ACK = (byte) 68;
public static final byte OP_CLIENT_RELEASELOCK_ACK = (byte) 69;
public static final byte OP_CLIENT_EXISTS_ACK = (byte) 70;
public static final byte OP_CLIENT_ISDIR_ACK = (byte) 71;
public static final byte OP_CLIENT_MKDIRS_ACK = (byte) 72;
public static final byte OP_CLIENT_RENEW_LEASE_ACK = (byte) 73;
public static final byte OP_CLIENT_ABANDONBLOCK_ACK = (byte) 74;
public static final byte OP_CLIENT_RAWSTATS_ACK = (byte) 75;
public static final byte OP_CLIENT_DATANODEREPORT_ACK = (byte) 76;
public static final byte OP_CLIENT_DATANODE_HINTS_ACK = (byte) 77;
// Processed at datanode stream-handler
public static final byte OP_WRITE_BLOCK = (byte) 80;
public static final byte OP_READ_BLOCK = (byte) 81;
public static final byte OP_READ_METADATA = (byte) 82;
public static final byte OP_REPLACE_BLOCK = (byte) 83;
public static final byte OP_COPY_BLOCK = (byte) 84;
public static final int OP_STATUS_SUCCESS = 0;
public static final int OP_STATUS_ERROR = 1;
public static final int OP_STATUS_ERROR_CHECKSUM = 2;
public static final int OP_STATUS_ERROR_INVALID = 3;
public static final int OP_STATUS_ERROR_EXISTS = 4;
public static final int OP_STATUS_CHECKSUM_OK = 5;
/** Version for data transfers between clients and datanodes
* This should change when serialization of DatanodeInfo, not just
* when protocol changes. It is not very obvious.
*/
/*
* Version 11:
* OP_WRITE_BLOCK sends a boolean. If its value is true, an additonal
* DatanodeInfo of client requesting transfer is also sent.
*/
public static final int DATA_TRANSFER_VERSION = 11;
// Return codes for file create
public static final int OPERATION_FAILED = 0;
public static final int STILL_WAITING = 1;
public static final int COMPLETE_SUCCESS = 2;
// Chunk the block Invalidate message
public static final int BLOCK_INVALIDATE_CHUNK = 100;
//
// Timeouts, constants
//
public static long HEARTBEAT_INTERVAL = 3;
public static long BLOCKREPORT_INTERVAL = 60 * 60 * 1000;
public static long BLOCKREPORT_INITIAL_DELAY = 0;
public static final long LEASE_SOFTLIMIT_PERIOD = 60 * 1000;
public static final long LEASE_HARDLIMIT_PERIOD = 60 * LEASE_SOFTLIMIT_PERIOD;
public static final long LEASE_RECOVER_PERIOD = 10 * 1000; //in ms
public static int READ_TIMEOUT = 60 * 1000;
public static int WRITE_TIMEOUT = 8 * 60 * 1000;
public static int WRITE_TIMEOUT_EXTENSION = 5 * 1000; //for write pipeline
// We need to limit the length and depth of a path in the filesystem. HADOOP-438
// Currently we set the maximum length to 8k characters and the maximum depth to 1k.
public static int MAX_PATH_LENGTH = 8000;
public static int MAX_PATH_DEPTH = 1000;
public static final int BUFFER_SIZE = new Configuration().getInt("io.file.buffer.size", 4096);
//Used for writing header etc.
static final int SMALL_BUFFER_SIZE = Math.min(BUFFER_SIZE/2, 512);
//TODO mb@media-style.com: should be conf injected?
public static final long DEFAULT_BLOCK_SIZE = 64 * 1024 * 1024;
public static final int DEFAULT_DATA_SOCKET_SIZE = 128 * 1024;
public static final int SIZE_OF_INTEGER = Integer.SIZE / Byte.SIZE;
// SafeMode actions
public enum SafeModeAction{ SAFEMODE_LEAVE, SAFEMODE_ENTER, SAFEMODE_GET; }
// Startup options
public enum StartupOption{
FORMAT ("-format"),
REGULAR ("-regular"),
UPGRADE ("-upgrade"),
ROLLBACK("-rollback"),
FINALIZE("-finalize"),
IMPORT ("-importCheckpoint");
private String name = null;
private StartupOption(String arg) {this.name = arg;}
String getName() {return name;}
}
// type of the datanode report
public static enum DatanodeReportType {ALL, LIVE, DEAD }
// checkpoint states
public enum CheckpointStates{ START, ROLLED_EDITS, UPLOAD_START, UPLOAD_DONE; }
/**
* Type of the node
*/
static public enum NodeType {
NAME_NODE,
DATA_NODE;
}
/**
* Distributed upgrade actions:
*
* 1. Get upgrade status.
* 2. Get detailed upgrade status.
* 3. Proceed with the upgrade if it is stuck, no matter what the status is.
*/
public static enum UpgradeAction {
GET_STATUS,
DETAILED_STATUS,
FORCE_PROCEED;
}
// Version is reflected in the dfs image and edit log files.
// Version is reflected in the data storage file.
// Versions are negative.
// Decrement LAYOUT_VERSION to define a new version.
public static final int LAYOUT_VERSION = -16;
// Current version:
// Change edit log and fsimage to support quotas
}