Merge branch 'cassandra-3.0' into cassandra-3.X

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

Branch: refs/heads/trunk
Commit: 2e18adf2578f4c4a73d6b68fcbd8fe3786b11f00
Parents: c089b26 5115c10
Author: Stefania Alborghetti <stefania.alborghe...@datastax.com>
Authored: Tue Oct 4 09:53:37 2016 +0800
Committer: Stefania Alborghetti <stefania.alborghe...@datastax.com>
Committed: Tue Oct 4 09:54:18 2016 +0800

----------------------------------------------------------------------
 CHANGES.txt                                     |   1 +
 conf/logback.xml                                |   3 +-
 .../DebuggableScheduledThreadPoolExecutor.java  |   2 +-
 .../apache/cassandra/service/StorageProxy.java  |   8 +-
 .../cassandra/service/StorageService.java       | 285 ++++++++++---------
 .../cassandra/service/StorageServiceMBean.java  |   2 +
 .../org/apache/cassandra/tools/NodeProbe.java   |  10 +
 .../cql3/validation/entities/UFTest.java        |   4 +-
 8 files changed, 178 insertions(+), 137 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e18adf2/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index bec8c2a,21eec4b..25f02a2
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,75 -1,5 +1,76 @@@
 -3.0.10
 +3.10
 + * cdc column addition still breaks schema migration tasks (CASSANDRA-12697)
 + * Upgrade metrics-reporter dependencies (CASSANDRA-12089)
 + * Tune compaction thread count via nodetool (CASSANDRA-12248)
 + * Add +=/-= shortcut syntax for update queries (CASSANDRA-12232)
 + * Include repair session IDs in repair start message (CASSANDRA-12532)
 + * Add a blocking task to Index, run before joining the ring (CASSANDRA-12039)
 + * Fix NPE when using CQLSSTableWriter (CASSANDRA-12667)
 + * Support optional backpressure strategies at the coordinator 
(CASSANDRA-9318)
 + * Make randompartitioner work with new vnode allocation (CASSANDRA-12647)
 + * Fix cassandra-stress graphing (CASSANDRA-12237)
 + * Allow filtering on partition key columns for queries without secondary 
indexes (CASSANDRA-11031)
 + * Fix Cassandra Stress reporting thread model and precision (CASSANDRA-12585)
 + * Add JMH benchmarks.jar (CASSANDRA-12586)
 + * Add row offset support to SASI (CASSANDRA-11990)
 + * Cleanup uses of AlterTableStatementColumn (CASSANDRA-12567)
 + * Add keep-alive to streaming (CASSANDRA-11841)
 + * Tracing payload is passed through newSession(..) (CASSANDRA-11706)
 + * avoid deleting non existing sstable files and improve related log messages 
(CASSANDRA-12261)
 + * json/yaml output format for nodetool compactionhistory (CASSANDRA-12486)
 + * Retry all internode messages once after a connection is
 +   closed and reopened (CASSANDRA-12192)
 + * Add support to rebuild from targeted replica (CASSANDRA-9875)
 + * Add sequence distribution type to cassandra stress (CASSANDRA-12490)
 + * "SELECT * FROM foo LIMIT ;" does not error out (CASSANDRA-12154)
 + * Define executeLocally() at the ReadQuery Level (CASSANDRA-12474)
 + * Extend read/write failure messages with a map of replica addresses
 +   to error codes in the v5 native protocol (CASSANDRA-12311)
 + * Fix rebuild of SASI indexes with existing index files (CASSANDRA-12374)
 + * Let DatabaseDescriptor not implicitly startup services (CASSANDRA-9054, 
12550)
 + * Fix clustering indexes in presence of static columns in SASI 
(CASSANDRA-12378)
 + * Fix queries on columns with reversed type on SASI indexes (CASSANDRA-12223)
 + * Added slow query log (CASSANDRA-12403)
 + * Count full coordinated request against timeout (CASSANDRA-12256)
 + * Allow TTL with null value on insert and update (CASSANDRA-12216)
 + * Make decommission operation resumable (CASSANDRA-12008)
 + * Add support to one-way targeted repair (CASSANDRA-9876)
 + * Remove clientutil jar (CASSANDRA-11635)
 + * Fix compaction throughput throttle (CASSANDRA-12366)
 + * Delay releasing Memtable memory on flush until PostFlush has finished 
running (CASSANDRA-12358)
 + * Cassandra stress should dump all setting on startup (CASSANDRA-11914)
 + * Make it possible to compact a given token range (CASSANDRA-10643)
 + * Allow updating DynamicEndpointSnitch properties via JMX (CASSANDRA-12179)
 + * Collect metrics on queries by consistency level (CASSANDRA-7384)
 + * Add support for GROUP BY to SELECT statement (CASSANDRA-10707)
 + * Deprecate memtable_cleanup_threshold and update default for 
