Author: brandonwilliams
Date: Mon Oct 31 20:05:32 2011
New Revision: 1195644

URL: http://svn.apache.org/viewvc?rev=1195644&view=rev
Log:
Don't use rpc address for endpoints in describe_ring.
Patch by Nick Bailey, reviewed by brandonwilliams for CASSANDRA-3433

Modified:
    cassandra/branches/cassandra-1.0/interface/cassandra.thrift
    
cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/EndpointDetails.java
    
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/thrift/CassandraServer.java

Modified: cassandra/branches/cassandra-1.0/interface/cassandra.thrift
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/interface/cassandra.thrift?rev=1195644&r1=1195643&r2=1195644&view=diff
==============================================================================
--- cassandra/branches/cassandra-1.0/interface/cassandra.thrift (original)
+++ cassandra/branches/cassandra-1.0/interface/cassandra.thrift Mon Oct 31 
20:05:32 2011
@@ -343,8 +343,9 @@ struct Mutation {
 }
 
 struct EndpointDetails {
-       1: string host,
-       2: string datacenter
+    1: string host,
+    2: string datacenter,
+    3: optional string rack
 }
 
 /**

Modified: 
cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/EndpointDetails.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/EndpointDetails.java?rev=1195644&r1=1195643&r2=1195644&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/EndpointDetails.java
 (original)
+++ 
cassandra/branches/cassandra-1.0/interface/thrift/gen-java/org/apache/cassandra/thrift/EndpointDetails.java
 Mon Oct 31 20:05:32 2011
@@ -47,14 +47,17 @@ public class EndpointDetails implements 
 
   private static final org.apache.thrift.protocol.TField HOST_FIELD_DESC = new 
org.apache.thrift.protocol.TField("host", 
org.apache.thrift.protocol.TType.STRING, (short)1);
   private static final org.apache.thrift.protocol.TField DATACENTER_FIELD_DESC 
= new org.apache.thrift.protocol.TField("datacenter", 
org.apache.thrift.protocol.TType.STRING, (short)2);
+  private static final org.apache.thrift.protocol.TField RACK_FIELD_DESC = new 
org.apache.thrift.protocol.TField("rack", 
org.apache.thrift.protocol.TType.STRING, (short)3);
 
   public String host;
   public String datacenter;
+  public String rack;
 
   /** The set of fields this struct contains, along with convenience methods 
for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
     HOST((short)1, "host"),
-    DATACENTER((short)2, "datacenter");
+    DATACENTER((short)2, "datacenter"),
+    RACK((short)3, "rack");
 
     private static final Map<String, _Fields> byName = new HashMap<String, 
_Fields>();
 
@@ -73,6 +76,8 @@ public class EndpointDetails implements 
           return HOST;
         case 2: // DATACENTER
           return DATACENTER;
+        case 3: // RACK
+          return RACK;
         default:
           return null;
       }
@@ -121,6 +126,8 @@ public class EndpointDetails implements 
         new 
org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.DATACENTER, new 
org.apache.thrift.meta_data.FieldMetaData("datacenter", 
org.apache.thrift.TFieldRequirementType.DEFAULT, 
         new 
org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
+    tmpMap.put(_Fields.RACK, new 
org.apache.thrift.meta_data.FieldMetaData("rack", 
org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new 
org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     
org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(EndpointDetails.class,
 metaDataMap);
   }
@@ -147,6 +154,9 @@ public class EndpointDetails implements 
     if (other.isSetDatacenter()) {
       this.datacenter = other.datacenter;
     }
+    if (other.isSetRack()) {
+      this.rack = other.rack;
+    }
   }
 
   public EndpointDetails deepCopy() {
@@ -157,6 +167,7 @@ public class EndpointDetails implements 
   public void clear() {
     this.host = null;
     this.datacenter = null;
+    this.rack = null;
   }
 
   public String getHost() {
@@ -207,6 +218,30 @@ public class EndpointDetails implements 
     }
   }
 
+  public String getRack() {
+    return this.rack;
+  }
+
+  public EndpointDetails setRack(String rack) {
+    this.rack = rack;
+    return this;
+  }
+
+  public void unsetRack() {
+    this.rack = null;
+  }
+
+  /** Returns true if field rack is set (has been assigned a value) and false 
otherwise */
+  public boolean isSetRack() {
+    return this.rack != null;
+  }
+
+  public void setRackIsSet(boolean value) {
+    if (!value) {
+      this.rack = null;
+    }
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case HOST:
@@ -225,6 +260,14 @@ public class EndpointDetails implements 
       }
       break;
 
