Merge branch 'cassandra-1.2' into trunk

Conflicts:
        src/java/org/apache/cassandra/service/StorageService.java


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/ee85c8ea
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ee85c8ea
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ee85c8ea

Branch: refs/heads/trunk
Commit: ee85c8ea980942bdd8b767fffc7ac6b9bc25d6ee
Parents: c4c04e7 76ad645
Author: Brandon Williams <brandonwilli...@apache.org>
Authored: Thu Jul 18 16:17:15 2013 -0500
Committer: Brandon Williams <brandonwilli...@apache.org>
Committed: Thu Jul 18 16:17:15 2013 -0500

----------------------------------------------------------------------
 CHANGES.txt                                           |  1 +
 .../cassandra/gms/GossipDigestAckVerbHandler.java     |  2 ++
 .../cassandra/gms/GossipDigestSynVerbHandler.java     |  1 +
 src/java/org/apache/cassandra/gms/Gossiper.java       | 14 ++++++++++++++
 .../org/apache/cassandra/service/StorageService.java  |  2 ++
 5 files changed, 20 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/ee85c8ea/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 6d72309,80b73f4..00abb86
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,93 -1,5 +1,94 @@@
 +2.0.0-beta2
 + * Replace countPendingHints with Hints Created metric (CASSANDRA-5746)
 + * Allow nodetool with no args, and with help to run without a server 
(CASSANDRA-5734)
 + * Cleanup AbstractType/TypeSerializer classes (CASSANDRA-5744)
 + * Remove unimplemented cli option schema-mwt (CASSANDRA-5754)
 + * Support range tombstones in thrift (CASSANDRA-5435)
 + * Normalize table-manipulating CQL3 statements' class names (CASSANDRA-5759)
 + * cqlsh: add missing table options to DESCRIBE output (CASSANDRA-5749)
 + * Fix assertion error during repair (CASSANDRA-5757)
 + * Fix bulkloader (CASSANDRA-5542)
 +
 +
 +2.0.0-beta1
 + * Removed on-heap row cache (CASSANDRA-5348)
 + * use nanotime consistently for node-local timeouts (CASSANDRA-5581)
 + * Avoid unnecessary second pass on name-based queries (CASSANDRA-5577)
 + * Experimental triggers (CASSANDRA-1311)
 + * JEMalloc support for off-heap allocation (CASSANDRA-3997)
 + * Single-pass compaction (CASSANDRA-4180)
 + * Removed token range bisection (CASSANDRA-5518)
 + * Removed compatibility with pre-1.2.5 sstables and network messages
 +   (CASSANDRA-5511)
 + * removed PBSPredictor (CASSANDRA-5455)
 + * CAS support (CASSANDRA-5062, 5441, 5442, 5443, 5619, 5667)
 + * Leveled compaction performs size-tiered compactions in L0 
 +   (CASSANDRA-5371, 5439)
 + * Add yaml network topology snitch for mixed ec2/other envs (CASSANDRA-5339)
 + * Log when a node is down longer than the hint window (CASSANDRA-4554)
 + * Optimize tombstone creation for ExpiringColumns (CASSANDRA-4917)
 + * Improve LeveledScanner work estimation (CASSANDRA-5250, 5407)
 + * Replace compaction lock with runWithCompactionsDisabled (CASSANDRA-3430)
 + * Change Message IDs to ints (CASSANDRA-5307)
 + * Move sstable level information into the Stats component, removing the
 +   need for a separate Manifest file (CASSANDRA-4872)
 + * avoid serializing to byte[] on commitlog append (CASSANDRA-5199)
 + * make index_interval configurable per columnfamily (CASSANDRA-3961, 
CASSANDRA-5650)
 + * add default_time_to_live (CASSANDRA-3974)
 + * add memtable_flush_period_in_ms (CASSANDRA-4237)
 + * replace supercolumns internally by composites (CASSANDRA-3237, 5123)
 + * upgrade thrift to 0.9.0 (CASSANDRA-3719)
 + * drop unnecessary keyspace parameter from user-defined compaction API 
 +   (CASSANDRA-5139)
 + * more robust solution to incomplete compactions + counters (CASSANDRA-5151)
 + * Change order of directory searching for c*.in.sh (CASSANDRA-3983)
 + * Add tool to reset SSTable compaction level for LCS (CASSANDRA-5271)
 + * Allow custom configuration loader (CASSANDRA-5045)
 + * Remove memory emergency pressure valve logic (CASSANDRA-3534)
 + * Reduce request latency with eager retry (CASSANDRA-4705)
 + * cqlsh: Remove ASSUME command (CASSANDRA-5331)
 + * Rebuild BF when loading sstables if bloom_filter_fp_chance
 +   has changed since compaction (CASSANDRA-5015)
 + * remove row-level bloom filters (CASSANDRA-4885)
 + * Change Kernel Page Cache skipping into row preheating (disabled by default)
 +   (CASSANDRA-4937)
 + * Improve repair by deciding on a gcBefore before sending
 +   out TreeRequests (CASSANDRA-4932)
 + * Add an official way to disable compactions (CASSANDRA-5074)
 + * Reenable ALTER TABLE DROP with new semantics (CASSANDRA-3919)
 + * Add binary protocol versioning (CASSANDRA-5436)
 + * Swap THshaServer for TThreadedSelectorServer (CASSANDRA-5530)
 + * Add alias support to SELECT statement (CASSANDRA-5075)
 + * Don't create empty RowMutations in CommitLogReplayer (CASSANDRA-5541)
 + * Use range tombstones when dropping cfs/columns from schema (CASSANDRA-5579)
 + * cqlsh: drop CQL2/CQL3-beta support (CASSANDRA-5585)
 + * Track max/min column names in sstables to be able to optimize slice
 +   queries (CASSANDRA-5514, CASSANDRA-5595, CASSANDRA-5600)
 + * Binary protocol: allow batching already prepared statements 