memtable_flush_writers (CASSANDRA-12228)
 + * Upgrade to OHC 0.4.4 (CASSANDRA-12133)
 + * Add version command to cassandra-stress (CASSANDRA-12258)
 + * Create compaction-stress tool (CASSANDRA-11844)
 + * Garbage-collecting compaction operation and schema option (CASSANDRA-7019)
 + * Add beta protocol flag for v5 native protocol (CASSANDRA-12142)
 + * Support filtering on non-PRIMARY KEY columns in the CREATE
 +   MATERIALIZED VIEW statement's WHERE clause (CASSANDRA-10368)
 + * Unify STDOUT and SYSTEMLOG logback format (CASSANDRA-12004)
 + * COPY FROM should raise error for non-existing input files (CASSANDRA-12174)
 + * Faster write path (CASSANDRA-12269)
 + * Option to leave omitted columns in INSERT JSON unset (CASSANDRA-11424)
 + * Support json/yaml output in nodetool tpstats (CASSANDRA-12035)
 + * Expose metrics for successful/failed authentication attempts 
(CASSANDRA-10635)
 + * Prepend snapshot name with "truncated" or "dropped" when a snapshot
 +   is taken before truncating or dropping a table (CASSANDRA-12178)
 + * Optimize RestrictionSet (CASSANDRA-12153)
 + * cqlsh does not automatically downgrade CQL version (CASSANDRA-12150)
 + * Omit (de)serialization of state variable in UDAs (CASSANDRA-9613)
 + * Create a system table to expose prepared statements (CASSANDRA-8831)
 + * Reuse DataOutputBuffer from ColumnIndex (CASSANDRA-11970)
 + * Remove DatabaseDescriptor dependency from SegmentedFile (CASSANDRA-11580)
 + * Add supplied username to authentication error messages (CASSANDRA-12076)
 + * Remove pre-startup check for open JMX port (CASSANDRA-12074)
 + * Remove compaction Severity from DynamicEndpointSnitch (CASSANDRA-11738)
 + * Restore resumable hints delivery (CASSANDRA-11960)
 +Merged from 3.0:
+  * Unify drain and shutdown processes (CASSANDRA-12509)
   * Fix NPE in ComponentOfSlice.isEQ() (CASSANDRA-12706)
   * Fix failure in LogTransactionTest (CASSANDRA-12632)
   * Fix potentially incomplete non-frozen UDT values when querying with the

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e18adf2/conf/logback.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e18adf2/src/java/org/apache/cassandra/service/StorageProxy.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e18adf2/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageService.java
index 2e982ed,0be5d92..46f880e
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -309,10 -308,12 +316,12 @@@ public class StorageService extends Not
      }
  
      // should only be called via JMX
