You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-commits@hadoop.apache.org by sz...@apache.org on 2014/01/31 04:21:46 UTC
svn commit: r1563041 [2/2] - in
/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs: ./
src/contrib/bkjournal/src/main/java/org/apache/hadoop/contrib/bkjournal/
src/contrib/bkjournal/src/test/java/org/apache/hadoop/contrib/bkjournal/
src/...
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageFormat.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageFormat.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageFormat.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageFormat.java Fri Jan 31 03:21:45 2014
@@ -260,9 +260,10 @@ public class FSImageFormat {
"imgVersion " + imgVersion +
" expected to be " + getLayoutVersion());
}
- boolean supportSnapshot = LayoutVersion.supports(Feature.SNAPSHOT,
- imgVersion);
- if (LayoutVersion.supports(Feature.ADD_LAYOUT_FLAGS, imgVersion)) {
+ boolean supportSnapshot = NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.SNAPSHOT, imgVersion);
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.ADD_LAYOUT_FLAGS, imgVersion)) {
LayoutFlags.read(in);
}
@@ -275,7 +276,8 @@ public class FSImageFormat {
long genstamp = in.readLong();
namesystem.setGenerationStampV1(genstamp);
- if (LayoutVersion.supports(Feature.SEQUENTIAL_BLOCK_ID, imgVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.SEQUENTIAL_BLOCK_ID, imgVersion)) {
// read the starting generation stamp for sequential block IDs
genstamp = in.readLong();
namesystem.setGenerationStampV2(genstamp);
@@ -297,14 +299,16 @@ public class FSImageFormat {
// read the transaction ID of the last edit represented by
// this image
- if (LayoutVersion.supports(Feature.STORED_TXIDS, imgVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.STORED_TXIDS, imgVersion)) {
imgTxId = in.readLong();
} else {
imgTxId = 0;
}
// read the last allocated inode id in the fsimage
- if (LayoutVersion.supports(Feature.ADD_INODE_ID, imgVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.ADD_INODE_ID, imgVersion)) {
long lastInodeId = in.readLong();
namesystem.resetLastInodeId(lastInodeId);
if (LOG.isDebugEnabled()) {
@@ -323,7 +327,8 @@ public class FSImageFormat {
// read compression related info
FSImageCompression compression;
- if (LayoutVersion.supports(Feature.FSIMAGE_COMPRESSION, imgVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.FSIMAGE_COMPRESSION, imgVersion)) {
compression = FSImageCompression.readCompressionHeader(conf, in);
} else {
compression = FSImageCompression.createNoopCompression();
@@ -336,8 +341,8 @@ public class FSImageFormat {
LOG.info("Number of files = " + numFiles);
prog.setTotal(Phase.LOADING_FSIMAGE, step, numFiles);
Counter counter = prog.getCounter(Phase.LOADING_FSIMAGE, step);
- if (LayoutVersion.supports(Feature.FSIMAGE_NAME_OPTIMIZATION,
- imgVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.FSIMAGE_NAME_OPTIMIZATION, imgVersion)) {
if (supportSnapshot) {
loadLocalNameINodesWithSnapshot(numFiles, in, counter);
} else {
@@ -394,9 +399,10 @@ public class FSImageFormat {
*/
private void loadLocalNameINodesWithSnapshot(long numFiles, DataInput in,
Counter counter) throws IOException {
- assert LayoutVersion.supports(Feature.FSIMAGE_NAME_OPTIMIZATION,
- getLayoutVersion());
- assert LayoutVersion.supports(Feature.SNAPSHOT, getLayoutVersion());
+ assert NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.FSIMAGE_NAME_OPTIMIZATION, getLayoutVersion());
+ assert NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.SNAPSHOT, getLayoutVersion());
// load root
loadRoot(in, counter);
@@ -414,8 +420,8 @@ public class FSImageFormat {
*/
private void loadLocalNameINodes(long numFiles, DataInput in, Counter counter)
throws IOException {
- assert LayoutVersion.supports(Feature.FSIMAGE_NAME_OPTIMIZATION,
- getLayoutVersion());
+ assert NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.FSIMAGE_NAME_OPTIMIZATION, getLayoutVersion());
assert numFiles > 0;
// load root
@@ -624,7 +630,8 @@ public class FSImageFormat {
final byte[] localName = FSImageSerialization.readLocalName(in);
INode inode = loadINode(localName, isSnapshotINode, in, counter);
if (updateINodeMap
- && LayoutVersion.supports(Feature.ADD_INODE_ID, getLayoutVersion())) {
+ && NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.ADD_INODE_ID, getLayoutVersion())) {
namesystem.dir.addToInodeMap(inode);
}
return inode;
@@ -640,18 +647,21 @@ public class FSImageFormat {
INode loadINode(final byte[] localName, boolean isSnapshotINode,
DataInput in, Counter counter) throws IOException {
final int imgVersion = getLayoutVersion();
- if (LayoutVersion.supports(Feature.SNAPSHOT, imgVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.SNAPSHOT, imgVersion)) {
namesystem.getFSDirectory().verifyINodeName(localName);
}
- long inodeId = LayoutVersion.supports(Feature.ADD_INODE_ID, imgVersion) ?
- in.readLong() : namesystem.allocateNewInodeId();
+ long inodeId = NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.ADD_INODE_ID, imgVersion) ? in.readLong()
+ : namesystem.allocateNewInodeId();
final short replication = namesystem.getBlockManager().adjustReplication(
in.readShort());
final long modificationTime = in.readLong();
long atime = 0;
- if (LayoutVersion.supports(Feature.FILE_ACCESS_TIME, imgVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.FILE_ACCESS_TIME, imgVersion)) {
atime = in.readLong();
}
final long blockSize = in.readLong();
@@ -671,7 +681,8 @@ public class FSImageFormat {
String clientMachine = "";
boolean underConstruction = false;
FileDiffList fileDiffs = null;
- if (LayoutVersion.supports(Feature.SNAPSHOT, imgVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.SNAPSHOT, imgVersion)) {
// read diffs
fileDiffs = SnapshotFSImageFormat.loadFileDiffList(in, this);
@@ -710,14 +721,16 @@ public class FSImageFormat {
//read quotas
final long nsQuota = in.readLong();
long dsQuota = -1L;
- if (LayoutVersion.supports(Feature.DISKSPACE_QUOTA, imgVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.DISKSPACE_QUOTA, imgVersion)) {
dsQuota = in.readLong();
}
//read snapshot info
boolean snapshottable = false;
boolean withSnapshot = false;
- if (LayoutVersion.supports(Feature.SNAPSHOT, imgVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.SNAPSHOT, imgVersion)) {
snapshottable = in.readBoolean();
if (!snapshottable) {
withSnapshot = in.readBoolean();
@@ -780,7 +793,8 @@ public class FSImageFormat {
throws IOException {
final int layoutVersion = getLayoutVersion();
- if (!LayoutVersion.supports(Feature.OPTIMIZE_SNAPSHOT_INODES, layoutVersion)) {
+ if (!NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.OPTIMIZE_SNAPSHOT_INODES, layoutVersion)) {
return loadINodeWithLocalName(true, in, false).asFile();
}
@@ -801,7 +815,8 @@ public class FSImageFormat {
throws IOException {
final int layoutVersion = getLayoutVersion();
- if (!LayoutVersion.supports(Feature.OPTIMIZE_SNAPSHOT_INODES, layoutVersion)) {
+ if (!NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.OPTIMIZE_SNAPSHOT_INODES, layoutVersion)) {
return loadINodeWithLocalName(true, in, false).asDirectory();
}
@@ -836,7 +851,8 @@ public class FSImageFormat {
INodeFile oldnode = null;
boolean inSnapshot = false;
if (path != null && FSDirectory.isReservedName(path) &&
- LayoutVersion.supports(Feature.ADD_INODE_ID, getLayoutVersion())) {
+ NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.ADD_INODE_ID, getLayoutVersion())) {
// TODO: for HDFS-5428, we use reserved path for those INodeFileUC in
// snapshot. If we support INode ID in the layout version, we can use
// the inode id to find the oldnode.
@@ -869,7 +885,8 @@ public class FSImageFormat {
throws IOException {
int imgVersion = getLayoutVersion();
- if (!LayoutVersion.supports(Feature.DELEGATION_TOKEN, imgVersion)) {
+ if (!NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.DELEGATION_TOKEN, imgVersion)) {
//SecretManagerState is not available.
//This must not happen if security is turned on.
return;
@@ -879,7 +896,8 @@ public class FSImageFormat {
private void loadCacheManagerState(DataInput in) throws IOException {
int imgVersion = getLayoutVersion();
- if (!LayoutVersion.supports(Feature.CACHING, imgVersion)) {
+ if (!NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.CACHING, imgVersion)) {
return;
}
namesystem.getCacheManager().loadStateCompat(in);
@@ -993,7 +1011,7 @@ public class FSImageFormat {
DigestOutputStream fos = new DigestOutputStream(fout, digester);
DataOutputStream out = new DataOutputStream(fos);
try {
- out.writeInt(HdfsConstants.LAYOUT_VERSION);
+ out.writeInt(HdfsConstants.NAMENODE_LAYOUT_VERSION);
LayoutFlags.write(out);
// We use the non-locked version of getNamespaceInfo here since
// the coordinating thread of saveNamespace already has read-locked
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageSerialization.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageSerialization.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageSerialization.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageSerialization.java Fri Jan 31 03:21:45 2014
@@ -33,7 +33,6 @@ import org.apache.hadoop.hdfs.protocol.B
import org.apache.hadoop.hdfs.protocol.CacheDirectiveInfo;
import org.apache.hadoop.hdfs.protocol.CachePoolInfo;
import org.apache.hadoop.hdfs.protocol.LayoutVersion;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion.Feature;
import org.apache.hadoop.hdfs.server.blockmanagement.BlockInfo;
import org.apache.hadoop.hdfs.server.blockmanagement.BlockInfoUnderConstruction;
import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.BlockUCState;
@@ -118,8 +117,9 @@ public class FSImageSerialization {
DataInput in, FSNamesystem fsNamesys, int imgVersion)
throws IOException {
byte[] name = readBytes(in);
- long inodeId = LayoutVersion.supports(Feature.ADD_INODE_ID, imgVersion) ? in
- .readLong() : fsNamesys.allocateNewInodeId();
+ long inodeId = NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.ADD_INODE_ID, imgVersion) ? in.readLong()
+ : fsNamesys.allocateNewInodeId();
short blockReplication = in.readShort();
long modificationTime = in.readLong();
long preferredBlockSize = in.readLong();
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FileJournalManager.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FileJournalManager.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FileJournalManager.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FileJournalManager.java Fri Jan 31 03:21:45 2014
@@ -34,6 +34,7 @@ import org.apache.hadoop.conf.Configurat
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.hdfs.protocol.HdfsConstants;
import org.apache.hadoop.hdfs.server.common.Storage;
+import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.NodeType;
import org.apache.hadoop.hdfs.server.common.Storage.StorageDirectory;
import org.apache.hadoop.hdfs.server.common.StorageErrorReporter;
import org.apache.hadoop.hdfs.server.common.StorageInfo;
@@ -531,7 +532,7 @@ public class FileJournalManager implemen
@Override
public long getJournalCTime() throws IOException {
- StorageInfo sInfo = new StorageInfo();
+ StorageInfo sInfo = new StorageInfo(NodeType.NAME_NODE);
sInfo.readProperties(sd);
return sInfo.getCTime();
}
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NNStorage.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NNStorage.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NNStorage.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NNStorage.java Fri Jan 31 03:21:45 2014
@@ -38,7 +38,6 @@ import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.hdfs.DFSUtil;
import org.apache.hadoop.hdfs.protocol.HdfsConstants;
import org.apache.hadoop.hdfs.protocol.LayoutVersion;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion.Feature;
import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.NodeType;
import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.StartupOption;
import org.apache.hadoop.hdfs.server.common.InconsistentFSStateException;
@@ -533,7 +532,7 @@ public class NNStorage extends Storage i
*/
public void format(NamespaceInfo nsInfo) throws IOException {
Preconditions.checkArgument(nsInfo.getLayoutVersion() == 0 ||
- nsInfo.getLayoutVersion() == HdfsConstants.LAYOUT_VERSION,
+ nsInfo.getLayoutVersion() == HdfsConstants.NAMENODE_LAYOUT_VERSION,
"Bad layout version: %s", nsInfo.getLayoutVersion());
this.setStorageInfo(nsInfo);
@@ -552,7 +551,7 @@ public class NNStorage extends Storage i
}
public void format() throws IOException {
- this.layoutVersion = HdfsConstants.LAYOUT_VERSION;
+ this.layoutVersion = HdfsConstants.NAMENODE_LAYOUT_VERSION;
for (Iterator<StorageDirectory> it =
dirIterator(); it.hasNext();) {
StorageDirectory sd = it.next();
@@ -589,7 +588,8 @@ public class NNStorage extends Storage i
}
// Set Block pool ID in version with federation support
- if (versionSupportsFederation()) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.FEDERATION, getLayoutVersion())) {
String sbpid = props.getProperty("blockpoolID");
setBlockPoolID(sd.getRoot(), sbpid);
}
@@ -614,7 +614,7 @@ public class NNStorage extends Storage i
* This should only be used during upgrades.
*/
String getDeprecatedProperty(String prop) {
- assert getLayoutVersion() > HdfsConstants.LAYOUT_VERSION :
+ assert getLayoutVersion() > HdfsConstants.NAMENODE_LAYOUT_VERSION :
"getDeprecatedProperty should only be done when loading " +
"storage from past versions during upgrade.";
return deprecatedProperties.get(prop);
@@ -636,7 +636,8 @@ public class NNStorage extends Storage i
) throws IOException {
super.setPropertiesFromFields(props, sd);
// Set blockpoolID in version with federation support
- if (versionSupportsFederation()) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.FEDERATION, getLayoutVersion())) {
props.setProperty("blockpoolID", blockpoolID);
}
}
@@ -808,7 +809,8 @@ public class NNStorage extends Storage i
// If upgrade from a release that does not support federation,
// if clusterId is provided in the startupOptions use it.
// Else generate a new cluster ID
- if (!LayoutVersion.supports(Feature.FEDERATION, layoutVersion)) {
+ if (!NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.FEDERATION, layoutVersion)) {
if (startOpt.getClusterId() == null) {
startOpt.setClusterId(newClusterID());
}
@@ -1005,7 +1007,8 @@ public class NNStorage extends Storage i
// (ie edits_<txnid>) then use the new inspector, which will ignore
// the old format dirs.
FSImageStorageInspector inspector;
- if (LayoutVersion.supports(Feature.TXID_BASED_LAYOUT, getLayoutVersion())) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.TXID_BASED_LAYOUT, getLayoutVersion())) {
inspector = new FSImageTransactionalStorageInspector();
} else {
inspector = new FSImagePreTransactionalStorageInspector();
Added: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeLayoutVersion.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeLayoutVersion.java?rev=1563041&view=auto
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeLayoutVersion.java (added)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeLayoutVersion.java Fri Jan 31 03:21:45 2014
@@ -0,0 +1,98 @@
+/**
+ * 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.namenode;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.SortedSet;
+
+import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.hdfs.protocol.LayoutVersion;
+import org.apache.hadoop.hdfs.protocol.LayoutVersion.FeatureInfo;
+import org.apache.hadoop.hdfs.protocol.LayoutVersion.LayoutFeature;
+
+
+@InterfaceAudience.Private
+public class NameNodeLayoutVersion {
+ /** Build layout version and corresponding feature matrix */
+ public final static Map<Integer, SortedSet<LayoutFeature>> FEATURES
+ = new HashMap<Integer, SortedSet<LayoutFeature>>();
+
+ public static final int CURRENT_LAYOUT_VERSION
+ = LayoutVersion.getCurrentLayoutVersion(FEATURES, Feature.values());
+
+ static {
+ LayoutVersion.updateMap(FEATURES, LayoutVersion.Feature.values());
+ LayoutVersion.updateMap(FEATURES, NameNodeLayoutVersion.Feature.values());
+ }
+
+ public static SortedSet<LayoutFeature> getFeatures(int lv) {
+ return FEATURES.get(lv);
+ }
+
+ public static boolean supports(final LayoutFeature f, final int lv) {
+ return LayoutVersion.supports(FEATURES, f, lv);
+ }
+
+ /**
+ * Enums for features that change the layout version.
+ * <br><br>
+ * To add a new layout version:
+ * <ul>
+ * <li>Define a new enum constant with a short enum name, the new layout version
+ * and description of the added feature.</li>
+ * <li>When adding a layout version with an ancestor that is not same as
+ * its immediate predecessor, use the constructor where a specific ancestor
+ * can be passed.
+ * </li>
+ * </ul>
+ */
+ public static enum Feature implements LayoutFeature {
+ ROLLING_UPGRADE_MARKER(-52, "Upgrade marker for rolling upgrade");
+
+ private final FeatureInfo info;
+
+ /**
+ * Feature that is added at layout version {@code lv} - 1.
+ * @param lv new layout version with the addition of this feature
+ * @param description description of the feature
+ */
+ Feature(final int lv, final String description) {
+ this(lv, lv + 1, description, false);
+ }
+
+ /**
+ * NameNode feature that is added at layout version {@code ancestoryLV}.
+ * @param lv new layout version with the addition of this feature
+ * @param ancestorLV layout version from which the new lv is derived from.
+ * @param description description of the feature
+ * @param reserved true when this is a layout version reserved for previous
+ * versions
+ * @param features set of features that are to be enabled for this version
+ */
+ Feature(final int lv, final int ancestorLV, final String description,
+ boolean reserved, Feature... features) {
+ info = new FeatureInfo(lv, ancestorLV, description, reserved, features);
+ }
+
+ @Override
+ public FeatureInfo getInfo() {
+ return info;
+ }
+ }
+}
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeRpcServer.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeRpcServer.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeRpcServer.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeRpcServer.java Fri Jan 31 03:21:45 2014
@@ -973,7 +973,6 @@ class NameNodeRpcServer implements Namen
@Override // DatanodeProtocol
public DatanodeRegistration registerDatanode(DatanodeRegistration nodeReg)
throws IOException {
- verifyLayoutVersion(nodeReg.getVersion());
verifySoftwareVersion(nodeReg);
namesystem.registerDatanode(nodeReg);
return nodeReg;
@@ -1071,7 +1070,6 @@ class NameNodeRpcServer implements Namen
* @throws UnregisteredNodeException if the registration is invalid
*/
void verifyRequest(NodeRegistration nodeReg) throws IOException {
- verifyLayoutVersion(nodeReg.getVersion());
if (!namesystem.getRegistrationID().equals(nodeReg.getRegistrationID())) {
LOG.warn("Invalid registrationID - expected: "
+ namesystem.getRegistrationID() + " received: "
@@ -1147,8 +1145,9 @@ class NameNodeRpcServer implements Namen
* @throws IOException
*/
void verifyLayoutVersion(int version) throws IOException {
- if (version != HdfsConstants.LAYOUT_VERSION)
- throw new IncorrectVersionException(version, "data node");
+ if (version != HdfsConstants.NAMENODE_LAYOUT_VERSION)
+ throw new IncorrectVersionException(
+ HdfsConstants.NAMENODE_LAYOUT_VERSION, version, "data node");
}
private void verifySoftwareVersion(DatanodeRegistration dnReg)
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/SecondaryNameNode.java Fri Jan 31 03:21:45 2014
@@ -511,8 +511,10 @@ public class SecondaryNameNode implement
boolean loadImage = false;
boolean isFreshCheckpointer = (checkpointImage.getNamespaceID() == 0);
boolean isSameCluster =
- (dstStorage.versionSupportsFederation() && sig.isSameCluster(checkpointImage)) ||
- (!dstStorage.versionSupportsFederation() && sig.namespaceIdMatches(checkpointImage));
+ (dstStorage.versionSupportsFederation(NameNodeLayoutVersion.FEATURES)
+ && sig.isSameCluster(checkpointImage)) ||
+ (!dstStorage.versionSupportsFederation(NameNodeLayoutVersion.FEATURES)
+ && sig.namespaceIdMatches(checkpointImage));
if (isFreshCheckpointer ||
(isSameCluster &&
!sig.storageVersionMatches(checkpointImage.getStorage()))) {
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/BootstrapStandby.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/BootstrapStandby.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/BootstrapStandby.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/BootstrapStandby.java Fri Jan 31 03:21:45 2014
@@ -153,9 +153,9 @@ public class BootstrapStandby implements
}
if (!checkLayoutVersion(nsInfo)) {
- LOG.fatal("Layout version on remote node (" +
- nsInfo.getLayoutVersion() + ") does not match " +
- "this node's layout version (" + HdfsConstants.LAYOUT_VERSION + ")");
+ LOG.fatal("Layout version on remote node (" + nsInfo.getLayoutVersion()
+ + ") does not match " + "this node's layout version ("
+ + HdfsConstants.NAMENODE_LAYOUT_VERSION + ")");
return ERR_CODE_INVALID_VERSION;
}
@@ -257,7 +257,7 @@ public class BootstrapStandby implements
}
private boolean checkLayoutVersion(NamespaceInfo nsInfo) throws IOException {
- return (nsInfo.getLayoutVersion() == HdfsConstants.LAYOUT_VERSION);
+ return (nsInfo.getLayoutVersion() == HdfsConstants.NAMENODE_LAYOUT_VERSION);
}
private void parseConfAndFindOtherNN() throws IOException {
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/protocol/NamespaceInfo.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/protocol/NamespaceInfo.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/protocol/NamespaceInfo.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/protocol/NamespaceInfo.java Fri Jan 31 03:21:45 2014
@@ -25,6 +25,7 @@ import org.apache.hadoop.classification.
import org.apache.hadoop.hdfs.protocol.HdfsConstants;
import org.apache.hadoop.hdfs.server.common.Storage;
import org.apache.hadoop.hdfs.server.common.StorageInfo;
+import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.NodeType;
import org.apache.hadoop.hdfs.server.namenode.NNStorage;
import org.apache.hadoop.util.VersionInfo;
@@ -41,13 +42,14 @@ public class NamespaceInfo extends Stora
String softwareVersion;
public NamespaceInfo() {
- super();
+ super(NodeType.NAME_NODE);
buildVersion = null;
}
public NamespaceInfo(int nsID, String clusterID, String bpID,
long cT, String buildVersion, String softwareVersion) {
- super(HdfsConstants.LAYOUT_VERSION, nsID, clusterID, cT);
+ super(HdfsConstants.NAMENODE_LAYOUT_VERSION, nsID, clusterID, cT,
+ NodeType.NAME_NODE);
blockPoolID = bpID;
this.buildVersion = buildVersion;
this.softwareVersion = softwareVersion;
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/ImageLoaderCurrent.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/ImageLoaderCurrent.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/ImageLoaderCurrent.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/ImageLoaderCurrent.java Fri Jan 31 03:21:45 2014
@@ -30,10 +30,10 @@ import org.apache.hadoop.fs.permission.F
import org.apache.hadoop.hdfs.protocol.DatanodeInfo.AdminStates;
import org.apache.hadoop.hdfs.protocol.LayoutFlags;
import org.apache.hadoop.hdfs.protocol.LayoutVersion;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion.Feature;
import org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenIdentifier;
import org.apache.hadoop.hdfs.server.namenode.FSImageSerialization;
import org.apache.hadoop.hdfs.server.namenode.INodeId;
+import org.apache.hadoop.hdfs.server.namenode.NameNodeLayoutVersion;
import org.apache.hadoop.hdfs.tools.offlineImageViewer.ImageVisitor.ImageElement;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.WritableUtils;
@@ -158,7 +158,8 @@ class ImageLoaderCurrent implements Imag
imageVersion = in.readInt();
if( !canLoadVersion(imageVersion))
throw new IOException("Cannot process fslayout version " + imageVersion);
- if (LayoutVersion.supports(Feature.ADD_LAYOUT_FLAGS, imageVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.ADD_LAYOUT_FLAGS, imageVersion)) {
LayoutFlags.read(in);
}
@@ -169,22 +170,25 @@ class ImageLoaderCurrent implements Imag
v.visit(ImageElement.GENERATION_STAMP, in.readLong());
- if (LayoutVersion.supports(Feature.SEQUENTIAL_BLOCK_ID, imageVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.SEQUENTIAL_BLOCK_ID, imageVersion)) {
v.visit(ImageElement.GENERATION_STAMP_V2, in.readLong());
v.visit(ImageElement.GENERATION_STAMP_V1_LIMIT, in.readLong());
v.visit(ImageElement.LAST_ALLOCATED_BLOCK_ID, in.readLong());
}
- if (LayoutVersion.supports(Feature.STORED_TXIDS, imageVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.STORED_TXIDS, imageVersion)) {
v.visit(ImageElement.TRANSACTION_ID, in.readLong());
}
- if (LayoutVersion.supports(Feature.ADD_INODE_ID, imageVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.ADD_INODE_ID, imageVersion)) {
v.visit(ImageElement.LAST_INODE_ID, in.readLong());
}
- boolean supportSnapshot = LayoutVersion.supports(Feature.SNAPSHOT,
- imageVersion);
+ boolean supportSnapshot = NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.SNAPSHOT, imageVersion);
if (supportSnapshot) {
v.visit(ImageElement.SNAPSHOT_COUNTER, in.readInt());
int numSnapshots = in.readInt();
@@ -194,7 +198,8 @@ class ImageLoaderCurrent implements Imag
}
}
- if (LayoutVersion.supports(Feature.FSIMAGE_COMPRESSION, imageVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.FSIMAGE_COMPRESSION, imageVersion)) {
boolean isCompressed = in.readBoolean();
v.visit(ImageElement.IS_COMPRESSED, String.valueOf(isCompressed));
if (isCompressed) {
@@ -216,11 +221,13 @@ class ImageLoaderCurrent implements Imag
processINodesUC(in, v, skipBlocks);
- if (LayoutVersion.supports(Feature.DELEGATION_TOKEN, imageVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.DELEGATION_TOKEN, imageVersion)) {
processDelegationTokens(in, v);
}
- if (LayoutVersion.supports(Feature.CACHING, imageVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.CACHING, imageVersion)) {
processCacheManagerState(in, v);
}
v.leaveEnclosingElement(); // FSImage
@@ -323,7 +330,8 @@ class ImageLoaderCurrent implements Imag
String n = new String(name, "UTF8");
v.visit(ImageElement.INODE_PATH, n);
- if (LayoutVersion.supports(Feature.ADD_INODE_ID, imageVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.ADD_INODE_ID, imageVersion)) {
long inodeId = in.readLong();
v.visit(ImageElement.INODE_ID, inodeId);
}
@@ -443,7 +451,8 @@ class ImageLoaderCurrent implements Imag
v.visitEnclosingElement(ImageElement.INODES,
ImageElement.NUM_INODES, numInodes);
- if (LayoutVersion.supports(Feature.FSIMAGE_NAME_OPTIMIZATION, imageVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.FSIMAGE_NAME_OPTIMIZATION, imageVersion)) {
if (!supportSnapshot) {
processLocalNameINodes(in, v, numInodes, skipBlocks);
} else {
@@ -584,7 +593,8 @@ class ImageLoaderCurrent implements Imag
if (!useRoot) {
if (in.readBoolean()) {
v.visitEnclosingElement(ImageElement.SNAPSHOT_INODE_DIRECTORY_ATTRIBUTES);
- if (LayoutVersion.supports(Feature.OPTIMIZE_SNAPSHOT_INODES, imageVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.OPTIMIZE_SNAPSHOT_INODES, imageVersion)) {
processINodeDirectoryAttributes(in, v, currentINodeName);
} else {
processINode(in, v, true, currentINodeName, true);
@@ -678,10 +688,10 @@ class ImageLoaderCurrent implements Imag
private void processINode(DataInputStream in, ImageVisitor v,
boolean skipBlocks, String parentName, boolean isSnapshotCopy)
throws IOException {
- boolean supportSnapshot =
- LayoutVersion.supports(Feature.SNAPSHOT, imageVersion);
- boolean supportInodeId =
- LayoutVersion.supports(Feature.ADD_INODE_ID, imageVersion);
+ boolean supportSnapshot = NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.SNAPSHOT, imageVersion);
+ boolean supportInodeId = NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.ADD_INODE_ID, imageVersion);
v.visitEnclosingElement(ImageElement.INODE);
final String pathName = readINodePath(in, parentName);
@@ -694,7 +704,8 @@ class ImageLoaderCurrent implements Imag
}
v.visit(ImageElement.REPLICATION, in.readShort());
v.visit(ImageElement.MODIFICATION_TIME, formatDate(in.readLong()));
- if(LayoutVersion.supports(Feature.FILE_ACCESS_TIME, imageVersion))
+ if(NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.FILE_ACCESS_TIME, imageVersion))
v.visit(ImageElement.ACCESS_TIME, formatDate(in.readLong()));
v.visit(ImageElement.BLOCK_SIZE, in.readLong());
int numBlocks = in.readInt();
@@ -723,7 +734,8 @@ class ImageLoaderCurrent implements Imag
dirNodeMap.put(inodeId, pathName);
}
v.visit(ImageElement.NS_QUOTA, numBlocks == -1 ? in.readLong() : -1);
- if (LayoutVersion.supports(Feature.DISKSPACE_QUOTA, imageVersion))
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.DISKSPACE_QUOTA, imageVersion))
v.visit(ImageElement.DS_QUOTA, numBlocks == -1 ? in.readLong() : -1);
if (supportSnapshot) {
boolean snapshottable = in.readBoolean();
@@ -770,7 +782,8 @@ class ImageLoaderCurrent implements Imag
v.visit(ImageElement.INODE_PATH, pathName);
processPermission(in, v);
v.visit(ImageElement.MODIFICATION_TIME, formatDate(in.readLong()));
- if(LayoutVersion.supports(Feature.FILE_ACCESS_TIME, imageVersion)) {
+ if(NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.FILE_ACCESS_TIME, imageVersion)) {
v.visit(ImageElement.ACCESS_TIME, formatDate(in.readLong()));
}
@@ -799,7 +812,8 @@ class ImageLoaderCurrent implements Imag
v.visit(ImageElement.SNAPSHOT_FILE_SIZE, in.readLong());
if (in.readBoolean()) {
v.visitEnclosingElement(ImageElement.SNAPSHOT_INODE_FILE_ATTRIBUTES);
- if (LayoutVersion.supports(Feature.OPTIMIZE_SNAPSHOT_INODES, imageVersion)) {
+ if (NameNodeLayoutVersion.supports(
+ LayoutVersion.Feature.OPTIMIZE_SNAPSHOT_INODES, imageVersion)) {
processINodeFileAttributes(in, v, currentINodeName);
} else {
processINode(in, v, true, currentINodeName, true);
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/DFSTestUtil.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/DFSTestUtil.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/DFSTestUtil.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/DFSTestUtil.java Fri Jan 31 03:21:45 2014
@@ -42,6 +42,7 @@ import org.apache.hadoop.hdfs.server.blo
import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor;
import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeManager;
import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeStorageInfo;
+import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.NodeType;
import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.StartupOption;
import org.apache.hadoop.hdfs.server.common.StorageInfo;
import org.apache.hadoop.hdfs.server.datanode.DataNode;
@@ -884,8 +885,8 @@ public class DFSTestUtil {
}
public static DatanodeRegistration getLocalDatanodeRegistration() {
- return new DatanodeRegistration(getLocalDatanodeID(),
- new StorageInfo(), new ExportedBlockKeys(), VersionInfo.getVersion());
+ return new DatanodeRegistration(getLocalDatanodeID(), new StorageInfo(
+ NodeType.DATA_NODE), new ExportedBlockKeys(), VersionInfo.getVersion());
}
/** Copy one file's contents into the other **/
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSRollback.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSRollback.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSRollback.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSRollback.java Fri Jan 31 03:21:45 2014
@@ -30,6 +30,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hdfs.protocol.HdfsConstants;
import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.NodeType;
import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.StartupOption;
import org.apache.hadoop.hdfs.server.common.StorageInfo;
@@ -190,10 +191,11 @@ public class TestDFSRollback {
UpgradeUtilities.getCurrentBlockPoolID(cluster));
// Put newer layout version in current.
storageInfo = new StorageInfo(
- UpgradeUtilities.getCurrentLayoutVersion()-1,
+ HdfsConstants.DATANODE_LAYOUT_VERSION - 1,
UpgradeUtilities.getCurrentNamespaceID(cluster),
UpgradeUtilities.getCurrentClusterID(cluster),
- UpgradeUtilities.getCurrentFsscTime(cluster));
+ UpgradeUtilities.getCurrentFsscTime(cluster),
+ NodeType.DATA_NODE);
// Overwrite VERSION file in the current directory of
// volume directories and block pool slice directories
@@ -250,7 +252,8 @@ public class TestDFSRollback {
storageInfo = new StorageInfo(Integer.MIN_VALUE,
UpgradeUtilities.getCurrentNamespaceID(cluster),
UpgradeUtilities.getCurrentClusterID(cluster),
- UpgradeUtilities.getCurrentFsscTime(cluster));
+ UpgradeUtilities.getCurrentFsscTime(cluster),
+ NodeType.DATA_NODE);
UpgradeUtilities.createDataNodeVersionFile(baseDirs, storageInfo,
UpgradeUtilities.getCurrentBlockPoolID(cluster));
@@ -274,10 +277,11 @@ public class TestDFSRollback {
UpgradeUtilities.createDataNodeStorageDirs(dataNodeDirs, "current");
baseDirs = UpgradeUtilities.createDataNodeStorageDirs(dataNodeDirs, "previous");
- storageInfo = new StorageInfo(UpgradeUtilities.getCurrentLayoutVersion(),
- UpgradeUtilities.getCurrentNamespaceID(cluster),
- UpgradeUtilities.getCurrentClusterID(cluster), Long.MAX_VALUE);
-
+ storageInfo = new StorageInfo(HdfsConstants.DATANODE_LAYOUT_VERSION,
+ UpgradeUtilities.getCurrentNamespaceID(cluster),
+ UpgradeUtilities.getCurrentClusterID(cluster), Long.MAX_VALUE,
+ NodeType.DATA_NODE);
+
UpgradeUtilities.createDataNodeVersionFile(baseDirs, storageInfo,
UpgradeUtilities.getCurrentBlockPoolID(cluster));
@@ -317,10 +321,10 @@ public class TestDFSRollback {
log("NameNode rollback with old layout version in previous", numDirs);
UpgradeUtilities.createNameNodeStorageDirs(nameNodeDirs, "current");
baseDirs = UpgradeUtilities.createNameNodeStorageDirs(nameNodeDirs, "previous");
- storageInfo = new StorageInfo(1,
+ storageInfo = new StorageInfo(1,
UpgradeUtilities.getCurrentNamespaceID(null),
UpgradeUtilities.getCurrentClusterID(null),
- UpgradeUtilities.getCurrentFsscTime(null));
+ UpgradeUtilities.getCurrentFsscTime(null), NodeType.NAME_NODE);
UpgradeUtilities.createNameNodeVersionFile(conf, baseDirs,
storageInfo, UpgradeUtilities.getCurrentBlockPoolID(cluster));
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSStartupVersions.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSStartupVersions.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSStartupVersions.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSStartupVersions.java Fri Jan 31 03:21:45 2014
@@ -75,7 +75,7 @@ public class TestDFSStartupVersions {
StorageData(int layoutVersion, int namespaceId, String clusterId,
long cTime, String bpid) {
storageInfo = new StorageInfo(layoutVersion, namespaceId, clusterId,
- cTime);
+ cTime, NodeType.DATA_NODE);
blockPoolId = bpid;
}
}
@@ -89,7 +89,7 @@ public class TestDFSStartupVersions {
*/
private StorageData[] initializeVersions() throws Exception {
int layoutVersionOld = Storage.LAST_UPGRADABLE_LAYOUT_VERSION;
- int layoutVersionCur = UpgradeUtilities.getCurrentLayoutVersion();
+ int layoutVersionCur = HdfsConstants.DATANODE_LAYOUT_VERSION;
int layoutVersionNew = Integer.MIN_VALUE;
int namespaceIdCur = UpgradeUtilities.getCurrentNamespaceID(null);
int namespaceIdOld = Integer.MIN_VALUE;
@@ -200,7 +200,7 @@ public class TestDFSStartupVersions {
return false;
}
// check #3
- int softwareLV = HdfsConstants.LAYOUT_VERSION; // will also be Namenode's LV
+ int softwareLV = HdfsConstants.DATANODE_LAYOUT_VERSION;
int storedLV = datanodeVer.getLayoutVersion();
if (softwareLV == storedLV &&
datanodeVer.getCTime() == namenodeVer.getCTime())
@@ -252,7 +252,7 @@ public class TestDFSStartupVersions {
.startupOption(StartupOption.REGULAR)
.build();
StorageData nameNodeVersion = new StorageData(
- UpgradeUtilities.getCurrentLayoutVersion(),
+ HdfsConstants.NAMENODE_LAYOUT_VERSION,
UpgradeUtilities.getCurrentNamespaceID(cluster),
UpgradeUtilities.getCurrentClusterID(cluster),
UpgradeUtilities.getCurrentFsscTime(cluster),
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSUpgrade.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSUpgrade.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSUpgrade.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDFSUpgrade.java Fri Jan 31 03:21:45 2014
@@ -34,6 +34,8 @@ import java.util.regex.Pattern;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hdfs.protocol.HdfsConstants;
+import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.NodeType;
import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.StartupOption;
import org.apache.hadoop.hdfs.server.common.Storage;
import org.apache.hadoop.hdfs.server.common.StorageInfo;
@@ -262,10 +264,10 @@ public class TestDFSUpgrade {
UpgradeUtilities.createNameNodeStorageDirs(nameNodeDirs, "current");
cluster = createCluster();
baseDirs = UpgradeUtilities.createDataNodeStorageDirs(dataNodeDirs, "current");
- storageInfo = new StorageInfo(Integer.MIN_VALUE,
+ storageInfo = new StorageInfo(Integer.MIN_VALUE,
UpgradeUtilities.getCurrentNamespaceID(cluster),
UpgradeUtilities.getCurrentClusterID(cluster),
- UpgradeUtilities.getCurrentFsscTime(cluster));
+ UpgradeUtilities.getCurrentFsscTime(cluster), NodeType.DATA_NODE);
UpgradeUtilities.createDataNodeVersionFile(baseDirs, storageInfo,
UpgradeUtilities.getCurrentBlockPoolID(cluster));
@@ -280,9 +282,10 @@ public class TestDFSUpgrade {
UpgradeUtilities.createNameNodeStorageDirs(nameNodeDirs, "current");
cluster = createCluster();
baseDirs = UpgradeUtilities.createDataNodeStorageDirs(dataNodeDirs, "current");
- storageInfo = new StorageInfo(UpgradeUtilities.getCurrentLayoutVersion(),
+ storageInfo = new StorageInfo(HdfsConstants.DATANODE_LAYOUT_VERSION,
UpgradeUtilities.getCurrentNamespaceID(cluster),
- UpgradeUtilities.getCurrentClusterID(cluster), Long.MAX_VALUE);
+ UpgradeUtilities.getCurrentClusterID(cluster), Long.MAX_VALUE,
+ NodeType.DATA_NODE);
UpgradeUtilities.createDataNodeVersionFile(baseDirs, storageInfo,
UpgradeUtilities.getCurrentBlockPoolID(cluster));
@@ -321,7 +324,7 @@ public class TestDFSUpgrade {
storageInfo = new StorageInfo(Storage.LAST_UPGRADABLE_LAYOUT_VERSION + 1,
UpgradeUtilities.getCurrentNamespaceID(null),
UpgradeUtilities.getCurrentClusterID(null),
- UpgradeUtilities.getCurrentFsscTime(null));
+ UpgradeUtilities.getCurrentFsscTime(null), NodeType.NAME_NODE);
UpgradeUtilities.createNameNodeVersionFile(conf, baseDirs, storageInfo,
UpgradeUtilities.getCurrentBlockPoolID(cluster));
@@ -334,7 +337,7 @@ public class TestDFSUpgrade {
storageInfo = new StorageInfo(Integer.MIN_VALUE,
UpgradeUtilities.getCurrentNamespaceID(null),
UpgradeUtilities.getCurrentClusterID(null),
- UpgradeUtilities.getCurrentFsscTime(null));
+ UpgradeUtilities.getCurrentFsscTime(null), NodeType.NAME_NODE);
UpgradeUtilities.createNameNodeVersionFile(conf, baseDirs, storageInfo,
UpgradeUtilities.getCurrentBlockPoolID(cluster));
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDatanodeRegistration.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDatanodeRegistration.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDatanodeRegistration.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestDatanodeRegistration.java Fri Jan 31 03:21:45 2014
@@ -179,7 +179,7 @@ public class TestDatanodeRegistration {
.getCTime();
StorageInfo mockStorageInfo = mock(StorageInfo.class);
doReturn(nnCTime).when(mockStorageInfo).getCTime();
- doReturn(HdfsConstants.LAYOUT_VERSION).when(mockStorageInfo)
+ doReturn(HdfsConstants.DATANODE_LAYOUT_VERSION).when(mockStorageInfo)
.getLayoutVersion();
DatanodeRegistration dnReg = new DatanodeRegistration(dnId,
mockStorageInfo, null, VersionInfo.getVersion());
@@ -224,7 +224,7 @@ public class TestDatanodeRegistration {
doReturn(nnCTime).when(mockStorageInfo).getCTime();
DatanodeRegistration mockDnReg = mock(DatanodeRegistration.class);
- doReturn(HdfsConstants.LAYOUT_VERSION).when(mockDnReg).getVersion();
+ doReturn(HdfsConstants.DATANODE_LAYOUT_VERSION).when(mockDnReg).getVersion();
doReturn(123).when(mockDnReg).getXferPort();
doReturn("fake-storage-id").when(mockDnReg).getDatanodeUuid();
doReturn(mockStorageInfo).when(mockDnReg).getStorageInfo();
@@ -272,7 +272,7 @@ public class TestDatanodeRegistration {
doReturn(nnCTime).when(mockStorageInfo).getCTime();
DatanodeRegistration mockDnReg = mock(DatanodeRegistration.class);
- doReturn(HdfsConstants.LAYOUT_VERSION).when(mockDnReg).getVersion();
+ doReturn(HdfsConstants.DATANODE_LAYOUT_VERSION).when(mockDnReg).getVersion();
doReturn("fake-storage-id").when(mockDnReg).getDatanodeUuid();
doReturn(mockStorageInfo).when(mockDnReg).getStorageInfo();
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/UpgradeUtilities.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/UpgradeUtilities.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/UpgradeUtilities.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/UpgradeUtilities.java Fri Jan 31 03:21:45 2014
@@ -40,13 +40,13 @@ import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.protocol.HdfsConstants;
import org.apache.hadoop.hdfs.protocol.HdfsConstants.SafeModeAction;
import org.apache.hadoop.hdfs.protocol.LayoutVersion;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion.Feature;
import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.NodeType;
import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.StartupOption;
import org.apache.hadoop.hdfs.server.common.Storage;
import org.apache.hadoop.hdfs.server.common.Storage.StorageDirectory;
import org.apache.hadoop.hdfs.server.common.StorageInfo;
import org.apache.hadoop.hdfs.server.datanode.BlockPoolSliceStorage;
+import org.apache.hadoop.hdfs.server.datanode.DataNodeLayoutVersion;
import org.apache.hadoop.hdfs.server.datanode.DataStorage;
import org.apache.hadoop.hdfs.server.namenode.NNStorage;
import org.apache.hadoop.hdfs.server.protocol.NamenodeProtocols;
@@ -471,7 +471,8 @@ public class UpgradeUtilities {
public static void createBlockPoolVersionFile(File bpDir,
StorageInfo version, String bpid) throws IOException {
// Create block pool version files
- if (LayoutVersion.supports(Feature.FEDERATION, version.layoutVersion)) {
+ if (DataNodeLayoutVersion.supports(
+ LayoutVersion.Feature.FEDERATION, version.layoutVersion)) {
File bpCurDir = new File(bpDir, Storage.STORAGE_DIR_CURRENT);
BlockPoolSliceStorage bpStorage = new BlockPoolSliceStorage(version,
bpid);
@@ -514,8 +515,8 @@ public class UpgradeUtilities {
* Return the layout version inherent in the current version
* of the Namenode, whether it is running or not.
*/
- public static int getCurrentLayoutVersion() {
- return HdfsConstants.LAYOUT_VERSION;
+ public static int getCurrentNameNodeLayoutVersion() {
+ return HdfsConstants.NAMENODE_LAYOUT_VERSION;
}
/**
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocol/TestLayoutVersion.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocol/TestLayoutVersion.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocol/TestLayoutVersion.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocol/TestLayoutVersion.java Fri Jan 31 03:21:45 2014
@@ -20,9 +20,13 @@ package org.apache.hadoop.hdfs.protocol;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
-import java.util.EnumSet;
+import java.util.SortedSet;
import org.apache.hadoop.hdfs.protocol.LayoutVersion.Feature;
+import org.apache.hadoop.hdfs.protocol.LayoutVersion.FeatureInfo;
+import org.apache.hadoop.hdfs.protocol.LayoutVersion.LayoutFeature;
+import org.apache.hadoop.hdfs.server.datanode.DataNodeLayoutVersion;
+import org.apache.hadoop.hdfs.server.namenode.NameNodeLayoutVersion;
import org.junit.Test;
/**
@@ -36,7 +40,7 @@ public class TestLayoutVersion {
*/
@Test
public void testFeaturesFromAncestorSupported() {
- for (Feature f : Feature.values()) {
+ for (LayoutFeature f : Feature.values()) {
validateFeatureList(f);
}
}
@@ -46,8 +50,8 @@ public class TestLayoutVersion {
*/
@Test
public void testRelease203() {
- assertTrue(LayoutVersion.supports(Feature.DELEGATION_TOKEN,
- Feature.RESERVED_REL20_203.lv));
+ assertTrue(NameNodeLayoutVersion.supports(LayoutVersion.Feature.DELEGATION_TOKEN,
+ Feature.RESERVED_REL20_203.getInfo().getLayoutVersion()));
}
/**
@@ -55,8 +59,8 @@ public class TestLayoutVersion {
*/
@Test
public void testRelease204() {
- assertTrue(LayoutVersion.supports(Feature.DELEGATION_TOKEN,
- Feature.RESERVED_REL20_204.lv));
+ assertTrue(NameNodeLayoutVersion.supports(LayoutVersion.Feature.DELEGATION_TOKEN,
+ Feature.RESERVED_REL20_204.getInfo().getLayoutVersion()));
}
/**
@@ -64,23 +68,42 @@ public class TestLayoutVersion {
*/
@Test
public void testRelease1_2_0() {
- assertTrue(LayoutVersion.supports(Feature.CONCAT,
- Feature.RESERVED_REL1_2_0.lv));
+ assertTrue(NameNodeLayoutVersion.supports(LayoutVersion.Feature.CONCAT,
+ Feature.RESERVED_REL1_2_0.getInfo().getLayoutVersion()));
+ }
+
+ /**
+ * Test to make sure NameNode.Feature support previous features
+ */
+ @Test
+ public void testNameNodeFeature() {
+ assertTrue(NameNodeLayoutVersion.supports(LayoutVersion.Feature.CACHING,
+ NameNodeLayoutVersion.Feature.ROLLING_UPGRADE_MARKER.getInfo().getLayoutVersion()));
+ }
+
+ /**
+ * Test to make sure DataNode.Feature support previous features
+ */
+ @Test
+ public void testDataNodeFeature() {
+ assertTrue(DataNodeLayoutVersion.supports(LayoutVersion.Feature.CACHING,
+ DataNodeLayoutVersion.Feature.FIRST_LAYOUT.getInfo().getLayoutVersion()));
}
/**
* Given feature {@code f}, ensures the layout version of that feature
* supports all the features supported by it's ancestor.
*/
- private void validateFeatureList(Feature f) {
- int lv = f.lv;
- int ancestorLV = f.ancestorLV;
- EnumSet<Feature> ancestorSet = LayoutVersion.map.get(ancestorLV);
+ private void validateFeatureList(LayoutFeature f) {
+ final FeatureInfo info = f.getInfo();
+ int lv = info.getLayoutVersion();
+ int ancestorLV = info.getAncestorLayoutVersion();
+ SortedSet<LayoutFeature> ancestorSet = NameNodeLayoutVersion.getFeatures(ancestorLV);
assertNotNull(ancestorSet);
- for (Feature feature : ancestorSet) {
+ for (LayoutFeature feature : ancestorSet) {
assertTrue("LV " + lv + " does nto support " + feature
- + " supported by the ancestor LV " + f.ancestorLV,
- LayoutVersion.supports(feature, lv));
+ + " supported by the ancestor LV " + info.getAncestorLayoutVersion(),
+ NameNodeLayoutVersion.supports(feature, lv));
}
}
}
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocolPB/TestPBHelper.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocolPB/TestPBHelper.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocolPB/TestPBHelper.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/protocolPB/TestPBHelper.java Fri Jan 31 03:21:45 2014
@@ -59,6 +59,7 @@ import org.apache.hadoop.hdfs.security.t
import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;
import org.apache.hadoop.hdfs.security.token.block.ExportedBlockKeys;
import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.NamenodeRole;
+import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.NodeType;
import org.apache.hadoop.hdfs.server.common.StorageInfo;
import org.apache.hadoop.hdfs.server.namenode.CheckpointSignature;
import org.apache.hadoop.hdfs.server.protocol.*;
@@ -100,15 +101,15 @@ public class TestPBHelper {
PBHelper.convert(NamenodeRoleProto.NAMENODE));
}
- private static StorageInfo getStorageInfo() {
- return new StorageInfo(1, 2, "cid", 3);
+ private static StorageInfo getStorageInfo(NodeType type) {
+ return new StorageInfo(1, 2, "cid", 3, type);
}
@Test
public void testConvertStoragInfo() {
- StorageInfo info = getStorageInfo();
+ StorageInfo info = getStorageInfo(NodeType.NAME_NODE);
StorageInfoProto infoProto = PBHelper.convert(info);
- StorageInfo info2 = PBHelper.convert(infoProto);
+ StorageInfo info2 = PBHelper.convert(infoProto, NodeType.NAME_NODE);
assertEquals(info.getClusterID(), info2.getClusterID());
assertEquals(info.getCTime(), info2.getCTime());
assertEquals(info.getLayoutVersion(), info2.getLayoutVersion());
@@ -117,7 +118,7 @@ public class TestPBHelper {
@Test
public void testConvertNamenodeRegistration() {
- StorageInfo info = getStorageInfo();
+ StorageInfo info = getStorageInfo(NodeType.NAME_NODE);
NamenodeRegistration reg = new NamenodeRegistration("address:999",
"http:1000", info, NamenodeRole.NAMENODE);
NamenodeRegistrationProto regProto = PBHelper.convert(reg);
@@ -243,8 +244,8 @@ public class TestPBHelper {
@Test
public void testConvertCheckpointSignature() {
- CheckpointSignature s = new CheckpointSignature(getStorageInfo(), "bpid",
- 100, 1);
+ CheckpointSignature s = new CheckpointSignature(
+ getStorageInfo(NodeType.NAME_NODE), "bpid", 100, 1);
CheckpointSignatureProto sProto = PBHelper.convert(s);
CheckpointSignature s1 = PBHelper.convert(sProto);
assertEquals(s.getBlockpoolID(), s1.getBlockpoolID());
@@ -515,7 +516,7 @@ public class TestPBHelper {
ExportedBlockKeys expKeys = new ExportedBlockKeys(true, 9, 10,
getBlockKey(1), keys);
DatanodeRegistration reg = new DatanodeRegistration(dnId,
- new StorageInfo(), expKeys, "3.0.0");
+ new StorageInfo(NodeType.DATA_NODE), expKeys, "3.0.0");
DatanodeRegistrationProto proto = PBHelper.convert(reg);
DatanodeRegistration reg2 = PBHelper.convert(proto);
compare(reg.getStorageInfo(), reg2.getStorageInfo());
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/qjournal/server/TestJournalNode.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/qjournal/server/TestJournalNode.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/qjournal/server/TestJournalNode.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/qjournal/server/TestJournalNode.java Fri Jan 31 03:21:45 2014
@@ -190,7 +190,7 @@ public class TestJournalNode {
byte[] retrievedViaHttp = DFSTestUtil.urlGetBytes(new URL(urlRoot +
"/getJournal?segmentTxId=1&jid=" + journalId));
byte[] expected = Bytes.concat(
- Ints.toByteArray(HdfsConstants.LAYOUT_VERSION),
+ Ints.toByteArray(HdfsConstants.NAMENODE_LAYOUT_VERSION),
(new byte[] { 0, 0, 0, 0 }), // layout flags section
EDITS_DATA);
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestDatanodeRegister.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestDatanodeRegister.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestDatanodeRegister.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestDatanodeRegister.java Fri Jan 31 03:21:45 2014
@@ -67,7 +67,8 @@ public class TestDatanodeRegister {
// Return a a good software version.
doReturn(VersionInfo.getVersion()).when(fakeNsInfo).getSoftwareVersion();
// Return a good layout version for now.
- doReturn(HdfsConstants.LAYOUT_VERSION).when(fakeNsInfo).getLayoutVersion();
+ doReturn(HdfsConstants.DATANODE_LAYOUT_VERSION).when(fakeNsInfo)
+ .getLayoutVersion();
DatanodeProtocolClientSideTranslatorPB fakeDnProt =
mock(DatanodeProtocolClientSideTranslatorPB.class);
@@ -103,20 +104,17 @@ public class TestDatanodeRegister {
@Test
public void testDifferentLayoutVersions() throws Exception {
// We expect no exceptions to be thrown when the layout versions match.
- assertEquals(HdfsConstants.LAYOUT_VERSION,
+ assertEquals(HdfsConstants.NAMENODE_LAYOUT_VERSION,
actor.retrieveNamespaceInfo().getLayoutVersion());
// We expect an exception to be thrown when the NN reports a layout version
// different from that of the DN.
- doReturn(HdfsConstants.LAYOUT_VERSION * 1000).when(fakeNsInfo)
+ doReturn(HdfsConstants.NAMENODE_LAYOUT_VERSION * 1000).when(fakeNsInfo)
.getLayoutVersion();
try {
actor.retrieveNamespaceInfo();
- fail("Should have failed to retrieve NS info from DN with bad layout version");
- } catch (IncorrectVersionException ive) {
- GenericTestUtils.assertExceptionContains(
- "Unexpected version of namenode", ive);
- LOG.info("Got expected exception", ive);
+ } catch (IOException e) {
+ fail("Should not fail to retrieve NS info from DN with different layout version");
}
}
}
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCheckpoint.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCheckpoint.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCheckpoint.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestCheckpoint.java Fri Jan 31 03:21:45 2014
@@ -61,6 +61,7 @@ import org.apache.hadoop.hdfs.HdfsConfig
import org.apache.hadoop.hdfs.MiniDFSCluster;
import org.apache.hadoop.hdfs.MiniDFSNNTopology;
import org.apache.hadoop.hdfs.protocol.HdfsConstants.SafeModeAction;
+import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.NodeType;
import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.StartupOption;
import org.apache.hadoop.hdfs.server.common.Storage;
import org.apache.hadoop.hdfs.server.common.Storage.StorageDirectory;
@@ -1975,7 +1976,7 @@ public class TestCheckpoint {
.when(dstImage).getFiles(
Mockito.<NameNodeDirType>anyObject(), Mockito.anyString());
- Mockito.doReturn(new StorageInfo(1, 1, "X", 1).toColonSeparatedString())
+ Mockito.doReturn(new StorageInfo(1, 1, "X", 1, NodeType.NAME_NODE).toColonSeparatedString())
.when(dstImage).toColonSeparatedString();
try {
Modified: hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestStartupOptionUpgrade.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestStartupOptionUpgrade.java?rev=1563041&r1=1563040&r2=1563041&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestStartupOptionUpgrade.java (original)
+++ hadoop/common/branches/HDFS-5535/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestStartupOptionUpgrade.java Fri Jan 31 03:21:45 2014
@@ -67,7 +67,7 @@ public class TestStartupOptionUpgrade {
*/
@Test
public void testStartupOptUpgradeFrom204() throws Exception {
- layoutVersion = Feature.RESERVED_REL20_204.getLayoutVersion();
+ layoutVersion = Feature.RESERVED_REL20_204.getInfo().getLayoutVersion();
storage.processStartupOptionsForUpgrade(startOpt, layoutVersion);
assertTrue("Clusterid should start with CID", storage.getClusterID()
.startsWith("CID"));
@@ -83,7 +83,7 @@ public class TestStartupOptionUpgrade {
@Test
public void testStartupOptUpgradeFrom22WithCID() throws Exception {
startOpt.setClusterId("cid");
- layoutVersion = Feature.RESERVED_REL22.getLayoutVersion();
+ layoutVersion = Feature.RESERVED_REL22.getInfo().getLayoutVersion();
storage.processStartupOptionsForUpgrade(startOpt, layoutVersion);
assertEquals("Clusterid should match with the given clusterid",
"cid", storage.getClusterID());
@@ -101,7 +101,7 @@ public class TestStartupOptionUpgrade {
throws Exception {
// Test assumes clusterid already exists, set the clusterid
storage.setClusterID("currentcid");
- layoutVersion = Feature.FEDERATION.getLayoutVersion();
+ layoutVersion = Feature.FEDERATION.getInfo().getLayoutVersion();
storage.processStartupOptionsForUpgrade(startOpt, layoutVersion);
assertEquals("Clusterid should match with the existing one",
"currentcid", storage.getClusterID());
@@ -119,7 +119,7 @@ public class TestStartupOptionUpgrade {
throws Exception {
startOpt.setClusterId("wrong-cid");
storage.setClusterID("currentcid");
- layoutVersion = Feature.FEDERATION.getLayoutVersion();
+ layoutVersion = Feature.FEDERATION.getInfo().getLayoutVersion();
storage.processStartupOptionsForUpgrade(startOpt, layoutVersion);
assertEquals("Clusterid should match with the existing one",
"currentcid", storage.getClusterID());
@@ -137,7 +137,7 @@ public class TestStartupOptionUpgrade {
throws Exception {
startOpt.setClusterId("currentcid");
storage.setClusterID("currentcid");
- layoutVersion = Feature.FEDERATION.getLayoutVersion();
+ layoutVersion = Feature.FEDERATION.getInfo().getLayoutVersion();
storage.processStartupOptionsForUpgrade(startOpt, layoutVersion);
assertEquals("Clusterid should match with the existing one",
"currentcid", storage.getClusterID());