Author: stack
Date: Thu Feb 10 20:12:19 2011
New Revision: 1069551

URL: http://svn.apache.org/viewvc?rev=1069551&view=rev
Log:
HBASE-3522 Unbundle our RPC versioning; rather than a global for all 4 
Interfaces -- region, master, region to master, and coprocesssors -- instead 
version each individually

Modified:
    hbase/trunk/CHANGES.txt
    
hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
    
hbase/trunk/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseEndpointCoprocessor.java
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HBaseRpcMetrics.java
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java
    
hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HMasterRegionInterface.java
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HRegionInterface.java
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
    
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
    
hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestHMasterRPCException.java
    
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.java

Modified: hbase/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=1069551&r1=1069550&r2=1069551&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Thu Feb 10 20:12:19 2011
@@ -69,6 +69,9 @@ Release 0.91.0 - Unreleased
    HBASE-3305  Allow round-robin distribution for table created with
                multiple regions (ted yu via jgray)
    HBASE-3496  HFile CLI Improvements
+   HBASE-3522  Unbundle our RPC versioning; rather than a global for all 4
+               Interfaces -- region, master, region to master, and
+               coprocesssors -- instead version each individually
 
 
   NEW FEATURES

Modified: 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java?rev=1069551&r1=1069550&r2=1069551&view=diff
==============================================================================
--- 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
 (original)
+++ 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
 Thu Feb 10 20:12:19 2011