(CASSANDRA-4693)
 + * Allow preparing timestamp, ttl and limit in CQL3 queries (CASSANDRA-4450)
 + * Support native link w/o JNA in Java7 (CASSANDRA-3734)
 + * Use SASL authentication in binary protocol v2 (CASSANDRA-5545)
 + * Replace Thrift HsHa with LMAX Disruptor based implementation 
(CASSANDRA-5582)
 + * cqlsh: Add row count to SELECT output (CASSANDRA-5636)
 + * Include a timestamp with all read commands to determine column expiration
 +   (CASSANDRA-5149)
 + * Streaming 2.0 (CASSANDRA-5286, 5699)
 + * Conditional create/drop ks/table/index statements in CQL3 (CASSANDRA-2737)
 + * more pre-table creation property validation (CASSANDRA-5693)
 + * Redesign repair messages (CASSANDRA-5426)
 + * Fix ALTER RENAME post-5125 (CASSANDRA-5702)
 + * Disallow renaming a 2ndary indexed column (CASSANDRA-5705)
 + * Rename Table to Keyspace (CASSANDRA-5613)
 + * Ensure changing column_index_size_in_kb on different nodes don't corrupt 
the
 +   sstable (CASSANDRA-5454)
 + * Move resultset type information into prepare, not execute (CASSANDRA-5649)
 + * Auto paging in binary protocol (CASSANDRA-4415, 5714)
 + * Don't tie client side use of AbstractType to JDBC (CASSANDRA-4495)
 + * Adds new TimestampType to replace DateType (CASSANDRA-5723, CASSANDRA-5729)
 +
 +
  1.2.7
+  * if no seeds can be a reached a node won't start in a ring by itself 
(CASSANDRA-5768)
   * add cassandra.unsafesystem property (CASSANDRA-5704)
   * (Hadoop) quote identifiers in CqlPagingRecordReader (CASSANDRA-5763)
   * Add replace_node functionality for vnodes (CASSANDRA-5337)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/ee85c8ea/src/java/org/apache/cassandra/gms/GossipDigestAckVerbHandler.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/gms/GossipDigestAckVerbHandler.java
