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 el...@apache.org on 2012/02/23 03:08:55 UTC
svn commit: r1292620 - in
/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs: ./
src/main/java/org/apache/hadoop/hdfs/server/namenode/
src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/
Author: eli
Date: Thu Feb 23 02:08:54 2012
New Revision: 1292620
URL: http://svn.apache.org/viewvc?rev=1292620&view=rev
Log:
HDFS-2922. HA: close out operation categories. Contributed by Eli Collins
Modified:
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/CHANGES.HDFS-1623.txt
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/BackupNode.java
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeRpcServer.java
hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/StandbyState.java
Modified: hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/CHANGES.HDFS-1623.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/CHANGES.HDFS-1623.txt?rev=1292620&r1=1292619&r2=1292620&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/CHANGES.HDFS-1623.txt (original)
+++ hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/CHANGES.HDFS-1623.txt Thu Feb 23 02:08:54 2012
@@ -226,3 +226,5 @@ HDFS-2929. Stress test and fixes for blo
HDFS-2972. Small optimization building incremental block report (todd)
HDFS-2973. Re-enable NO_ACK optimization for block deletion. (todd)
+
+HDFS-2922. HA: close out operation categories (eli)
Modified: hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/BackupNode.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/BackupNode.java?rev=1292620&r1=1292619&r2=1292620&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/BackupNode.java (original)
+++ hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/BackupNode.java Thu Feb 23 02:08:54 2012
@@ -407,6 +407,9 @@ public class BackupNode extends NameNode
@Override // NameNode
public void checkOperation(OperationCategory op)
throws StandbyException {
+ if (op == OperationCategory.UNCHECKED) {
+ return;
+ }
if (OperationCategory.JOURNAL != op &&
!(OperationCategory.READ == op && allowStaleStandbyReads)) {
String msg = "Operation category " + op
Modified: hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java?rev=1292620&r1=1292619&r2=1292620&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java (original)
+++ hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNode.java Thu Feb 23 02:08:54 2012
@@ -114,6 +114,8 @@ public class NameNode {
* Categories of operations supported by the namenode.
*/
public static enum OperationCategory {
+ /** Operations that are state agnostic */
+ UNCHECKED,
/** Read operation that does not change the namespace state */
READ,
/** Write operation that changes the namespace state */
Modified: hadoop/common/branches/HDFS-1623/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-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeRpcServer.java?rev=1292620&r1=1292619&r2=1292620&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeRpcServer.java (original)
+++ hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/NameNodeRpcServer.java Thu Feb 23 02:08:54 2012
@@ -353,9 +353,7 @@ class NameNodeRpcServer implements Namen
public void errorReport(NamenodeRegistration registration,
int errorCode,
String msg) throws IOException {
- // nn.checkOperation(OperationCategory.WRITE);
- // TODO: I dont think this should be checked - it's just for logging
- // and dropping backups
+ namesystem.checkOperation(OperationCategory.UNCHECKED);
verifyRequest(registration);
LOG.info("Error report from " + registration + ": " + msg);
if(errorCode == FATAL)
@@ -707,8 +705,8 @@ class NameNodeRpcServer implements Namen
@Override // ClientProtocol
public DatanodeInfo[] getDatanodeReport(DatanodeReportType type)
- throws IOException {
- // TODO(HA): decide on OperationCategory for this
+ throws IOException {
+ namesystem.checkOperation(OperationCategory.UNCHECKED);
DatanodeInfo results[] = namesystem.datanodeReport(type);
if (results == null ) {
throw new IOException("Cannot find datanode report");
@@ -718,32 +716,32 @@ class NameNodeRpcServer implements Namen
@Override // ClientProtocol
public boolean setSafeMode(SafeModeAction action) throws IOException {
- // TODO:HA decide on OperationCategory for this
+ namesystem.checkOperation(OperationCategory.UNCHECKED);
return namesystem.setSafeMode(action);
}
+
@Override // ClientProtocol
- public boolean restoreFailedStorage(String arg)
- throws AccessControlException {
- // TODO:HA decide on OperationCategory for this
+ public boolean restoreFailedStorage(String arg) throws IOException {
+ namesystem.checkOperation(OperationCategory.UNCHECKED);
return namesystem.restoreFailedStorage(arg);
}
@Override // ClientProtocol
public void saveNamespace() throws IOException {
- // TODO:HA decide on OperationCategory for this
+ namesystem.checkOperation(OperationCategory.UNCHECKED);
namesystem.saveNamespace();
}
@Override // ClientProtocol
public void refreshNodes() throws IOException {
- // TODO:HA decide on OperationCategory for this
+ namesystem.checkOperation(OperationCategory.UNCHECKED);
namesystem.getBlockManager().getDatanodeManager().refreshNodes(
new HdfsConfiguration());
}
@Override // NamenodeProtocol
- public long getTransactionID() {
- // TODO:HA decide on OperationCategory for this
+ public long getTransactionID() throws IOException {
+ namesystem.checkOperation(OperationCategory.CHECKPOINT);
return namesystem.getEditLog().getSyncTxId();
}
@@ -755,28 +753,29 @@ class NameNodeRpcServer implements Namen
@Override // NamenodeProtocol
public RemoteEditLogManifest getEditLogManifest(long sinceTxId)
throws IOException {
- // TODO:HA decide on OperationCategory for this
+ namesystem.checkOperation(OperationCategory.READ);
return namesystem.getEditLog().getEditLogManifest(sinceTxId);
}
@Override // ClientProtocol
public void finalizeUpgrade() throws IOException {
- // TODO:HA decide on OperationCategory for this
+ namesystem.checkOperation(OperationCategory.WRITE);
namesystem.finalizeUpgrade();
}
@Override // ClientProtocol
public UpgradeStatusReport distributedUpgradeProgress(UpgradeAction action)
throws IOException {
- // TODO:HA decide on OperationCategory for this
+ namesystem.checkOperation(OperationCategory.READ);
return namesystem.distributedUpgradeProgress(action);
}
@Override // ClientProtocol
public void metaSave(String filename) throws IOException {
- // TODO:HA decide on OperationCategory for this
+ namesystem.checkOperation(OperationCategory.UNCHECKED);
namesystem.metaSave(filename);
}
+
@Override // ClientProtocol
public CorruptFileBlocks listCorruptFileBlocks(String path, String cookie)
throws IOException {
@@ -795,12 +794,12 @@ class NameNodeRpcServer implements Namen
/**
* Tell all datanodes to use a new, non-persistent bandwidth value for
* dfs.datanode.balance.bandwidthPerSec.
- * @param bandwidth Blanacer bandwidth in bytes per second for all datanodes.
+ * @param bandwidth Balancer bandwidth in bytes per second for all datanodes.
* @throws IOException
*/
@Override // ClientProtocol
public void setBalancerBandwidth(long bandwidth) throws IOException {
- // TODO:HA decide on OperationCategory for this
+ namesystem.checkOperation(OperationCategory.UNCHECKED);
namesystem.getBlockManager().getDatanodeManager().setBalancerBandwidth(bandwidth);
}
Modified: hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/StandbyState.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/StandbyState.java?rev=1292620&r1=1292619&r2=1292620&view=diff
==============================================================================
--- hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/StandbyState.java (original)
+++ hadoop/common/branches/HDFS-1623/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/ha/StandbyState.java Thu Feb 23 02:08:54 2012
@@ -78,7 +78,8 @@ public class StandbyState extends HAStat
@Override
public void checkOperation(HAContext context, OperationCategory op)
throws StandbyException {
- if (op == OperationCategory.READ && context.allowStaleReads()) {
+ if (op == OperationCategory.UNCHECKED ||
+ (op == OperationCategory.READ && context.allowStaleReads())) {
return;
}
String msg = "Operation category " + op + " is not supported in state "