@@ -349,7 +349,7 @@ public class HConnectionManager {
             }
 
             HMasterInterface tryMaster = (HMasterInterface)HBaseRPC.getProxy(
-                HMasterInterface.class, HBaseRPCProtocolVersion.versionID,
+                HMasterInterface.class, HMasterInterface.VERSION,
                 masterLocation.getInetSocketAddress(), this.conf, 
this.rpcTimeout);
 
             if (tryMaster.isMasterRunning()) {
@@ -945,7 +945,7 @@ public class HConnectionManager {
         if (server == null) { // Get a connection
           try {
             server = (HRegionInterface)HBaseRPC.waitForProxy(
-                serverInterfaceClass, HBaseRPCProtocolVersion.versionID,
+                serverInterfaceClass, HRegionInterface.VERSION,
                 regionServer.getInetSocketAddress(), this.conf,
                 this.maxRPCAttempts, this.rpcTimeout, this.rpcTimeout);
           } catch (RemoteException e) {

Modified: 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseEndpointCoprocessor.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseEndpointCoprocessor.java?rev=1069551&r1=1069550&r2=1069551&view=diff
==============================================================================
--- 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseEndpointCoprocessor.java
 (original)
+++ 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseEndpointCoprocessor.java
 Thu Feb 10 20:12:19 2011
@@ -19,8 +19,7 @@ package org.apache.hadoop.hbase.coproces
 import java.io.IOException;
 
 import org.apache.hadoop.hbase.ipc.CoprocessorProtocol;
-import org.apache.hadoop.hbase.ipc.HBaseRPCProtocolVersion;
-import org.apache.hadoop.hbase.regionserver.HRegion;
+import org.apache.hadoop.ipc.VersionedProtocol;
 
 /**
  * This abstract class provides default implementation of an Endpoint.
@@ -33,15 +32,17 @@ import org.apache.hadoop.hbase.regionser
  * the region related resource, i.e., CoprocessorEnvironment.
  */
 public abstract class BaseEndpointCoprocessor implements Coprocessor,
-    CoprocessorProtocol {
-  private CoprocessorEnvironment env;
-
+    CoprocessorProtocol, VersionedProtocol {
   /**
-   * @param e Coprocessor environment.
+   * This Interfaces' version. Version changes when the Interface changes.
    */
-  private void setEnvironment(CoprocessorEnvironment e) {
-    env = e;
-  }
+  // All HBase Interfaces used derive from HBaseRPCProtocolVersion.  It
+  // maintained a single global version number on all HBase Interfaces.  This
+  // meant all HBase RPC was broke though only one of the three RPC Interfaces
+  // had changed.  This has since been undone.
+  public static final long VERSION = 28L;
+
+  private CoprocessorEnvironment env;
 
   /**
    * @return env Coprocessor environment.
@@ -59,7 +60,8 @@ public abstract class BaseEndpointCoproc
   public void stop(CoprocessorEnvironment env) { }
 
   @Override
-  public long getProtocolVersion(String protocol, long clientVersion) throws 
IOException {
-    return HBaseRPCProtocolVersion.versionID;
+  public long getProtocolVersion(String protocol, long clientVersion)
+  throws IOException {
+    return VERSION;
   }
 }

Modified: 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HBaseRpcMetrics.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HBaseRpcMetrics.java?rev=1069551&r1=1069550&r2=1069551&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HBaseRpcMetrics.java 
(original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HBaseRpcMetrics.java 
Thu Feb 10 20:12:19 2011
@@ -22,6 +22,7 @@ package org.apache.hadoop.hbase.ipc;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.ipc.VersionedProtocol;
 import org.apache.hadoop.metrics.MetricsContext;
 import org.apache.hadoop.metrics.MetricsRecord;
 import org.apache.hadoop.metrics.MetricsUtil;
@@ -79,7 +80,7 @@ public class HBaseRpcMetrics implements 
 
   //public Map <String, MetricsTimeVaryingRate> metricsList = 
Collections.synchronizedMap(new HashMap<String, MetricsTimeVaryingRate>());
 
-  private void initMethods(Class<? extends HBaseRPCProtocolVersion> protocol) {
+  private void initMethods(Class<? extends VersionedProtocol> protocol) {
     for (Method m : protocol.getDeclaredMethods()) {
       if (get(m.getName()) == null)
         create(m.getName());

Modified: 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java?rev=1069551&r1=1069550&r2=1069551&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java 
(original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java 
Thu Feb 10 20:12:19 2011
@@ -25,6 +25,7 @@ import org.apache.hadoop.hbase.ClusterSt
 import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.UnknownRegionException;
+import org.apache.hadoop.ipc.VersionedProtocol;
 
 /**
  * Clients interact with the HMasterInterface to gain access to meta-level
@@ -35,7 +36,15 @@ import org.apache.hadoop.hbase.UnknownRe
  * number in HBaseRPCProtocolVersion
  *
  */
-public interface HMasterInterface extends HBaseRPCProtocolVersion {
+public interface HMasterInterface extends VersionedProtocol {
+  /**
+   * This Interfaces' version. Version changes when the Interface changes.
+   */
+  // All HBase Interfaces used derive from HBaseRPCProtocolVersion.  It
+  // maintained a single global version number on all HBase Interfaces.  This
+  // meant all HBase RPC was broke though only one of the three RPC Interfaces
+  // had changed.  This has since been undone.
+  public static final long VERSION = 28L;
 
   /** @return true if master is available */
   public boolean isMasterRunning();

Modified: 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HMasterRegionInterface.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HMasterRegionInterface.java?rev=1069551&r1=1069550&r2=1069551&view=diff
==============================================================================
--- 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HMasterRegionInterface.java
 (original)
+++ 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HMasterRegionInterface.java
 Thu Feb 10 20:12:19 2011
@@ -23,6 +23,7 @@ import org.apache.hadoop.hbase.HMsg;
 import org.apache.hadoop.hbase.HRegionInfo;
 import org.apache.hadoop.hbase.HServerInfo;
 import org.apache.hadoop.io.MapWritable;
+import org.apache.hadoop.ipc.VersionedProtocol;
 
 import java.io.IOException;
 
@@ -35,7 +36,15 @@ import java.io.IOException;
  * number in HBaseRPCProtocolVersion
  *
  */
-public interface HMasterRegionInterface extends HBaseRPCProtocolVersion {
+public interface HMasterRegionInterface extends VersionedProtocol {
+  /**
+   * This Interfaces' version. Version changes when the Interface changes.
+   */
+  // All HBase Interfaces used derive from HBaseRPCProtocolVersion.  It
+  // maintained a single global version number on all HBase Interfaces.  This
+  // meant all HBase RPC was broke though only one of the three RPC Interfaces
+  // had changed.  This has since been undone.
+  public static final long VERSION = 28L;
 
   /**
    * Called when a region server first starts

Modified: 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HRegionInterface.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HRegionInterface.java?rev=1069551&r1=1069550&r2=1069551&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HRegionInterface.java 
(original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/ipc/HRegionInterface.java 
Thu Feb 10 20:12:19 2011
@@ -22,7 +22,6 @@ package org.apache.hadoop.hbase.ipc;
 import java.io.IOException;
 import java.net.ConnectException;
 import java.util.List;
-import java.util.NavigableSet;
 
 import org.apache.hadoop.hbase.Abortable;
 import org.apache.hadoop.hbase.HRegionInfo;
@@ -30,8 +29,6 @@ import org.apache.hadoop.hbase.HServerIn
 import org.apache.hadoop.hbase.NotServingRegionException;
 import org.apache.hadoop.hbase.Stoppable;
 import org.apache.hadoop.hbase.client.Delete;
-import org.apache.hadoop.hbase.client.coprocessor.Exec;
-import org.apache.hadoop.hbase.client.coprocessor.ExecResult;
 import org.apache.hadoop.hbase.client.Get;
 import org.apache.hadoop.hbase.client.Increment;
 import org.apache.hadoop.hbase.client.MultiAction;
@@ -41,8 +38,11 @@ import org.apache.hadoop.hbase.client.Mu
 import org.apache.hadoop.hbase.client.Put;
 import org.apache.hadoop.hbase.client.Result;
 import org.apache.hadoop.hbase.client.Scan;
+import org.apache.hadoop.hbase.client.coprocessor.Exec;
+import org.apache.hadoop.hbase.client.coprocessor.ExecResult;
 import org.apache.hadoop.hbase.regionserver.wal.HLog;
 import org.apache.hadoop.ipc.RemoteException;
+import org.apache.hadoop.ipc.VersionedProtocol;
 
 /**
  * Clients interact with HRegionServers using a handle to the HRegionInterface.
@@ -50,7 +50,16 @@ import org.apache.hadoop.ipc.RemoteExcep
  * <p>NOTE: if you change the interface, you must change the RPC version
  * number in HBaseRPCProtocolVersion
  */
-public interface HRegionInterface extends HBaseRPCProtocolVersion, Stoppable, 
Abortable {
+public interface HRegionInterface extends VersionedProtocol, Stoppable, 
Abortable {
+  /**
+   * This Interfaces' version. Version changes when the Interface changes.
+   */
+  // All HBase Interfaces used derive from HBaseRPCProtocolVersion.  It
+  // maintained a single global version number on all HBase Interfaces.  This
+  // meant all HBase RPC was broke though only one of the three RPC Interfaces
+  // had changed.  This has since been undone.
+  public static final long VERSION = 28L;
+
   /**
    * Get metainfo about an HRegion
    *

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/HMaster.java?rev=1069551&r1=1069550&r2=1069551&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/HMaster.java 
(original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/HMaster.java Thu 
Feb 10 20:12:19 2011
@@ -60,7 +60,6 @@ import org.apache.hadoop.hbase.client.Me
 import org.apache.hadoop.hbase.executor.ExecutorService;
 import org.apache.hadoop.hbase.executor.ExecutorService.ExecutorType;
 import org.apache.hadoop.hbase.ipc.HBaseRPC;
-import org.apache.hadoop.hbase.ipc.HBaseRPCProtocolVersion;
 import org.apache.hadoop.hbase.ipc.HBaseServer;
 import org.apache.hadoop.hbase.ipc.HMasterInterface;
 import org.apache.hadoop.hbase.ipc.HMasterRegionInterface;
@@ -472,7 +471,7 @@ implements HMasterInterface, HMasterRegi
   }
 
   public long getProtocolVersion(String protocol, long clientVersion) {
-    return HBaseRPCProtocolVersion.versionID;
+    return HMasterInterface.VERSION;
   }
 
   /** @return InfoServer object. Maybe null.*/

Modified: 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=1069551&r1=1069550&r2=1069551&view=diff
==============================================================================
--- 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
 (original)
+++ 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
 Thu Feb 10 20:12:19 2011
@@ -101,7 +101,6 @@ import org.apache.hadoop.hbase.io.hfile.
 import org.apache.hadoop.hbase.ipc.CoprocessorProtocol;
 import org.apache.hadoop.hbase.ipc.HBaseRPC;
 import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler;
-import org.apache.hadoop.hbase.ipc.HBaseRPCProtocolVersion;
 import org.apache.hadoop.hbase.ipc.HBaseRpcMetrics;
 import org.apache.hadoop.hbase.ipc.HMasterRegionInterface;
 import org.apache.hadoop.hbase.ipc.HRegionInterface;
@@ -1447,7 +1446,7 @@ public class HRegionServer implements HR
         // Do initial RPC setup. The final argument indicates that the RPC
         // should retry indefinitely.
         master = (HMasterRegionInterface) HBaseRPC.waitForProxy(
-            HMasterRegionInterface.class, HBaseRPCProtocolVersion.versionID,
+            HMasterRegionInterface.class, HMasterRegionInterface.VERSION,
             masterAddress.getInetSocketAddress(), this.conf, -1,
             this.rpcTimeout, this.rpcTimeout);
       } catch (IOException e) {
@@ -2452,7 +2451,7 @@ public class HRegionServer implements HR
   public long getProtocolVersion(final String protocol, final long 
clientVersion)
       throws IOException {
     if (protocol.equals(HRegionInterface.class.getName())) {
-      return HBaseRPCProtocolVersion.versionID;
+      return HRegionInterface.VERSION;
     }
     throw new IOException("Unknown protocol to name node: " + protocol);
   }

Modified: 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestHMasterRPCException.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestHMasterRPCException.java?rev=1069551&r1=1069550&r2=1069551&view=diff
==============================================================================
--- 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestHMasterRPCException.java
 (original)
+++ 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestHMasterRPCException.java
 Thu Feb 10 20:12:19 2011
@@ -28,7 +28,6 @@ import org.apache.hadoop.hbase.HBaseTest
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.HServerAddress;
 import org.apache.hadoop.hbase.ipc.HBaseRPC;
-import org.apache.hadoop.hbase.ipc.HBaseRPCProtocolVersion;
 import org.apache.hadoop.hbase.ipc.HMasterInterface;
 import org.apache.hadoop.ipc.RemoteException;
 import org.junit.Test;
@@ -48,7 +47,7 @@ public class TestHMasterRPCException {
     try {
       HMasterInterface inf =
           (HMasterInterface) HBaseRPC.getProxy(
-              HMasterInterface.class,  HBaseRPCProtocolVersion.versionID,
+              HMasterInterface.class,  HMasterInterface.VERSION,
               hma.getInetSocketAddress(), conf, 100);
       inf.isMasterRunning();
       fail();

Modified: 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.java?rev=1069551&r1=1069550&r2=1069551&view=diff
==============================================================================
--- 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.java
 (original)
+++ 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.java
 Thu Feb 10 20:12:19 2011
@@ -19,21 +19,34 @@
  */
 package org.apache.hadoop.hbase.regionserver;
 
-import com.google.common.collect.Lists;
-import org.apache.hadoop.hbase.*;
-import org.apache.hadoop.hbase.client.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.HConstants;
+import org.apache.hadoop.hbase.HRegionInfo;
+import org.apache.hadoop.hbase.HRegionLocation;
+import org.apache.hadoop.hbase.MiniHBaseCluster;
+import org.apache.hadoop.hbase.client.Get;
+import org.apache.hadoop.hbase.client.HTable;
+import org.apache.hadoop.hbase.client.Put;
+import org.apache.hadoop.hbase.client.Row;
 import org.apache.hadoop.hbase.client.coprocessor.Batch;
 import org.apache.hadoop.hbase.ipc.CoprocessorProtocol;
-import org.apache.hadoop.hbase.ipc.HBaseRPCProtocolVersion;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.JVMClusterUtil;
-import org.junit.*;
+import org.apache.hadoop.ipc.VersionedProtocol;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
 
-import static org.junit.Assert.*;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
+import com.google.common.collect.Lists;
 
 public class TestServerCustomProtocol {
   /* Test protocol */
@@ -45,8 +58,9 @@ public class TestServerCustomProtocol {
   }
 
   /* Test protocol implementation */
-  private static class PingHandler implements PingProtocol,
-  HBaseRPCProtocolVersion {
+  private static class PingHandler implements PingProtocol, VersionedProtocol {
+    static int VERSION = 1;
+
     private int counter = 0;
     @Override
     public String ping() {
@@ -72,7 +86,7 @@ public class TestServerCustomProtocol {
 
     @Override
     public long getProtocolVersion(String s, long l) throws IOException {
-      return versionID;
+      return VERSION;
     }
   }
 


Reply via email to