cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jbel...@apache.org
Subject [3/3] git commit: merge from 1.2
Date Thu, 11 Jul 2013 19:18:54 GMT
merge from 1.2


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

Branch: refs/heads/trunk
Commit: b320cd9cdb9752780895e44fc1ab435571a920f9
Parents: 47ac42f 39a38e6
Author: Jonathan Ellis <jbellis@apache.org>
Authored: Thu Jul 11 14:18:42 2013 -0500
Committer: Jonathan Ellis <jbellis@apache.org>
Committed: Thu Jul 11 14:18:42 2013 -0500

----------------------------------------------------------------------
 CHANGES.txt                                     |  2 +
 .../apache/cassandra/service/ReadCallback.java  |  8 +++
 .../apache/cassandra/service/StorageProxy.java  | 61 ++++++++++++++++++--
 .../cassandra/thrift/CassandraServer.java       |  4 --
 4 files changed, 67 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/b320cd9c/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 4ede198,e1e3154..db74bec
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,81 -1,5 +1,82 @@@
 +2.0
 + * 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)
 + * Allow nodetool with no args, and with help to run without a server (CASSANDRA-5734)
 +
  1.2.7
+  * Add timeout events to query traces (CASSANDRA-5520)
   * make starting native protocol server idempotent (CASSANDRA-5728)
   * Fix loading key cache when a saved entry is no longer valid (CASSANDRA-5706)
   * Fix serialization of the LEFT gossip value (CASSANDRA-5696)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/b320cd9c/src/java/org/apache/cassandra/service/ReadCallback.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/b320cd9c/src/java/org/apache/cassandra/service/StorageProxy.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageProxy.java
index 763e86a,28e2af5..ee1e29a
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@@ -1169,18 -911,37 +1169,38 @@@ public class StorageProxy implements St
              // read results and make a second pass for any digest mismatches
              List<ReadCommand> repairCommands = null;
              List<ReadCallback<ReadResponse, Row>> repairResponseHandlers = null;
 -            for (int i = 0; i < commands.size(); i++)
 +            for (AbstractReadExecutor exec: readExecutors)
              {
 -                ReadCallback<ReadResponse, Row> handler = readCallbacks[i];
 -                ReadCommand command = commands.get(i);
                  try
                  {
 -                    Row row = handler.get();
 +                    Row row = exec.get();
                      if (row != null)
                      {
 -                        command.maybeTrim(row);
 +                        exec.command.maybeTrim(row);
                          rows.add(row);
                      }
 +                    if (logger.isDebugEnabled())
 +                        logger.debug("Read: {} ms.", TimeUnit.NANOSECONDS.toMillis(System.nanoTime()
- exec.handler.start));
++
+                 }
+                 catch (ReadTimeoutException ex)
+                 {
 -                    int blockFor = consistency_level.blockFor(Table.open(command.getKeyspace()));
 -                    int responseCount = handler.getReceivedCount();
 -                    String gotData = responseCount > 0 ?
 -                                     gotData = handler.resolver.isDataPresent() ? " (including
data)" : " (only digests)" :
 -                                     "";
++                    int blockFor = consistency_level.blockFor(Keyspace.open(exec.command.getKeyspace()));
++                    int responseCount = exec.handler.getReceivedCount();
++                    String gotData = responseCount > 0
++                                   ? exec.resolver.isDataPresent() ? " (including data)"
: " (only digests)"
++                                   : "";
+ 
+                     if (Tracing.isTracing())
+                     {
+                         Tracing.trace("Timed out; received {} of {} responses{}",
+                                       new Object[]{ responseCount, blockFor, gotData });
+                     }
+                     else if (logger.isDebugEnabled())
+                     {
+                         logger.debug("Read timeout; received {} of {} responses{}", responseCount,
blockFor, gotData);
+                     }
+                     throw ex;
                  }
                  catch (DigestMismatchException ex)
                  {
@@@ -1239,7 -1000,8 +1259,8 @@@
                      }
                      catch (TimeoutException e)
                      {
+                         Tracing.trace("Timed out on digest mismatch retries");
 -                        int blockFor = consistency_level.blockFor(Table.open(command.getKeyspace()));
 +                        int blockFor = consistency_level.blockFor(Keyspace.open(command.getKeyspace()));
                          throw new ReadTimeoutException(consistency_level, blockFor, blockFor,
true);
                      }
  
@@@ -1436,11 -1208,35 +1457,35 @@@
                      }
                      FBUtilities.waitOnFutures(resolver.repairResults, DatabaseDescriptor.getWriteRpcTimeout());
                  }
+                 catch (ReadTimeoutException ex)
+                 {
+                     // we timed out waiting for responses
 -                    int blockFor = consistency_level.blockFor(table);
++                    int blockFor = consistency_level.blockFor(keyspace);
+                     int responseCount = resolver.responses.size();
 -                    String gotData = responseCount > 0 ?
 -                                     resolver.isDataPresent() ? " (including data)" : "
(only digests)" :
 -                                     "";
++                    String gotData = responseCount > 0
++                                     ? resolver.isDataPresent() ? " (including data)" :
" (only digests)"
++                                     : "";
+ 
+                     if (Tracing.isTracing())
+                     {
+                         Tracing.trace("Timed out; received {} of {} responses{} for range
{} of {}",
 -                                      new Object[]{ responseCount, blockFor, gotData, i,
ranges.size() });
++                                new Object[]{ responseCount, blockFor, gotData, i, ranges.size()
});
+                     }
+                     else if (logger.isDebugEnabled())
+                     {
+                         logger.debug("Range slice timeout; received {} of {} responses{}
for range {} of {}",
 -                                     responseCount, blockFor, gotData, i, ranges.size());
++                                responseCount, blockFor, gotData, i, ranges.size());
+                     }
+                     throw ex;
+                 }
                  catch (TimeoutException ex)
                  {
-                     logger.debug("Range slice timeout: {}", ex.toString());
-                     // We actually got all response at that point
+                     // We got all responses, but timed out while repairing
 -                    int blockFor = consistency_level.blockFor(table);
 +                    int blockFor = consistency_level.blockFor(keyspace);
+                     if (Tracing.isTracing())
+                         Tracing.trace("Timed out while read-repairing after receiving all
{} data and digest responses", blockFor);
+                     else
+                         logger.debug("Range slice timeout while read-repairing after receiving
all {} data and digest responses", blockFor);
                      throw new ReadTimeoutException(consistency_level, blockFor, blockFor,
true);
                  }
                  catch (DigestMismatchException e)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/b320cd9c/src/java/org/apache/cassandra/thrift/CassandraServer.java
----------------------------------------------------------------------


Mime
View raw message