index 6152395,2a03ff2..57863ae
--- a/src/java/org/apache/cassandra/gms/GossipDigestAckVerbHandler.java
+++ b/src/java/org/apache/cassandra/gms/GossipDigestAckVerbHandler.java
@@@ -57,9 -57,11 +57,11 @@@ public class GossipDigestAckVerbHandle
              Gossiper.instance.applyStateLocally(epStateMap);
          }
  
+         Gossiper.instance.checkSeedContact(from);
+ 
          /* Get the state required to send to this gossipee - construct 
GossipDigestAck2Message */
          Map<InetAddress, EndpointState> deltaEpStateMap = new 
HashMap<InetAddress, EndpointState>();
 -        for( GossipDigest gDigest : gDigestList )
 +        for (GossipDigest gDigest : gDigestList)
          {
              InetAddress addr = gDigest.getEndpoint();
              EndpointState localEpStatePtr = 
Gossiper.instance.getStateForVersionBiggerThan(addr, gDigest.getMaxVersion());

http://git-wip-us.apache.org/repos/asf/cassandra/blob/ee85c8ea/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java
index ee23656,61d21ed..4b1564d
--- a/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java
+++ b/src/java/org/apache/cassandra/gms/GossipDigestSynVerbHandler.java
@@@ -78,10 -78,11 +78,11 @@@ public class GossipDigestSynVerbHandle
          Gossiper.instance.examineGossiper(gDigestList, deltaGossipDigestList, 
deltaEpStateMap);
  
          MessageOut<GossipDigestAck> gDigestAckMessage = new 
MessageOut<GossipDigestAck>(MessagingService.Verb.GOSSIP_DIGEST_ACK,
 -                                                                              
                        new GossipDigestAck(deltaGossipDigestList, 
deltaEpStateMap),
 -                                                                              
                        GossipDigestAck.serializer);
 +                                                                              
          new GossipDigestAck(deltaGossipDigestList, deltaEpStateMap),
 +                                                                              
          GossipDigestAck.serializer);
          if (logger.isTraceEnabled())
              logger.trace("Sending a GossipDigestAckMessage to {}", from);
+         Gossiper.instance.checkSeedContact(from);
          MessagingService.instance().sendOneWay(gDigestAckMessage, from);
      }
  

http://git-wip-us.apache.org/repos/asf/cassandra/blob/ee85c8ea/src/java/org/apache/cassandra/gms/Gossiper.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/gms/Gossiper.java
index a74da02,b0284c1..3893a93
--- a/src/java/org/apache/cassandra/gms/Gossiper.java
+++ b/src/java/org/apache/cassandra/gms/Gossiper.java
@@@ -186,9 -184,19 +189,20 @@@ public class Gossiper implements IFailu
          }
      }
  
+     protected void checkSeedContact(InetAddress ep)
+     {
+         if (!seedContacted && seeds.contains(ep))
+             seedContacted = true;
+     }
+ 
+     public boolean seenAnySeed()
+     {
+         return seedContacted;
+     }
+ 
      /**
       * Register for interesting state changes.
 +     *
       * @param subscriber module which implements the 
IEndpointStateChangeSubscriber
       */
      public void register(IEndpointStateChangeSubscriber subscriber)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/ee85c8ea/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageService.java
index 6e12e9d,c4ceee5..9d2e89a
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -893,6 -942,9 +893,8 @@@ public class StorageService extends Not
              // Dont set any state for the node which is bootstrapping the 
existing token...
              tokenMetadata.updateNormalTokens(tokens, 
FBUtilities.getBroadcastAddress());
          }
 -        Tracing.instance();
+         if (!Gossiper.instance.seenAnySeed())
+             throw new IllegalStateException("Unable to contact any seeds!")
          setMode(Mode.JOINING, "Starting to bootstrap...", true);
          new BootStrapper(FBUtilities.getBroadcastAddress(), tokens, 
tokenMetadata).bootstrap(); // handles token update
          logger.info("Bootstrap completed! for the tokens {}", tokens);

Reply via email to