You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mb...@apache.org on 2012/08/28 22:50:54 UTC
svn commit: r1378328 - in
/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase:
ClusterStatus.java HServerInfo.java master/HMaster.java
Author: mbautin
Date: Tue Aug 28 20:50:54 2012
New Revision: 1378328
URL: http://svn.apache.org/viewvc?rev=1378328&view=rev
Log:
[HBASE-6508] [89-fb] Handle backwards compatibility for clients
Author: avf
Summary:
HServerInfo serialization was changed in HBASE-6508. This broke
compatibility with HBase clients that aretrieve cluster status. This
patch allows clients and server to disable sending the last flushed
sequence id field of serverInfo when it is not necessary, restoring
backwards compatibility between clients and servers.
Test Plan:
1. Test communication between new client and old server
2. Test communication between old client and new server
Revert Plan:
Reviewers: kannan, aaiyer
Reviewed By: kannan
CC: hbase-eng@
Differential Revision: https://phabricator.fb.com/D548575
Task ID: 1373422
Modified:
hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ClusterStatus.java
hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/HServerInfo.java
hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ClusterStatus.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ClusterStatus.java?rev=1378328&r1=1378327&r2=1378328&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ClusterStatus.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ClusterStatus.java Tue Aug 28 20:50:54 2012
@@ -223,6 +223,7 @@ public class ClusterStatus extends Versi
liveServerInfo = new ArrayList<HServerInfo>(count);
for (int i = 0; i < count; i++) {
HServerInfo info = new HServerInfo();
+ info.setSendSequenceIds(false);
info.readFields(in);
liveServerInfo.add(info);
}
Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/HServerInfo.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/HServerInfo.java?rev=1378328&r1=1378327&r2=1378328&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/HServerInfo.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/HServerInfo.java Tue Aug 28 20:50:54 2012
@@ -72,6 +72,7 @@ public class HServerInfo implements Writ
// Hostname of the regionserver.
private String hostname;
private String cachedHostnamePort = null;
+ private boolean sendSequenceIds = true;
// For each region, store the last sequence id that was flushed
// from MemStore to an HFile
@@ -224,6 +225,10 @@ public class HServerInfo implements Writ
return name.toString();
}
+ public void setSendSequenceIds(boolean sendSequenceIds) {
+ this.sendSequenceIds = sendSequenceIds;
+ }
+
/**
* @return ServerName and load concatenated.
* @see #getServerName()
@@ -260,9 +265,11 @@ public class HServerInfo implements Writ
this.load.readFields(in);
in.readInt();
this.hostname = in.readUTF();
- HbaseMapWritable<byte[], Long> sequenceIdsWritable =
- new HbaseMapWritable<byte[], Long>(flushedSequenceIdByRegion);
- sequenceIdsWritable.readFields(in);
+ if (sendSequenceIds) {
+ HbaseMapWritable<byte[], Long> sequenceIdsWritable =
+ new HbaseMapWritable<byte[], Long>(flushedSequenceIdByRegion);
+ sequenceIdsWritable.readFields(in);
+ }
}
public void write(DataOutput out) throws IOException {
@@ -272,9 +279,11 @@ public class HServerInfo implements Writ
// Still serializing the info port for backward compatibility but it is not used.
out.writeInt(HConstants.DEFAULT_REGIONSERVER_INFOPORT);
out.writeUTF(hostname);
- HbaseMapWritable<byte[], Long> sequenceIdsWritable =
- new HbaseMapWritable<byte[], Long>(flushedSequenceIdByRegion);
- sequenceIdsWritable.write(out);
+ if (sendSequenceIds) {
+ HbaseMapWritable<byte[], Long> sequenceIdsWritable =
+ new HbaseMapWritable<byte[], Long>(flushedSequenceIdByRegion);
+ sequenceIdsWritable.write(out);
+ }
}
public int compareTo(HServerInfo o) {
Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/HMaster.java?rev=1378328&r1=1378327&r2=1378328&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/master/HMaster.java Tue Aug 28 20:50:54 2012
@@ -1923,7 +1923,13 @@ public class HMaster extends HasThread i
public ClusterStatus getClusterStatus() {
ClusterStatus status = new ClusterStatus();
status.setHBaseVersion(VersionInfo.getVersion());
- status.setServerInfo(serverManager.getServersToServerInfo().values());
+ List<HServerInfo> serverInfoCopy = Lists.newArrayList();
+ for (HServerInfo hsi : serverManager.getServersToServerInfo().values()) {
+ HServerInfo hsiCopy = new HServerInfo(hsi);
+ hsiCopy.setSendSequenceIds(false);
+ serverInfoCopy.add(hsiCopy);
+ }
+ status.setServerInfo(serverInfoCopy);
status.setDeadServers(serverManager.getDeadServers());
status.setRegionsInTransition(this.regionManager.getRegionsInTransition());
return status;