+    case RACK:
+      if (value == null) {
+        unsetRack();
+      } else {
+        setRack((String)value);
+      }
+      break;
+
     }
   }
 
@@ -236,6 +279,9 @@ public class EndpointDetails implements 
     case DATACENTER:
       return getDatacenter();
 
+    case RACK:
+      return getRack();
+
     }
     throw new IllegalStateException();
   }
@@ -251,6 +297,8 @@ public class EndpointDetails implements 
       return isSetHost();
     case DATACENTER:
       return isSetDatacenter();
+    case RACK:
+      return isSetRack();
     }
     throw new IllegalStateException();
   }
@@ -286,6 +334,15 @@ public class EndpointDetails implements 
         return false;
     }
 
+    boolean this_present_rack = true && this.isSetRack();
+    boolean that_present_rack = true && that.isSetRack();
+    if (this_present_rack || that_present_rack) {
+      if (!(this_present_rack && that_present_rack))
+        return false;
+      if (!this.rack.equals(that.rack))
+        return false;
+    }
+
     return true;
   }
 
@@ -303,6 +360,11 @@ public class EndpointDetails implements 
     if (present_datacenter)
       builder.append(datacenter);
 
+    boolean present_rack = true && (isSetRack());
+    builder.append(present_rack);
+    if (present_rack)
+      builder.append(rack);
+
     return builder.toHashCode();
   }
 
@@ -334,6 +396,16 @@ public class EndpointDetails implements 
         return lastComparison;
       }
     }
+    lastComparison = 
Boolean.valueOf(isSetRack()).compareTo(typedOther.isSetRack());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetRack()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.rack, 
typedOther.rack);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -365,6 +437,13 @@ public class EndpointDetails implements 
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
           }
           break;
+        case 3: // RACK
+          if (field.type == org.apache.thrift.protocol.TType.STRING) {
+            this.rack = iprot.readString();
+          } else { 
+            org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
+          }
+          break;
         default:
           org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type);
       }
@@ -390,6 +469,13 @@ public class EndpointDetails implements 
       oprot.writeString(this.datacenter);
       oprot.writeFieldEnd();
     }
+    if (this.rack != null) {
+      if (isSetRack()) {
+        oprot.writeFieldBegin(RACK_FIELD_DESC);
+        oprot.writeString(this.rack);
+        oprot.writeFieldEnd();
+      }
+    }
     oprot.writeFieldStop();
     oprot.writeStructEnd();
   }
@@ -414,6 +500,16 @@ public class EndpointDetails implements 
       sb.append(this.datacenter);
     }
     first = false;
+    if (isSetRack()) {
+      if (!first) sb.append(", ");
+      sb.append("rack:");
+      if (this.rack == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.rack);
+      }
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }

Modified: 
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/thrift/CassandraServer.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/thrift/CassandraServer.java?rev=1195644&r1=1195643&r2=1195644&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/thrift/CassandraServer.java
 (original)
+++ 
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/thrift/CassandraServer.java
 Mon Oct 31 20:05:32 2011
@@ -806,14 +806,9 @@ public class CassandraServer implements 
                 EndpointState eps = 
Gossiper.instance.getEndpointStateForEndpoint(endpoint);
                 EndpointDetails details = new EndpointDetails();
 
-                if (endpoint.equals(FBUtilities.getBroadcastAddress()))
-                    details.host = 
DatabaseDescriptor.getRpcAddress().getHostAddress();
-                else if (eps.getApplicationState(ApplicationState.RPC_ADDRESS) 
== null)
-                    details.host = endpoint.getHostAddress();
-                else
-                    details.host = 
eps.getApplicationState(ApplicationState.RPC_ADDRESS).value;
-
+                details.host = endpoint.getHostAddress();
                 details.datacenter = 
DatabaseDescriptor.getEndpointSnitch().getDatacenter(endpoint);
+                details.rack = 
DatabaseDescriptor.getEndpointSnitch().getRack(endpoint);
 
                 endpoints.add(details.host);
                 
rpc_endpoints.add(StorageService.instance.getRpcaddress(endpoint));


Reply via email to