-     public void startGossiping()
+     public synchronized void startGossiping()
      {
 -        if (!initialized)
 +        if (!gossipActive)
          {
+             checkServiceAllowedToStart("gossip");
+ 
              logger.warn("Starting gossip by operator request");
              Collection<Token> tokens = SystemKeyspace.getSavedTokens();
  
@@@ -605,65 -604,17 +618,17 @@@
          drainOnShutdown = new Thread(new WrappedRunnable()
          {
              @Override
-             public void runMayThrow() throws InterruptedException, 
ExecutionException
+             public void runMayThrow() throws InterruptedException, 
ExecutionException, IOException
              {
-                 inShutdownHook = true;
-                 ExecutorService viewMutationStage = 
StageManager.getStage(Stage.VIEW_MUTATION);
-                 ExecutorService counterMutationStage = 
StageManager.getStage(Stage.COUNTER_MUTATION);
-                 ExecutorService mutationStage = 
StageManager.getStage(Stage.MUTATION);
-                 if (mutationStage.isShutdown()
-                     && counterMutationStage.isShutdown()
-                     && viewMutationStage.isShutdown())
-                     return; // drained already
- 
-                 if (daemon != null)
-                       shutdownClientServers();
-                 ScheduledExecutors.optionalTasks.shutdown();
-                 Gossiper.instance.stop();
- 
-                 // In-progress writes originating here could generate hints 
to be written, so shut down MessagingService
-                 // before mutation stage, so we can get all the hints saved 
before shutting down
-                 MessagingService.instance().shutdown();
-                 viewMutationStage.shutdown();
-                 BatchlogManager.instance.shutdown();
-                 HintsService.instance.pauseDispatch();
-                 counterMutationStage.shutdown();
-                 mutationStage.shutdown();
-                 viewMutationStage.awaitTermination(3600, TimeUnit.SECONDS);
-                 counterMutationStage.awaitTermination(3600, TimeUnit.SECONDS);
-                 mutationStage.awaitTermination(3600, TimeUnit.SECONDS);
-                 StorageProxy.instance.verifyNoHintsInProgress();
- 
-                 List<Future<?>> flushes = new ArrayList<>();
-                 for (Keyspace keyspace : Keyspace.all())
-                 {
-                     KeyspaceMetadata ksm = 
Schema.instance.getKSMetaData(keyspace.getName());
-                     if (!ksm.params.durableWrites)
-                         for (ColumnFamilyStore cfs : 
keyspace.getColumnFamilyStores())
-                             flushes.add(cfs.forceFlush());
-                 }
-                 try
-                 {
-                     FBUtilities.waitOnFutures(flushes);
-                 }
-                 catch (Throwable t)
-                 {
-                     JVMStabilityInspector.inspectThrowable(t);
-                     // don't let this stop us from shutting down the 
commitlog and other thread pools
-                     logger.warn("Caught exception while waiting for memtable 
flushes during shutdown hook", t);
-                 }
- 
-                 CommitLog.instance.shutdownBlocking();
+                 drain(true);
  
 -                if (FBUtilities.isWindows())
 +                if (FBUtilities.isWindows)
                      
WindowsTimer.endTimerPeriod(DatabaseDescriptor.getWindowsTimerInterval());
  
-                 HintsService.instance.shutdownBlocking();
- 
-                 // wait for miscellaneous tasks like sstable and commitlog 
segment deletion
-                 ScheduledExecutors.nonPeriodicTasks.shutdown();
-                 if (!ScheduledExecutors.nonPeriodicTasks.awaitTermination(1, 
TimeUnit.MINUTES))
-                     logger.warn("Miscellaneous task executor still busy after 
one minute; proceeding with shutdown");
+                 // Cleanup logback
+                 DelayingShutdownHook logbackHook = new DelayingShutdownHook();
+                 
logbackHook.setContext((LoggerContext)LoggerFactory.getILoggerFactory());
+                 logbackHook.run();
              }
          }, "StorageServiceShutdownHook");
          Runtime.getRuntime().addShutdownHook(drainOnShutdown);
@@@ -1163,12 -1044,7 +1128,12 @@@
  
      public void rebuild(String sourceDc)
      {
 +        rebuild(sourceDc, null, null, null);
 +    }
 +
 +    public void rebuild(String sourceDc, String keyspace, String tokens, 
String specificSources)
 +    {
-         // check on going rebuild
+         // check ongoing rebuild
          if (!isRebuilding.compareAndSet(false, true))
          {
              throw new IllegalStateException("Node is still rebuilding. Check 
nodetool netstats.");

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e18adf2/src/java/org/apache/cassandra/service/StorageServiceMBean.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageServiceMBean.java
index 2243a96,f6e4209..339b991
--- a/src/java/org/apache/cassandra/service/StorageServiceMBean.java
+++ b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
@@@ -526,31 -489,9 +526,33 @@@ public interface StorageServiceMBean ex
      // allows a node that have been started without joining the ring to join 
it
      public void joinRing() throws IOException;
      public boolean isJoined();
+     public boolean isDrained();
+     public boolean isDraining();
  
 +    public void setRpcTimeout(long value);
 +    public long getRpcTimeout();
 +
 +    public void setReadRpcTimeout(long value);
 +    public long getReadRpcTimeout();
 +
 +    public void setRangeRpcTimeout(long value);
 +    public long getRangeRpcTimeout();
 +
 +    public void setWriteRpcTimeout(long value);
 +    public long getWriteRpcTimeout();
 +
 +    public void setCounterWriteRpcTimeout(long value);
 +    public long getCounterWriteRpcTimeout();
 +
 +    public void setCasContentionTimeout(long value);
 +    public long getCasContentionTimeout();
 +
 +    public void setTruncateRpcTimeout(long value);
 +    public long getTruncateRpcTimeout();
 +
 +    public void setStreamingSocketTimeout(int value);
 +    public int getStreamingSocketTimeout();
 +
      public void setStreamThroughputMbPerSec(int value);
      public int getStreamThroughputMbPerSec();
  

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e18adf2/src/java/org/apache/cassandra/tools/NodeProbe.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2e18adf2/test/unit/org/apache/cassandra/cql3/validation/entities/UFTest.java
----------------------------------------------------------------------

Reply via email to