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 su...@apache.org on 2011/05/28 01:37:31 UTC
svn commit: r1128530 - in /hadoop/hdfs/trunk/src:
java/org/apache/hadoop/hdfs/protocol/
java/org/apache/hadoop/hdfs/server/common/
java/org/apache/hadoop/hdfs/server/datanode/
java/org/apache/hadoop/hdfs/server/namenode/
java/org/apache/hadoop/hdfs/too...
Author: suresh
Date: Fri May 27 23:37:30 2011
New Revision: 1128530
URL: http://svn.apache.org/viewvc?rev=1128530&view=rev
Log:
Reverting pervious commit r1128527
Removed:
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/protocol/LayoutVersion.java
hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/hadoop-22-dfs-dir.tgz
hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/protocol/TestLayoutVersion.java
Modified:
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/protocol/FSConstants.java
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/common/Storage.java
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/datanode/BlockPoolSliceStorage.java
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/datanode/DataStorage.java
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/BackupImage.java
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogLoader.java
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSImage.java
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSImageFormat.java
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/NNStorage.java
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/tools/offlineEditsViewer/EditsLoaderCurrent.java
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/ImageLoaderCurrent.java
hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/OfflineImageViewer.java
hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/TestDFSUpgradeFromImage.java
hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/UpgradeUtilities.java
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/protocol/FSConstants.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/protocol/FSConstants.java?rev=1128530&r1=1128529&r2=1128530&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/protocol/FSConstants.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/protocol/FSConstants.java Fri May 27 23:37:30 2011
@@ -84,9 +84,11 @@ public interface FSConstants {
*/
public static final String HDFS_URI_SCHEME = "hdfs";
- /**
- * Please see {@link LayoutVersion} on adding new layout version.
- */
- public static final int LAYOUT_VERSION =
- LayoutVersion.getCurrentLayoutVersion();
+ // 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 = -35;
+ // Current version:
+ // -35: Adding support for block pools and multiple namenodes
}
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/common/Storage.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/common/Storage.java?rev=1128530&r1=1128529&r2=1128530&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/common/Storage.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/common/Storage.java Fri May 27 23:37:30 2011
@@ -33,8 +33,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.hdfs.protocol.FSConstants;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion.Feature;
import org.apache.hadoop.hdfs.server.common.HdfsConstants.NodeType;
import org.apache.hadoop.hdfs.server.common.HdfsConstants.StartupOption;
import org.apache.hadoop.fs.FileUtil;
@@ -77,6 +75,12 @@ public abstract class Storage extends St
* any upgrade code that uses this constant should also be removed. */
public static final int PRE_GENERATIONSTAMP_LAYOUT_VERSION = -13;
+ // last layout version that did not support persistent rbw replicas
+ public static final int PRE_RBW_LAYOUT_VERSION = -19;
+
+ // last layout version that is before federation
+ public static final int LAST_PRE_FEDERATION_LAYOUT_VERSION = -30;
+
/** Layout versions of 0.20.203 release */
public static final int[] LAYOUT_VERSIONS_203 = {-19, -31};
@@ -777,8 +781,8 @@ public abstract class Storage extends St
props.setProperty("layoutVersion", String.valueOf(layoutVersion));
props.setProperty("storageType", storageType.toString());
props.setProperty("namespaceID", String.valueOf(namespaceID));
- // Set clusterID in version with federation support
- if (LayoutVersion.supports(Feature.FEDERATION, layoutVersion)) {
+ // Set clusterID in version LAST_PRE_FEDERATION_LAYOUT_VERSION or before
+ if (layoutVersion < LAST_PRE_FEDERATION_LAYOUT_VERSION) {
props.setProperty("clusterID", clusterID);
}
props.setProperty("cTime", String.valueOf(cTime));
@@ -898,8 +902,8 @@ public abstract class Storage extends St
/** Validate and set clusterId from {@link Properties}*/
protected void setClusterId(Properties props, int layoutVersion,
StorageDirectory sd) throws InconsistentFSStateException {
- // Set cluster ID in version that supports federation
- if (LayoutVersion.supports(Feature.FEDERATION, layoutVersion)) {
+ // No Cluster ID in version LAST_PRE_FEDERATION_LAYOUT_VERSION or before
+ if (layoutVersion < Storage.LAST_PRE_FEDERATION_LAYOUT_VERSION) {
String cid = getProperty(props, sd, "clusterID");
if (!(clusterID.equals("") || cid.equals("") || clusterID.equals(cid))) {
throw new InconsistentFSStateException(sd.getRoot(),
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/datanode/BlockPoolSliceStorage.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/datanode/BlockPoolSliceStorage.java?rev=1128530&r1=1128529&r2=1128530&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/datanode/BlockPoolSliceStorage.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/datanode/BlockPoolSliceStorage.java Fri May 27 23:37:30 2011
@@ -30,8 +30,6 @@ import java.util.regex.Pattern;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.fs.HardLink;
import org.apache.hadoop.hdfs.protocol.FSConstants;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion.Feature;
import org.apache.hadoop.hdfs.server.common.InconsistentFSStateException;
import org.apache.hadoop.hdfs.server.common.Storage;
import org.apache.hadoop.hdfs.server.common.StorageInfo;
@@ -293,7 +291,7 @@ public class BlockPoolSliceStorage exten
*/
void doUpgrade(StorageDirectory bpSd, NamespaceInfo nsInfo) throws IOException {
// Upgrading is applicable only to release with federation or after
- if (!LayoutVersion.supports(Feature.FEDERATION, layoutVersion)) {
+ if (!(this.getLayoutVersion() < LAST_PRE_FEDERATION_LAYOUT_VERSION)) {
return;
}
LOG.info("Upgrading block pool storage directory " + bpSd.getRoot()
@@ -348,8 +346,8 @@ public class BlockPoolSliceStorage exten
* @throws IOException if the directory is not empty or it can not be removed
*/
private void cleanupDetachDir(File detachDir) throws IOException {
- if (!LayoutVersion.supports(Feature.APPEND_RBW_DIR, layoutVersion)
- && detachDir.exists() && detachDir.isDirectory()) {
+ if (layoutVersion >= PRE_RBW_LAYOUT_VERSION && detachDir.exists()
+ && detachDir.isDirectory()) {
if (detachDir.list().length != 0) {
throw new IOException("Detached directory " + detachDir
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java?rev=1128530&r1=1128529&r2=1128530&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java Fri May 27 23:37:30 2011
@@ -37,6 +37,7 @@ import java.net.URI;
import java.net.UnknownHostException;
import java.nio.channels.ServerSocketChannel;
import java.nio.channels.SocketChannel;
+import java.security.NoSuchAlgorithmException;
import java.security.PrivilegedExceptionAction;
import java.security.SecureRandom;
import java.util.AbstractList;
@@ -1432,11 +1433,11 @@ public class DataNode extends Configured
}
int getPort() {
- return selfAddr == null ? -1 : selfAddr.getPort();
+ return selfAddr.getPort();
}
String getStorageId() {
- return storage == null ? null : storage.getStorageID();
+ return storage.getStorageID();
}
/**
@@ -1449,7 +1450,7 @@ public class DataNode extends Configured
}
public int getIpcPort() {
- return ipcServer == null ? -1 : ipcServer.getListenerAddress().getPort();
+ return ipcServer.getListenerAddress().getPort();
}
/**
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/datanode/DataStorage.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/datanode/DataStorage.java?rev=1128530&r1=1128529&r2=1128530&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/datanode/DataStorage.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/datanode/DataStorage.java Fri May 27 23:37:30 2011
@@ -43,8 +43,6 @@ import org.apache.hadoop.fs.permission.F
import org.apache.hadoop.hdfs.DFSConfigKeys;
import org.apache.hadoop.hdfs.HdfsConfiguration;
import org.apache.hadoop.hdfs.protocol.FSConstants;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion.Feature;
import org.apache.hadoop.hdfs.server.common.GenerationStamp;
import org.apache.hadoop.hdfs.server.common.InconsistentFSStateException;
import org.apache.hadoop.hdfs.server.common.Storage;
@@ -289,8 +287,8 @@ public class DataStorage extends Storage
props.setProperty("cTime", String.valueOf(cTime));
props.setProperty("layoutVersion", String.valueOf(layoutVersion));
props.setProperty("storageID", getStorageID());
- // Set NamespaceID in version before federation
- if (!LayoutVersion.supports(Feature.FEDERATION, layoutVersion)) {
+ // Set NamespaceID in version LAST_PRE_FEDERATION_LAYOUT_VERSION or before
+ if (layoutVersion >= LAST_PRE_FEDERATION_LAYOUT_VERSION) {
props.setProperty("namespaceID", String.valueOf(namespaceID));
}
}
@@ -307,8 +305,8 @@ public class DataStorage extends Storage
setStorageType(props, sd);
setClusterId(props, layoutVersion, sd);
- // Read NamespaceID in version before federation
- if (!LayoutVersion.supports(Feature.FEDERATION, layoutVersion)) {
+ // Read NamespaceID in version LAST_PRE_FEDERATION_LAYOUT_VERSION or before
+ if (layoutVersion >= LAST_PRE_FEDERATION_LAYOUT_VERSION) {
setNamespaceID(props, sd);
}
@@ -375,10 +373,8 @@ public class DataStorage extends Storage
assert this.layoutVersion >= FSConstants.LAYOUT_VERSION :
"Future version is not allowed";
- boolean federationSupported =
- LayoutVersion.supports(Feature.FEDERATION, layoutVersion);
// For pre-federation version - validate the namespaceID
- if (!federationSupported &&
+ if (layoutVersion >= Storage.LAST_PRE_FEDERATION_LAYOUT_VERSION &&
getNamespaceID() != nsInfo.getNamespaceID()) {
throw new IOException("Incompatible namespaceIDs in "
+ sd.getRoot().getCanonicalPath() + ": namenode namespaceID = "
@@ -386,8 +382,8 @@ public class DataStorage extends Storage
+ getNamespaceID());
}
- // For version that supports federation, validate clusterID
- if (federationSupported
+ // For post federation version, validate clusterID
+ if (layoutVersion < Storage.LAST_PRE_FEDERATION_LAYOUT_VERSION
&& !getClusterID().equals(nsInfo.getClusterID())) {
throw new IOException("Incompatible clusterIDs in "
+ sd.getRoot().getCanonicalPath() + ": namenode clusterID = "
@@ -439,7 +435,7 @@ public class DataStorage extends Storage
* @throws IOException on error
*/
void doUpgrade(StorageDirectory sd, NamespaceInfo nsInfo) throws IOException {
- if (LayoutVersion.supports(Feature.FEDERATION, layoutVersion)) {
+ if (layoutVersion < Storage.LAST_PRE_FEDERATION_LAYOUT_VERSION) {
clusterID = nsInfo.getClusterID();
layoutVersion = nsInfo.getLayoutVersion();
sd.write();
@@ -497,7 +493,7 @@ public class DataStorage extends Storage
* @throws IOException if the directory is not empty or it can not be removed
*/
private void cleanupDetachDir(File detachDir) throws IOException {
- if (!LayoutVersion.supports(Feature.APPEND_RBW_DIR, layoutVersion) &&
+ if (layoutVersion >= PRE_RBW_LAYOUT_VERSION &&
detachDir.exists() && detachDir.isDirectory() ) {
if (detachDir.list().length != 0 ) {
@@ -630,7 +626,7 @@ public class DataStorage extends Storage
HardLink hardLink = new HardLink();
// do the link
int diskLayoutVersion = this.getLayoutVersion();
- if (LayoutVersion.supports(Feature.APPEND_RBW_DIR, diskLayoutVersion)) {
+ if (diskLayoutVersion < PRE_RBW_LAYOUT_VERSION) { // RBW version
// hardlink finalized blocks in tmpDir/finalized
linkBlocks(new File(fromDir, STORAGE_DIR_FINALIZED),
new File(toDir, STORAGE_DIR_FINALIZED), diskLayoutVersion, hardLink);
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/BackupImage.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/BackupImage.java?rev=1128530&r1=1128529&r2=1128530&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/BackupImage.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/BackupImage.java Fri May 27 23:37:30 2011
@@ -28,8 +28,6 @@ import java.util.zip.CheckedInputStream;
import java.util.zip.Checksum;
import org.apache.hadoop.classification.InterfaceAudience;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion.Feature;
import org.apache.hadoop.hdfs.server.common.HdfsConstants;
import org.apache.hadoop.hdfs.server.common.Storage.StorageDirectory;
import org.apache.hadoop.hdfs.server.common.Storage.StorageState;
@@ -235,7 +233,7 @@ public class BackupImage extends FSImage
BufferedInputStream bin = new BufferedInputStream(backupInputStream);
DataInputStream in = new DataInputStream(bin);
Checksum checksum = null;
- if (LayoutVersion.supports(Feature.EDITS_CHESKUM, logVersion)) {
+ if (logVersion <= -28) { // support fsedits checksum
checksum = FSEditLog.getChecksum();
in = new DataInputStream(new CheckedInputStream(bin, checksum));
}
@@ -363,7 +361,7 @@ public class BackupImage extends FSImage
FSEditLogLoader logLoader = new FSEditLogLoader(namesystem);
int logVersion = logLoader.readLogVersion(in);
Checksum checksum = null;
- if (LayoutVersion.supports(Feature.EDITS_CHESKUM, logVersion)) {
+ if (logVersion <= -28) { // support fsedits checksum
checksum = FSEditLog.getChecksum();
in = new DataInputStream(new CheckedInputStream(bin, checksum));
}
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogLoader.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogLoader.java?rev=1128530&r1=1128529&r2=1128530&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogLoader.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogLoader.java Fri May 27 23:37:30 2011
@@ -37,8 +37,6 @@ import org.apache.hadoop.hdfs.protocol.B
import org.apache.hadoop.hdfs.protocol.DatanodeID;
import org.apache.hadoop.hdfs.protocol.FSConstants;
import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;
-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 static org.apache.hadoop.hdfs.server.common.Util.now;
import org.apache.hadoop.hdfs.server.common.GenerationStamp;
@@ -113,7 +111,7 @@ public class FSEditLogLoader {
try {
logVersion = readLogVersion(in);
Checksum checksum = null;
- if (LayoutVersion.supports(Feature.EDITS_CHESKUM, logVersion)) {
+ if (logVersion <= -28) { // support fsedits checksum
checksum = FSEditLog.getChecksum();
in = new DataInputStream(new CheckedInputStream(bin, checksum));
}
@@ -193,7 +191,7 @@ public class FSEditLogLoader {
path = FSImageSerialization.readString(in);
short replication = fsNamesys.adjustReplication(readShort(in));
mtime = readLong(in);
- if (LayoutVersion.supports(Feature.FILE_ACCESS_TIME, logVersion)) {
+ if (logVersion <= -17) {
atime = readLong(in);
}
if (logVersion < -7) {
@@ -279,6 +277,10 @@ public class FSEditLogLoader {
break;
}
case OP_CONCAT_DELETE: {
+ if (logVersion > -22) {
+ throw new IOException("Unexpected opCode " + opCode
+ + " for version " + logVersion);
+ }
numOpConcatDelete++;
int length = in.readInt();
if (length < 3) { // trg, srcs.., timestam
@@ -337,7 +339,7 @@ public class FSEditLogLoader {
// The disk format stores atimes for directories as well.
// However, currently this is not being updated/used because of
// performance reasons.
- if (LayoutVersion.supports(Feature.FILE_ACCESS_TIME, logVersion)) {
+ if (logVersion <= -17) {
atime = readLong(in);
}
@@ -368,6 +370,9 @@ public class FSEditLogLoader {
}
case OP_SET_PERMISSIONS: {
numOpSetPerm++;
+ if (logVersion > -11)
+ throw new IOException("Unexpected opCode " + opCode
+ + " for version " + logVersion);
fsDir.unprotectedSetPermission(
FSImageSerialization.readString(in), FsPermission.read(in));
break;
@@ -383,12 +388,20 @@ public class FSEditLogLoader {
break;
}
case OP_SET_NS_QUOTA: {
+ if (logVersion > -16) {
+ throw new IOException("Unexpected opCode " + opCode
+ + " for version " + logVersion);
+ }
fsDir.unprotectedSetQuota(FSImageSerialization.readString(in),
readLongWritable(in),
FSConstants.QUOTA_DONT_SET);
break;
}
case OP_CLEAR_NS_QUOTA: {
+ if (logVersion > -16) {
+ throw new IOException("Unexpected opCode " + opCode
+ + " for version " + logVersion);
+ }
fsDir.unprotectedSetQuota(FSImageSerialization.readString(in),
FSConstants.QUOTA_RESET,
FSConstants.QUOTA_DONT_SET);
@@ -431,6 +444,10 @@ public class FSEditLogLoader {
break;
}
case OP_RENAME: {
+ if (logVersion > -21) {
+ throw new IOException("Unexpected opCode " + opCode
+ + " for version " + logVersion);
+ }
numOpRename++;
int length = in.readInt();
if (length != 3) {
@@ -447,6 +464,10 @@ public class FSEditLogLoader {
break;
}
case OP_GET_DELEGATION_TOKEN: {
+ if (logVersion > -24) {
+ throw new IOException("Unexpected opCode " + opCode
+ + " for version " + logVersion);
+ }
numOpGetDelegationToken++;
DelegationTokenIdentifier delegationTokenId =
new DelegationTokenIdentifier();
@@ -457,6 +478,10 @@ public class FSEditLogLoader {
break;
}
case OP_RENEW_DELEGATION_TOKEN: {
+ if (logVersion > -24) {
+ throw new IOException("Unexpected opCode " + opCode
+ + " for version " + logVersion);
+ }
numOpRenewDelegationToken++;
DelegationTokenIdentifier delegationTokenId =
new DelegationTokenIdentifier();
@@ -467,6 +492,10 @@ public class FSEditLogLoader {
break;
}
case OP_CANCEL_DELEGATION_TOKEN: {
+ if (logVersion > -24) {
+ throw new IOException("Unexpected opCode " + opCode
+ + " for version " + logVersion);
+ }
numOpCancelDelegationToken++;
DelegationTokenIdentifier delegationTokenId =
new DelegationTokenIdentifier();
@@ -476,6 +505,10 @@ public class FSEditLogLoader {
break;
}
case OP_UPDATE_MASTER_KEY: {
+ if (logVersion > -24) {
+ throw new IOException("Unexpected opCode " + opCode
+ + " for version " + logVersion);
+ }
numOpUpdateMasterKey++;
DelegationKey delegationKey = new DelegationKey();
delegationKey.readFields(in);
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSImage.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSImage.java?rev=1128530&r1=1128529&r2=1128530&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSImage.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSImage.java Fri May 27 23:37:30 2011
@@ -40,8 +40,6 @@ import org.apache.hadoop.classification.
import org.apache.hadoop.classification.InterfaceStability;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hdfs.protocol.FSConstants;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion.Feature;
import org.apache.hadoop.hdfs.server.common.InconsistentFSStateException;
import org.apache.hadoop.hdfs.server.common.Storage;
import org.apache.hadoop.hdfs.server.common.Storage.StorageDirectory;
@@ -253,13 +251,12 @@ public class FSImage implements NNStorag
if (!isFormatted && startOpt != StartupOption.ROLLBACK
&& startOpt != StartupOption.IMPORT)
throw new IOException("NameNode is not formatted.");
- int layoutVersion = storage.getLayoutVersion();
- if (layoutVersion < Storage.LAST_PRE_UPGRADE_LAYOUT_VERSION) {
+ if (storage.getLayoutVersion() < Storage.LAST_PRE_UPGRADE_LAYOUT_VERSION) {
NNStorage.checkVersionUpgradable(storage.getLayoutVersion());
}
if (startOpt != StartupOption.UPGRADE
- && layoutVersion < Storage.LAST_PRE_UPGRADE_LAYOUT_VERSION
- && layoutVersion != FSConstants.LAYOUT_VERSION) {
+ && storage.getLayoutVersion() < Storage.LAST_PRE_UPGRADE_LAYOUT_VERSION
+ && storage.getLayoutVersion() != FSConstants.LAYOUT_VERSION) {
throw new IOException(
"\nFile system image contains an old layout version "
+ storage.getLayoutVersion() + ".\nAn upgrade to version "
@@ -268,12 +265,12 @@ public class FSImage implements NNStorag
}
// Upgrade to federation requires -upgrade -clusterid <clusterID> option
- if (startOpt == StartupOption.UPGRADE &&
- !LayoutVersion.supports(Feature.FEDERATION, layoutVersion)) {
+ if (startOpt == StartupOption.UPGRADE
+ && storage.getLayoutVersion() > Storage.LAST_PRE_FEDERATION_LAYOUT_VERSION) {
if (startOpt.getClusterId() == null) {
throw new IOException(
"\nFile system image contains an old layout version "
- + layoutVersion + ".\nAn upgrade to version "
+ + storage.getLayoutVersion() + ".\nAn upgrade to version "
+ FSConstants.LAYOUT_VERSION
+ " is required.\nPlease restart NameNode with "
+ "-upgrade -clusterid <clusterID> option.");
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSImageFormat.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSImageFormat.java?rev=1128530&r1=1128529&r2=1128530&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSImageFormat.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/FSImageFormat.java Fri May 27 23:37:30 2011
@@ -40,8 +40,6 @@ import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.permission.PermissionStatus;
import org.apache.hadoop.hdfs.DFSUtil;
import org.apache.hadoop.hdfs.protocol.FSConstants;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion.Feature;
import org.apache.hadoop.hdfs.server.common.GenerationStamp;
import org.apache.hadoop.io.MD5Hash;
import org.apache.hadoop.io.Text;
@@ -171,7 +169,7 @@ class FSImageFormat {
// read compression related info
FSImageCompression compression;
- if (LayoutVersion.supports(Feature.FSIMAGE_COMPRESSION, imgVersion)) {
+ if (imgVersion <= -25) { // -25: 1st version providing compression option
compression = FSImageCompression.readCompressionHeader(conf, in);
} else {
compression = FSImageCompression.createNoopCompression();
@@ -182,8 +180,7 @@ class FSImageFormat {
// load all inodes
LOG.info("Number of files = " + numFiles);
- if (LayoutVersion.supports(Feature.FSIMAGE_NAME_OPTIMIZATION,
- imgVersion)) {
+ if (imgVersion <= -30) {
loadLocalNameINodes(numFiles, in);
} else {
loadFullNameINodes(numFiles, in);
@@ -232,8 +229,7 @@ class FSImageFormat {
*/
private void loadLocalNameINodes(long numFiles, DataInputStream in)
throws IOException {
- assert LayoutVersion.supports(Feature.FSIMAGE_NAME_OPTIMIZATION,
- imgVersion);
+ assert imgVersion <= -30; // -30: store only local name in image
assert numFiles > 0;
// load root
@@ -331,7 +327,7 @@ class FSImageFormat {
short replication = in.readShort();
replication = namesystem.adjustReplication(replication);
modificationTime = in.readLong();
- if (LayoutVersion.supports(Feature.FILE_ACCESS_TIME, imgVersion)) {
+ if (imgVersion <= -17) {
atime = in.readLong();
}
if (imgVersion <= -8) {
@@ -370,19 +366,17 @@ class FSImageFormat {
// get quota only when the node is a directory
long nsQuota = -1L;
- if (LayoutVersion.supports(Feature.NAMESPACE_QUOTA, imgVersion)
- && blocks == null && numBlocks == -1) {
+ if (imgVersion <= -16 && blocks == null && numBlocks == -1) {
nsQuota = in.readLong();
}
long dsQuota = -1L;
- if (LayoutVersion.supports(Feature.DISKSPACE_QUOTA, imgVersion)
- && blocks == null && numBlocks == -1) {
+ if (imgVersion <= -18 && blocks == null && numBlocks == -1) {
dsQuota = in.readLong();
}
// Read the symlink only when the node is a symlink
String symlink = "";
- if (numBlocks == -2) {
+ if (imgVersion <= -23 && numBlocks == -2) {
symlink = Text.readString(in);
}
@@ -437,7 +431,7 @@ class FSImageFormat {
}
private void loadSecretManagerState(DataInputStream in) throws IOException {
- if (!LayoutVersion.supports(Feature.DELEGATION_TOKEN, imgVersion)) {
+ if (imgVersion > -23) {
//SecretManagerState is not available.
//This must not happen if security is turned on.
return;
@@ -447,7 +441,7 @@ class FSImageFormat {
private long readNumFiles(DataInputStream in) throws IOException {
- if (LayoutVersion.supports(Feature.NAMESPACE_QUOTA, imgVersion)) {
+ if (imgVersion <= -16) {
return in.readLong();
} else {
return in.readInt();
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/NNStorage.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/NNStorage.java?rev=1128530&r1=1128529&r2=1128530&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/NNStorage.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/server/namenode/NNStorage.java Fri May 27 23:37:30 2011
@@ -44,8 +44,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.hdfs.protocol.FSConstants;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion.Feature;
import org.apache.hadoop.hdfs.server.common.Storage;
import org.apache.hadoop.hdfs.server.common.StorageInfo;
import org.apache.hadoop.hdfs.server.common.UpgradeManager;
@@ -198,8 +196,8 @@ public class NNStorage extends Storage i
RandomAccessFile oldFile = new RandomAccessFile(oldF, "rws");
try {
oldFile.seek(0);
- int oldVersion = oldFile.readInt();
- if (oldVersion < LAST_PRE_UPGRADE_LAYOUT_VERSION)
+ int odlVersion = oldFile.readInt();
+ if (odlVersion < LAST_PRE_UPGRADE_LAYOUT_VERSION)
return false;
} finally {
oldFile.close();
@@ -676,8 +674,8 @@ public class NNStorage extends Storage i
+ sd.getRoot() + " is not formatted.");
}
- // Set Block pool ID in version with federation support
- if (LayoutVersion.supports(Feature.FEDERATION, layoutVersion)) {
+ // No Block pool ID in version LAST_PRE_FEDERATION_LAYOUT_VERSION or before
+ if (layoutVersion < LAST_PRE_FEDERATION_LAYOUT_VERSION) {
String sbpid = props.getProperty("blockpoolID");
setBlockPoolID(sd.getRoot(), sbpid);
}
@@ -690,7 +688,7 @@ public class NNStorage extends Storage i
sDUV == null? getLayoutVersion() : Integer.parseInt(sDUV));
String sMd5 = props.getProperty(MESSAGE_DIGEST_PROPERTY);
- if (LayoutVersion.supports(Feature.FSIMAGE_CHECKSUM, layoutVersion)) {
+ if (layoutVersion <= -26) {
if (sMd5 == null) {
throw new InconsistentFSStateException(sd.getRoot(),
"file " + STORAGE_FILE_VERSION
@@ -721,8 +719,8 @@ public class NNStorage extends Storage i
StorageDirectory sd
) throws IOException {
super.setFields(props, sd);
- // Set blockpoolID in version with federation support
- if (LayoutVersion.supports(Feature.FEDERATION, layoutVersion)) {
+ // Set blockpoolID in version LAST_PRE_FEDERATION_LAYOUT_VERSION or before
+ if (layoutVersion < LAST_PRE_FEDERATION_LAYOUT_VERSION) {
props.setProperty("blockpoolID", blockpoolID);
}
boolean uState = getDistributedUpgradeState();
@@ -1021,7 +1019,7 @@ public class NNStorage extends Storage i
throw new InconsistentFSStateException(storage,
"Unexepcted blockpoolID " + bpid + " . Expected " + blockpoolID);
}
- setBlockPoolID(bpid);
+ blockpoolID = bpid;
}
public String getBlockPoolID() {
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/tools/offlineEditsViewer/EditsLoaderCurrent.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/tools/offlineEditsViewer/EditsLoaderCurrent.java?rev=1128530&r1=1128529&r2=1128530&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/tools/offlineEditsViewer/EditsLoaderCurrent.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/tools/offlineEditsViewer/EditsLoaderCurrent.java Fri May 27 23:37:30 2011
@@ -21,8 +21,6 @@ import java.io.IOException;
import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.classification.InterfaceStability;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion.Feature;
import org.apache.hadoop.hdfs.server.namenode.FSEditLogOpCodes;
import static org.apache.hadoop.hdfs.tools.offlineEditsViewer.Tokenizer.ByteToken;
@@ -223,6 +221,11 @@ class EditsLoaderCurrent implements Edit
* Visit OP_RENAME
*/
private void visit_OP_RENAME() throws IOException {
+ if(editsVersion > -21) {
+ throw new IOException("Unexpected op code " + FSEditLogOpCodes.OP_RENAME
+ + " for edit log version " + editsVersion
+ + " (op code 15 only expected for 21 and later)");
+ }
v.visitInt( EditsElement.LENGTH);
v.visitStringUTF8( EditsElement.SOURCE);
v.visitStringUTF8( EditsElement.DESTINATION);
@@ -234,6 +237,12 @@ class EditsLoaderCurrent implements Edit
* Visit OP_CONCAT_DELETE
*/
private void visit_OP_CONCAT_DELETE() throws IOException {
+ if(editsVersion > -22) {
+ throw new IOException("Unexpected op code "
+ + FSEditLogOpCodes.OP_CONCAT_DELETE
+ + " for edit log version " + editsVersion
+ + " (op code 16 only expected for 22 and later)");
+ }
IntToken lengthToken = v.visitInt(EditsElement.LENGTH);
v.visitStringUTF8(EditsElement.CONCAT_TARGET);
// all except of CONCAT_TARGET and TIMESTAMP
@@ -267,6 +276,12 @@ class EditsLoaderCurrent implements Edit
* Visit OP_GET_DELEGATION_TOKEN
*/
private void visit_OP_GET_DELEGATION_TOKEN() throws IOException {
+ if(editsVersion > -24) {
+ throw new IOException("Unexpected op code "
+ + FSEditLogOpCodes.OP_GET_DELEGATION_TOKEN
+ + " for edit log version " + editsVersion
+ + " (op code 18 only expected for 24 and later)");
+ }
v.visitByte( EditsElement.T_VERSION);
v.visitStringText( EditsElement.T_OWNER);
v.visitStringText( EditsElement.T_RENEWER);
@@ -283,6 +298,13 @@ class EditsLoaderCurrent implements Edit
*/
private void visit_OP_RENEW_DELEGATION_TOKEN()
throws IOException {
+
+ if(editsVersion > -24) {
+ throw new IOException("Unexpected op code "
+ + FSEditLogOpCodes.OP_RENEW_DELEGATION_TOKEN
+ + " for edit log version " + editsVersion
+ + " (op code 19 only expected for 24 and later)");
+ }
v.visitByte( EditsElement.T_VERSION);
v.visitStringText( EditsElement.T_OWNER);
v.visitStringText( EditsElement.T_RENEWER);
@@ -299,6 +321,13 @@ class EditsLoaderCurrent implements Edit
*/
private void visit_OP_CANCEL_DELEGATION_TOKEN()
throws IOException {
+
+ if(editsVersion > -24) {
+ throw new IOException("Unexpected op code "
+ + FSEditLogOpCodes.OP_CANCEL_DELEGATION_TOKEN
+ + " for edit log version " + editsVersion
+ + " (op code 20 only expected for 24 and later)");
+ }
v.visitByte( EditsElement.T_VERSION);
v.visitStringText( EditsElement.T_OWNER);
v.visitStringText( EditsElement.T_RENEWER);
@@ -314,6 +343,13 @@ class EditsLoaderCurrent implements Edit
*/
private void visit_OP_UPDATE_MASTER_KEY()
throws IOException {
+
+ if(editsVersion > -24) {
+ throw new IOException("Unexpected op code "
+ + FSEditLogOpCodes.OP_UPDATE_MASTER_KEY
+ + " for edit log version " + editsVersion
+ + "(op code 21 only expected for 24 and later)");
+ }
v.visitVInt( EditsElement.KEY_ID);
v.visitVLong( EditsElement.KEY_EXPIRY_DATE);
VIntToken blobLengthToken = v.visitVInt(EditsElement.KEY_LENGTH);
@@ -418,8 +454,7 @@ class EditsLoaderCurrent implements Edit
v.leaveEnclosingElement(); // DATA
- if (editsOpCode != FSEditLogOpCodes.OP_INVALID &&
- LayoutVersion.supports(Feature.EDITS_CHESKUM, editsVersion)) {
+ if (editsOpCode != FSEditLogOpCodes.OP_INVALID && editsVersion <= -28) {
v.visitInt(EditsElement.CHECKSUM);
}
v.leaveEnclosingElement(); // RECORD
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/ImageLoaderCurrent.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/ImageLoaderCurrent.java?rev=1128530&r1=1128529&r2=1128530&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/ImageLoaderCurrent.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/ImageLoaderCurrent.java Fri May 27 23:37:30 2011
@@ -26,8 +26,6 @@ import java.util.Date;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.permission.FsPermission;
import org.apache.hadoop.hdfs.protocol.DatanodeInfo.AdminStates;
-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.tools.offlineImageViewer.ImageVisitor.ImageElement;
@@ -157,7 +155,7 @@ class ImageLoaderCurrent implements Imag
v.visit(ImageElement.GENERATION_STAMP, in.readLong());
- if (LayoutVersion.supports(Feature.FSIMAGE_COMPRESSION, imageVersion)) {
+ if (imageVersion <= -25) {
boolean isCompressed = in.readBoolean();
v.visit(ImageElement.IS_COMPRESSED, imageVersion);
if (isCompressed) {
@@ -177,7 +175,7 @@ class ImageLoaderCurrent implements Imag
processINodesUC(in, v, skipBlocks);
- if (LayoutVersion.supports(Feature.DELEGATION_TOKEN, imageVersion)) {
+ if (imageVersion <= -24) {
processDelegationTokens(in, v);
}
@@ -336,7 +334,7 @@ class ImageLoaderCurrent implements Imag
v.visitEnclosingElement(ImageElement.INODES,
ImageElement.NUM_INODES, numInodes);
- if (LayoutVersion.supports(Feature.FSIMAGE_NAME_OPTIMIZATION, imageVersion)) {
+ if (imageVersion <= -30) { // local file name
processLocalNameINodes(in, v, numInodes, skipBlocks);
} else { // full path name
processFullNameINodes(in, v, numInodes, skipBlocks);
@@ -398,6 +396,7 @@ class ImageLoaderCurrent implements Imag
* @param v visitor
* @param skipBlocks skip blocks or not
* @param parentName the name of its parent node
+ * @return the number of Children
* @throws IOException
*/
private void processINode(DataInputStream in, ImageVisitor v,
@@ -414,7 +413,7 @@ class ImageLoaderCurrent implements Imag
v.visit(ImageElement.INODE_PATH, pathName);
v.visit(ImageElement.REPLICATION, in.readShort());
v.visit(ImageElement.MODIFICATION_TIME, formatDate(in.readLong()));
- if(LayoutVersion.supports(Feature.FILE_ACCESS_TIME, imageVersion))
+ if(imageVersion <= -17) // added in version -17
v.visit(ImageElement.ACCESS_TIME, formatDate(in.readLong()));
v.visit(ImageElement.BLOCK_SIZE, in.readLong());
int numBlocks = in.readInt();
@@ -424,10 +423,10 @@ class ImageLoaderCurrent implements Imag
// File or directory
if (numBlocks > 0 || numBlocks == -1) {
v.visit(ImageElement.NS_QUOTA, numBlocks == -1 ? in.readLong() : -1);
- if (LayoutVersion.supports(Feature.DISKSPACE_QUOTA, imageVersion))
+ if(imageVersion <= -18) // added in version -18
v.visit(ImageElement.DS_QUOTA, numBlocks == -1 ? in.readLong() : -1);
}
- if (numBlocks == -2) {
+ if (imageVersion <= -23 && numBlocks == -2) {
v.visit(ImageElement.SYMLINK, Text.readString(in));
}
Modified: hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/OfflineImageViewer.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/OfflineImageViewer.java?rev=1128530&r1=1128529&r2=1128530&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/OfflineImageViewer.java (original)
+++ hadoop/hdfs/trunk/src/java/org/apache/hadoop/hdfs/tools/offlineImageViewer/OfflineImageViewer.java Fri May 27 23:37:30 2011
@@ -47,7 +47,8 @@ public class OfflineImageViewer {
"saving the results in OUTPUTFILE.\n" +
"\n" +
"The oiv utility will attempt to parse correctly formed image files\n" +
- "and will abort fail with mal-formed image files.\n" +
+ "and will abort fail with mal-formed image files. Currently the\n" +
+ "supports FSImage layout versions -16 through -23.\n" +
"\n" +
"The tool works offline and does not require a running cluster in\n" +
"order to process an image file.\n" +
Modified: hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/TestDFSUpgradeFromImage.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/TestDFSUpgradeFromImage.java?rev=1128530&r1=1128529&r2=1128530&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/TestDFSUpgradeFromImage.java (original)
+++ hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/TestDFSUpgradeFromImage.java Fri May 27 23:37:30 2011
@@ -47,13 +47,10 @@ import org.apache.commons.logging.LogFac
*/
public class TestDFSUpgradeFromImage extends TestCase {
- private static final Log LOG = LogFactory
- .getLog(TestDFSUpgradeFromImage.class);
+ private static final Log LOG = LogFactory.getLog(
+ "org.apache.hadoop.hdfs.TestDFSUpgradeFromImage");
private static File TEST_ROOT_DIR =
new File(MiniDFSCluster.getBaseDirectory());
- private static final String HADOOP14_IMAGE = "hadoop-14-dfs-dir.tgz";
- private static final String HADOOP_DFS_DIR_TXT = "hadoop-dfs-dir.txt";
- private static final String HADOOP22_IMAGE = "hadoop-22-dfs-dir.tgz";
public int numDataNodes = 4;
@@ -67,26 +64,24 @@ public class TestDFSUpgradeFromImage ext
boolean printChecksum = false;
- public void unpackStorage() throws IOException {
- unpackStorage(HADOOP14_IMAGE);
+ protected void setUp() throws IOException {
+ unpackStorage();
}
- private void unpackStorage(String tarFileName)
- throws IOException {
- String tarFile = System.getProperty("test.cache.data", "build/test/cache")
- + "/" + tarFileName;
+ public void unpackStorage() throws IOException {
+ String tarFile = System.getProperty("test.cache.data", "build/test/cache") +
+ "/hadoop-14-dfs-dir.tgz";
String dataDir = System.getProperty("test.build.data", "build/test/data");
File dfsDir = new File(dataDir, "dfs");
if ( dfsDir.exists() && !FileUtil.fullyDelete(dfsDir) ) {
throw new IOException("Could not delete dfs directory '" + dfsDir + "'");
}
- LOG.info("Unpacking " + tarFile);
FileUtil.unTar(new File(tarFile), new File(dataDir));
//Now read the reference info
- BufferedReader reader = new BufferedReader(new FileReader(
- System.getProperty("test.cache.data", "build/test/cache")
- + "/" + HADOOP_DFS_DIR_TXT));
+ BufferedReader reader = new BufferedReader(
+ new FileReader(System.getProperty("test.cache.data", "build/test/cache") +
+ "/hadoop-dfs-dir.txt"));
String line;
while ( (line = reader.readLine()) != null ) {
@@ -182,8 +177,7 @@ public class TestDFSUpgradeFromImage ext
}
}
- public void testUpgradeFromRel14Image() throws IOException {
- unpackStorage();
+ public void testUpgradeFromImage() throws IOException {
MiniDFSCluster cluster = null;
try {
Configuration conf = new HdfsConfiguration();
@@ -252,43 +246,8 @@ public class TestDFSUpgradeFromImage ext
.build();
fail("Was able to start NN from 0.3.0 image");
} catch (IOException ioe) {
+ LOG.info("Got expected exception", ioe);
assertTrue(ioe.toString().contains("Old layout version is 'too old'"));
}
}
-
- /**
- * Test upgrade from 0.22 image
- */
- /* commented for hudson build to run. Will be uncommented once
- * the jar tgz file required for this test is checked in
- public void testUpgradeFromRel22Image() throws IOException {
- unpackStorage(HADOOP_22_IMAGE, null);
- MiniDFSCluster cluster = null;
- try {
- Configuration conf = new HdfsConfiguration();
- if (System.getProperty("test.build.data") == null) { // to allow test to be run outside of Ant
- System.setProperty("test.build.data", "build/test/data");
- }
- conf.setInt(DFSConfigKeys.DFS_DATANODE_SCAN_PERIOD_HOURS_KEY, -1); // block scanning off
- cluster = new MiniDFSCluster.Builder(conf)
- .numDataNodes(numDataNodes)
- .format(false)
- .startupOption(StartupOption.UPGRADE)
- .clusterId("testClusterId")
- .build();
- cluster.waitActive();
- DistributedFileSystem dfs = (DistributedFileSystem)cluster.getFileSystem();
- DFSClient dfsClient = dfs.dfs;
- //Safemode will be off only after upgrade is complete. Wait for it.
- while ( dfsClient.setSafeMode(FSConstants.SafeModeAction.SAFEMODE_GET) ) {
- LOG.info("Waiting for SafeMode to be OFF.");
- try {
- Thread.sleep(1000);
- } catch (InterruptedException ignored) {}
- }
- } finally {
- if (cluster != null) { cluster.shutdown(); }
- }
- }
- */
}
Modified: hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/UpgradeUtilities.java
URL: http://svn.apache.org/viewvc/hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/UpgradeUtilities.java?rev=1128530&r1=1128529&r2=1128530&view=diff
==============================================================================
--- hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/UpgradeUtilities.java (original)
+++ hadoop/hdfs/trunk/src/test/hdfs/org/apache/hadoop/hdfs/UpgradeUtilities.java Fri May 27 23:37:30 2011
@@ -34,9 +34,7 @@ import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.LocalFileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.protocol.FSConstants;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion;
import org.apache.hadoop.hdfs.protocol.FSConstants.SafeModeAction;
-import org.apache.hadoop.hdfs.protocol.LayoutVersion.Feature;
import org.apache.hadoop.hdfs.server.common.HdfsConstants.NodeType;
import org.apache.hadoop.hdfs.server.common.HdfsConstants.StartupOption;
@@ -50,6 +48,7 @@ import org.apache.hadoop.hdfs.server.dat
import org.apache.hadoop.hdfs.server.datanode.DataStorage;
import org.apache.hadoop.hdfs.server.namenode.NNStorage;
import org.apache.hadoop.hdfs.server.namenode.NameNode;
+import org.apache.hadoop.test.GenericTestUtils;
/**
* This class defines a number of static helper methods used by the
@@ -462,7 +461,7 @@ 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 (version.layoutVersion < Storage.LAST_PRE_FEDERATION_LAYOUT_VERSION) {
File bpCurDir = new File(bpDir, Storage.STORAGE_DIR_CURRENT);
BlockPoolSliceStorage bpStorage = new BlockPoolSliceStorage(version,
bpid);