Author: jbellis
Date: Thu Dec  2 01:18:49 2010
New Revision: 1041244

URL: http://svn.apache.org/viewvc?rev=1041244&view=rev
Log:
merge from 0.7

Modified:
    cassandra/trunk/   (props changed)
    cassandra/trunk/CHANGES.txt
    cassandra/trunk/conf/cassandra.yaml
    cassandra/trunk/contrib/word_count/src/WordCountSetup.java
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
   (props changed)
    
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
   (props changed)
    cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java
    cassandra/trunk/src/java/org/apache/cassandra/cli/CliOptions.java
    cassandra/trunk/src/java/org/apache/cassandra/config/Config.java
    cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java
    cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java
    cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
    
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLogSegment.java
    cassandra/trunk/src/java/org/apache/cassandra/dht/AbstractBounds.java
    cassandra/trunk/src/java/org/apache/cassandra/gms/Gossiper.java
    cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableScanner.java
    cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
    
cassandra/trunk/src/java/org/apache/cassandra/io/util/BufferedRandomAccessFile.java
    cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java
    
cassandra/trunk/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
    cassandra/trunk/src/java/org/apache/cassandra/net/OutboundTcpConnection.java
    cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java
    cassandra/trunk/src/java/org/apache/cassandra/tools/ClusterCmd.java
    cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java
    
cassandra/trunk/test/unit/org/apache/cassandra/locator/SimpleStrategyTest.java
    cassandra/trunk/test/unit/org/apache/cassandra/service/StorageProxyTest.java

Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Dec  2 01:18:49 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6:922689-1040580
-/cassandra/branches/cassandra-0.7:1026517-1040581
+/cassandra/branches/cassandra-0.6:922689-1041242
+/cassandra/branches/cassandra-0.7:1026517-1041243
 /incubator/cassandra/branches/cassandra-0.3:774578-796573
 /incubator/cassandra/branches/cassandra-0.4:810145-834239,834349-834350
 /incubator/cassandra/branches/cassandra-0.5:888872-915439

Modified: cassandra/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Thu Dec  2 01:18:49 2010
@@ -18,6 +18,11 @@ dev
    defined comparator, and decode properly in cli (CASSANDRA-1773)
  * use cross-platform newlines in cli (CASSANDRA-1786)
  * add ExpiringColumn support to sstable import/export (CASSANDRA-1754)
+ * add flush for each append to periodic commitlog mode; added
+   periodic_without_flush option to disable this (CASSANDRA-1780)
+ * close file handle used for post-flush truncate (CASSANDRA-1790)
+ * various code cleanup (CASSANDRA-1793, -1794, -1795)
+ * fix range queries against wrapped range (CASSANDRA-1781)
 
 
 0.7.0-rc1
@@ -33,6 +38,8 @@ dev
  * Fix misuse of DataOutputBuffer.getData in AntiEntropyService
    (CASSANDRA-1729)
  * detect and warn when obsolete version of JNA is present (CASSANDRA-1770)
+
+
  * Update windows .bat files to work outside of main Cassandra
    directory (CASSANDRA-1713)
  * fix read repair regression from 0.6.7 (CASSANDRA-1727)

Modified: cassandra/trunk/conf/cassandra.yaml
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/conf/cassandra.yaml?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- cassandra/trunk/conf/cassandra.yaml (original)
+++ cassandra/trunk/conf/cassandra.yaml Thu Dec  2 01:18:49 2010
@@ -61,17 +61,32 @@ saved_caches_directory: /var/lib/cassand
 # Size to allow commitlog to grow to before creating a new segment 
 commitlog_rotation_threshold_in_mb: 128
 
-# commitlog_sync may be either "periodic" or "batch." 
-# When in batch mode, Cassandra won't ack writes until the commit log
-# has been fsynced to disk.  It will wait up to
-# CommitLogSyncBatchWindowInMS milliseconds for other writes, before
-# performing the sync.
+# commitlog_sync supports the following modes:
+# 
+# batch:
+# In batch mode, Cassandra won't ack writes until the commit log
+# has been fsynced to disk.  But fsyncing each write at once is
+# performance-prohibitive, so instead Cassandra will wait up to
+# commitlog_sync_batch_window_in_ms milliseconds for other writes, before
+# syncing that "batch" at once.  This causes a performance penalty
+# of about 15% when the commitlog is on a separate device, and much more
+# when it shares the same device as the data files.
+#
+# periodic:
+# Writes may be acked immediately (without waiting for the commitlog
+# append) and the CommitLog is simply synced every
+# commitlog_sync_period_in_ms milliseconds.
+#
+# periodic_without_flush:
+# Like periodic, but the commitlog write buffer is only flushed
+# before the sync, so any interruption to the process can be
+# expected to lose some writes.  This is the old 0.6 periodic
+# behavior and will be removed in future versions if testing
+# continues to show no performance benefit over normal periodic.
 commitlog_sync: periodic
-
-# the other option is "timed," where writes may be acked immediately
-# and the CommitLog is simply synced every commitlog_sync_period_in_ms
-# milliseconds.
 commitlog_sync_period_in_ms: 10000
+# commitlog_sync: batch
+# commitlog_sync_batch_window_in_ms: 10
 
 # any class that implements the SeedProvider interface and has a constructor 
that takes a Map<String, String> of
 # parameters will do.

Modified: cassandra/trunk/contrib/word_count/src/WordCountSetup.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/contrib/word_count/src/WordCountSetup.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- cassandra/trunk/contrib/word_count/src/WordCountSetup.java (original)
+++ cassandra/trunk/contrib/word_count/src/WordCountSetup.java Thu Dec  2 
01:18:49 2010
@@ -103,6 +103,15 @@ public class WordCountSetup
         cfDefList.add(new CfDef(WordCount.KEYSPACE, 
WordCount.OUTPUT_COLUMN_FAMILY));
 
         client.system_add_keyspace(new KsDef(WordCount.KEYSPACE, 
"org.apache.cassandra.locator.SimpleStrategy", 1, cfDefList));
+        int magnitude = client.describe_ring(WordCount.KEYSPACE).size();
+        try
+        {
+            Thread.sleep(1000 * magnitude);
+        }
+        catch (InterruptedException e)
+        {
+            throw new RuntimeException(e);
+        }
     }
 
     private static Cassandra.Iface createConnection() throws 
TTransportException

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Dec  2 01:18:49 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1040580
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026517-1040581
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1041242
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026517-1041243
 
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573
 
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Cassandra.java:810145-834239,834349-834350
 
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/Cassandra.java:888872-903502

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Dec  2 01:18:49 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1040580
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026517-1040581
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1041242
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026517-1041243
 
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198
 
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/Column.java:810145-834239,834349-834350
 
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/Column.java:888872-903502

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Dec  2 01:18:49 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1040580
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026517-1040581
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1041242
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026517-1041243
 
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573
 
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:810145-834239,834349-834350
 
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:888872-903502

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Dec  2 01:18:49 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1040580
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026517-1040581
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1041242
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026517-1041243
 
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573
 
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:810145-834239,834349-834350
 
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:888872-903502

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Dec  2 01:18:49 2010
@@ -1,5 +1,5 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1040580
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026517-1040581
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1041242
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026517-1041243
 
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198
 
/incubator/cassandra/branches/cassandra-0.4/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:810145-834239,834349-834350
 
/incubator/cassandra/branches/cassandra-0.5/interface/gen-java/org/apache/cassandra/service/SuperColumn.java:888872-903502

Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliClient.java Thu Dec  2 
01:18:49 2010
@@ -89,6 +89,7 @@ public class CliClient extends CliUserHe
         PLACEMENT_STRATEGY,
         STRATEGY_OPTIONS
     }
+    private static final String DEFAULT_PLACEMENT_STRATEGY = 
"org.apache.cassandra.locator.SimpleStrategy";
 
     private Cassandra.Client thriftClient = null;
     private CliSessionState sessionState  = null;
@@ -97,7 +98,6 @@ public class CliClient extends CliUserHe
     private Map<String, KsDef> keyspacesMap = new HashMap<String, KsDef>();
     private Map<String, AbstractType> cfKeysComparators;
     
-    private final String DEFAULT_PLACEMENT_STRATEGY = 
"org.apache.cassandra.locator.SimpleStrategy";
     
     public CliClient(CliSessionState cliSessionState, Cassandra.Client 
thriftClient)
     {

Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/CliOptions.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cli/CliOptions.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cli/CliOptions.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliOptions.java Thu Dec  
2 01:18:49 2010
@@ -27,7 +27,6 @@ import org.apache.commons.cli.*;
 public class CliOptions {
 
     private static Options options = null; // Info about command line options
-    private CommandLine cmd = null;        // Command Line arguments
 
     // Command line options
     private static final String HOST_OPTION = "host";
@@ -72,7 +71,78 @@ public class CliOptions {
         CommandLineParser parser = new PosixParser();
         try
         {
-            cmd = parser.parse(options, args);
+            CommandLine cmd = parser.parse(options, args);
+            
+            if (!cmd.hasOption(HOST_OPTION))
+            {
+                // host name not specified in command line.
+                // In this case, we don't implicitly connect at CLI startup. 
In this case,
+                // the user must use the "connect" CLI statement to connect.
+                //
+                css.hostName = null;
+                
+                // HelpFormatter formatter = new HelpFormatter();
+                // formatter.printHelp("java 
com.facebook.infrastructure.cli.CliMain ", options);
+                // System.exit(1);
+            }
+            else 
+            {
+                css.hostName = cmd.getOptionValue(HOST_OPTION);
+            }
+
+            // Look to see if frame has been specified
+            if (cmd.hasOption(UNFRAME_OPTION))
+            {
+                css.framed = false;
+            }
+
+            // Look to see if frame has been specified
+            if (cmd.hasOption(DEBUG_OPTION))
+            {
+                css.debug = true;
+            }
+
+            // Look for optional args.
+            if (cmd.hasOption(PORT_OPTION))
+            {
+                css.thriftPort = 
Integer.parseInt(cmd.getOptionValue(PORT_OPTION));
+            }
+            else
+            {
+                css.thriftPort = DEFAULT_THRIFT_PORT;
+            }
+         
+            // Look for authentication credentials (username and password)
+            if (cmd.hasOption(USERNAME_OPTION)) 
+            {
+               css.username = cmd.getOptionValue(USERNAME_OPTION);
+            }
+            if (cmd.hasOption(PASSWORD_OPTION))
+            {
+               css.password = cmd.getOptionValue(PASSWORD_OPTION);
+            }
+            
+            // Look for keyspace
+            if (cmd.hasOption(KEYSPACE_OPTION)) 
+            {
+               css.keyspace = cmd.getOptionValue(KEYSPACE_OPTION);
+            }
+            
+            if (cmd.hasOption(BATCH_OPTION))
+            {
+                css.batch = true;
+            }
+
+            if (cmd.hasOption(FILE_OPTION))
+            {
+                css.filename = cmd.getOptionValue(FILE_OPTION);
+            }
+
+            if (cmd.hasOption(HELP_OPTION))
+            {
+                printUsage();
+                System.exit(1);
+            }
         }
         catch (ParseException e)
         {
@@ -80,77 +150,5 @@ public class CliOptions {
             System.err.println("\n" + e.getMessage());
             System.exit(1);
         }
-
-        if (!cmd.hasOption(HOST_OPTION))
-        {
-            // host name not specified in command line.
-            // In this case, we don't implicitly connect at CLI startup. In 
this case,
-            // the user must use the "connect" CLI statement to connect.
-            //
-            css.hostName = null;
-            
-            // HelpFormatter formatter = new HelpFormatter();
-            // formatter.printHelp("java 
com.facebook.infrastructure.cli.CliMain ", options);
-            // System.exit(1);
-        }
-        else 
-        {
-            css.hostName = cmd.getOptionValue(HOST_OPTION);
-        }
-
-        // Look to see if frame has been specified
-        if (cmd.hasOption(UNFRAME_OPTION))
-        {
-            css.framed = false;
-        }
-
-        // Look to see if frame has been specified
-        if (cmd.hasOption(DEBUG_OPTION))
-        {
-            css.debug = true;
-        }
-
-        // Look for optional args.
-        if (cmd.hasOption(PORT_OPTION))
-        {
-            css.thriftPort = Integer.parseInt(cmd.getOptionValue(PORT_OPTION));
-        }
-        else
-        {
-            css.thriftPort = DEFAULT_THRIFT_PORT;
-        }
-     
-        // Look for authentication credentials (username and password)
-        if (cmd.hasOption(USERNAME_OPTION)) 
-        {
-               css.username = cmd.getOptionValue(USERNAME_OPTION);
-        }
-        if (cmd.hasOption(PASSWORD_OPTION))
-        {
-               css.password = cmd.getOptionValue(PASSWORD_OPTION);
-        }
-        
-        // Look for keyspace
-        if (cmd.hasOption(KEYSPACE_OPTION)) 
-        {
-               css.keyspace = cmd.getOptionValue(KEYSPACE_OPTION);
-        }
-        
-        if (cmd.hasOption(BATCH_OPTION))
-        {
-            css.batch = true;
-        }
-
-        if (cmd.hasOption(FILE_OPTION))
-        {
-            css.filename = cmd.getOptionValue(FILE_OPTION);
-        }
-
-        if (cmd.hasOption(HELP_OPTION))
-        {
-            printUsage();
-            System.exit(1);
-        }
-
     }
 }

Modified: cassandra/trunk/src/java/org/apache/cassandra/config/Config.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/Config.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/config/Config.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/config/Config.java Thu Dec  2 
01:18:49 2010
@@ -105,7 +105,8 @@ public class Config
     
     public static enum CommitLogSync {
         periodic,
-        batch
+        batch,
+        periodic_without_flush
     }
     
     public static enum DiskAccessMode {

Modified: cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamily.java Thu Dec  
2 01:18:49 2010
@@ -24,7 +24,6 @@ import java.security.NoSuchAlgorithmExce
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.Map;
-import java.util.Set;
 import java.util.SortedSet;
 import java.util.concurrent.ConcurrentSkipListMap;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -302,11 +301,11 @@ public class ColumnFamily implements ICo
         // the delete tombstone, since cfNew was generated by CF.resolve, which
         // takes care of those for us.)
         Map<ByteBuffer, IColumn> columns = cfComposite.getColumnsMap();
-        Set<ByteBuffer> cNames = columns.keySet();
-        for (ByteBuffer cName : cNames)
+        for (Map.Entry<ByteBuffer, IColumn> entry : columns.entrySet())
         {
+            ByteBuffer cName = entry.getKey();
             IColumn columnInternal = this.columns.get(cName);
-            IColumn columnExternal = columns.get(cName);
+            IColumn columnExternal = entry.getValue();
             if (columnInternal == null)
             {
                 cfDiff.addColumn(columnExternal);

Modified: cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/Memtable.java Thu Dec  2 
01:18:49 2010
@@ -257,7 +257,6 @@ public class Memtable implements Compara
         return new SimpleAbstractColumnIterator()
         {
             private Iterator<ByteBuffer> iter = filter.columns.iterator();
-            private ByteBuffer current;
 
             public ColumnFamily getColumnFamily()
             {
@@ -273,7 +272,7 @@ public class Memtable implements Compara
             {
                 while (iter.hasNext())
                 {
-                    current = iter.next();
+                    ByteBuffer current = iter.next();
                     IColumn column = cf.getColumn(current);
                     if (column != null)
                         // clone supercolumns so caller can freely 
removeDeleted or otherwise mutate it

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLog.java 
Thu Dec  2 01:18:49 2010
@@ -112,7 +112,11 @@ public class CommitLog
         // All we need to do is create a new one.
         segments.add(new CommitLogSegment());
 
-        if (DatabaseDescriptor.getCommitLogSync() == 
Config.CommitLogSync.periodic)
+        if (DatabaseDescriptor.getCommitLogSync() == 
Config.CommitLogSync.batch)
+        {
+            executor = new BatchCommitLogExecutorService();
+        }
+        else
         {
             executor = new PeriodicCommitLogExecutorService();
             final Callable syncer = new Callable()
@@ -147,10 +151,6 @@ public class CommitLog
                 }
             }, "PERIODIC-COMMIT-LOG-SYNCER").start();
         }
-        else
-        {
-            executor = new BatchCommitLogExecutorService();
-        }
     }
 
     public void resetUnsafe()
@@ -490,6 +490,7 @@ public class CommitLog
 
     // TODO this should be a Runnable since it doesn't actually return 
anything, but it's difficult to do that
     // without breaking the fragile CheaterFutureTask in BatchCLES.
+    final static boolean flushEachWrite = 
DatabaseDescriptor.getCommitLogSync() == Config.CommitLogSync.periodic;
     class LogRecordAdder implements Callable, Runnable
     {
         final RowMutation rowMutation;
@@ -512,6 +513,10 @@ public class CommitLog
                     sync();
                     segments.add(new CommitLogSegment());
                 }
+                else if (flushEachWrite)
+                {
+                    currentSegment().flush();
+                }
             }
             catch (IOException e)
             {

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLogSegment.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLogSegment.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLogSegment.java
 (original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/db/commitlog/CommitLogSegment.java
 Thu Dec  2 01:18:49 2010
@@ -140,6 +140,11 @@ public class CommitLogSegment
         logWriter.sync();
     }
 
+    public void flush() throws IOException
+    {
+        logWriter.flush();
+    }
+
     public CommitLogContext getContext()
     {
         return new CommitLogContext(logWriter.getFilePointer());

Modified: cassandra/trunk/src/java/org/apache/cassandra/dht/AbstractBounds.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/dht/AbstractBounds.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/dht/AbstractBounds.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/dht/AbstractBounds.java Thu 
Dec  2 01:18:49 2010
@@ -66,7 +66,7 @@ public abstract class AbstractBounds imp
      */
     public Pair<AbstractBounds,AbstractBounds> split(Token token)
     {
-        assert contains(token);
+        assert left.equals(token) || contains(token);
         AbstractBounds lb = createFrom(token);
         // we contain this token, so only one of the left or right can be empty
         AbstractBounds rb = lb != null && token.equals(right) ? null : new 
Range(token, right);

Modified: cassandra/trunk/src/java/org/apache/cassandra/gms/Gossiper.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/gms/Gossiper.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/gms/Gossiper.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/gms/Gossiper.java Thu Dec  2 
01:18:49 2010
@@ -420,7 +420,7 @@ public class Gossiper implements IFailur
         
         if (!justRemovedEndpoints_.isEmpty())
         {
-            Hashtable<InetAddress, Long> copy = new Hashtable<InetAddress, 
Long>(justRemovedEndpoints_);
+            Map<InetAddress, Long> copy = new HashMap<InetAddress, 
Long>(justRemovedEndpoints_);
             for (Map.Entry<InetAddress, Long> entry : copy.entrySet())
             {
                 if ((now - entry.getValue()) > StorageService.RING_DELAY)

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableScanner.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableScanner.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableScanner.java 
(original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableScanner.java 
Thu Dec  2 01:18:49 2010
@@ -142,7 +142,6 @@ public class SSTableScanner implements I
 
     private class KeyScanningIterator implements Iterator<IColumnIterator>
     {
-        private long dataStart;
         private long finishedAt;
 
         public boolean hasNext()
@@ -171,7 +170,7 @@ public class SSTableScanner implements I
                                                            sstable.descriptor,
                                                            
FBUtilities.readShortByteArray(file));
                 long dataSize = SSTableReader.readRowSize(file, 
sstable.descriptor);
-                dataStart = file.getFilePointer();
+                long dataStart = file.getFilePointer();
                 finishedAt = dataStart + dataSize;
 
                 if (filter == null)

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableWriter.java 
Thu Dec  2 01:18:49 2010
@@ -183,7 +183,6 @@ public class SSTableWriter extends SSTab
         // remove the 'tmp' marker from all components
         final Descriptor newdesc = rename(descriptor, components);
 
-
         // finalize in-memory state for the reader
         SegmentedFile ifile = 
iwriter.builder.complete(newdesc.filenameFor(SSTable.COMPONENT_INDEX));
         SegmentedFile dfile = 
dbuilder.complete(newdesc.filenameFor(SSTable.COMPONENT_DATA));

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/io/util/BufferedRandomAccessFile.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/util/BufferedRandomAccessFile.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/io/util/BufferedRandomAccessFile.java
 (original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/io/util/BufferedRandomAccessFile.java
 Thu Dec  2 01:18:49 2010
@@ -19,10 +19,8 @@
 package org.apache.cassandra.io.util;
 
 import java.io.File;
-import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.RandomAccessFile;
-import java.util.Arrays;
 
 /**
  * A <code>BufferedRandomAccessFile</code> is like a
@@ -168,7 +166,7 @@ public class BufferedRandomAccessFile ex
     {
         if (syncNeeded_)
         {
-            flushBuffer();
+            flush();
             getChannel().force(true); // true, because file length counts as 
"metadata"
             syncNeeded_ = false;
         }
@@ -182,7 +180,7 @@ public class BufferedRandomAccessFile ex
     }
     
     /* Flush any dirty bytes in the buffer to disk. */
-    private void flushBuffer() throws IOException
+    public void flush() throws IOException
     {   
         if (this.dirty_)
         {
@@ -229,7 +227,7 @@ public class BufferedRandomAccessFile ex
      */
     private void reBuffer() throws IOException
     {
-        this.flushBuffer();
+        this.flush();
         this.lo_ = this.curr_;
         this.maxHi_ = this.lo_ + (long) this.buff_.length;
         if (this.diskPos_ != this.lo_)

Modified: cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/io/util/FileUtils.java Thu 
Dec  2 01:18:49 2010
@@ -75,7 +75,14 @@ public class FileUtils
         {
             throw new RuntimeException(e);
         }
-        file.getChannel().truncate(size);
+        try
+        {
+            file.getChannel().truncate(size);
+        }
+        finally
+        {
+            file.close();
+        }
     }
 
     public static class FileComparator implements Comparator<File>

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
 (original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
 Thu Dec  2 01:18:49 2010
@@ -214,14 +214,12 @@ public class DynamicEndpointSnitch exten
 /** a threadsafe version of BoundedStatsDeque+ArrivalWindow with modification 
for arbitrary times **/
 class AdaptiveLatencyTracker extends AbstractStatsDeque
 {
-    private LinkedBlockingDeque latencies;
-    private final int size;                                   
+    private LinkedBlockingDeque<Double> latencies;                             
     
     private static double SENTINEL_COMPARE = 0.0001; // arbitrary; as long as 
it is the same across hosts it doesn't matter
 
     AdaptiveLatencyTracker(int size)
     {
-        this.size = size;
-        latencies = new LinkedBlockingDeque(size);
+        latencies = new LinkedBlockingDeque<Double>(size);
     }
 
     public void add(double i)

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/net/OutboundTcpConnection.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/net/OutboundTcpConnection.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/net/OutboundTcpConnection.java 
(original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/net/OutboundTcpConnection.java 
Thu Dec  2 01:18:49 2010
@@ -113,6 +113,7 @@ public class OutboundTcpConnection exten
         catch (IOException e)
         {
             logger.info("error writing to " + endpoint);
+            logger.debug("error was ", e);
             disconnect();
         }
     }

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/StorageProxy.java Thu 
Dec  2 01:18:49 2010
@@ -578,7 +578,7 @@ public class StorageProxy implements Sto
         while (ringIter.hasNext())
         {
             Token token = ringIter.next();
-            if (remainder == null || !remainder.contains(token))
+            if (remainder == null || !(remainder.left.equals(token) || 
remainder.contains(token)))
                 // no more splits
                 break;
             Pair<AbstractBounds,AbstractBounds> splits = 
remainder.split(token);

Modified: cassandra/trunk/src/java/org/apache/cassandra/tools/ClusterCmd.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/tools/ClusterCmd.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/tools/ClusterCmd.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/tools/ClusterCmd.java Thu Dec 
 2 01:18:49 2010
@@ -42,8 +42,6 @@ public class ClusterCmd {
     private static Options options = null;
     private CommandLine cmd = null;
     private NodeProbe probe;
-    private String host;
-    private int port;
 
     static
     {
@@ -64,14 +62,15 @@ public class ClusterCmd {
     private ClusterCmd(String[] cmdArgs) throws ParseException, IOException, 
InterruptedException
     {
         parseArgs(cmdArgs);
-        this.host = cmd.getOptionValue(HOST_OPT_SHORT);
+        String host = cmd.getOptionValue(HOST_OPT_SHORT);
 
         String portNum = cmd.getOptionValue(PORT_OPT_SHORT);
+        int port;
         if (portNum != null)
         {
             try
             {
-                this.port = Integer.parseInt(portNum);
+                port = Integer.parseInt(portNum);
             }
             catch (NumberFormatException e)
             {
@@ -80,7 +79,7 @@ public class ClusterCmd {
         }
         else
         {
-            this.port = defaultPort;
+            port = defaultPort;
         }
 
         probe = new NodeProbe(host, port);
@@ -95,8 +94,6 @@ public class ClusterCmd {
      */
     public ClusterCmd(String host, int port) throws IOException, 
InterruptedException
     {
-        this.host = host;
-        this.port = port;
         probe = new NodeProbe(host, port);
     }
 
@@ -170,7 +167,7 @@ public class ClusterCmd {
         {
             try
             {
-                NodeProbe hostProbe = new NodeProbe(liveNode, port);
+                NodeProbe hostProbe = new NodeProbe(liveNode, probe.port);
                 hostProbe.takeSnapshot(snapshotName);
                 System.out.println(liveNode + " snapshot taken");
             }
@@ -190,7 +187,7 @@ public class ClusterCmd {
         {
             try
             {
-                NodeProbe hostProbe = new NodeProbe(liveNode, port);
+                NodeProbe hostProbe = new NodeProbe(liveNode, probe.port);
                 hostProbe.clearSnapshot();
                 System.out.println(liveNode + " snapshot cleared");
             }

Modified: cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java Thu Dec  
2 01:18:49 2010
@@ -67,8 +67,8 @@ public class NodeProbe
     private static final String fmtUrl = 
"service:jmx:rmi:///jndi/rmi://%s:%d/jmxrmi";
     private static final String ssObjName = 
"org.apache.cassandra.db:type=StorageService";
     private static final int defaultPort = 8080;
-    private String host;
-    private int port;
+    final String host;
+    final int port;
 
     private JMXConnector jmxc;
     private MBeanServerConnection mbeanServerConn;

Modified: 
cassandra/trunk/test/unit/org/apache/cassandra/locator/SimpleStrategyTest.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/locator/SimpleStrategyTest.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- 
cassandra/trunk/test/unit/org/apache/cassandra/locator/SimpleStrategyTest.java 
(original)
+++ 
cassandra/trunk/test/unit/org/apache/cassandra/locator/SimpleStrategyTest.java 
Thu Dec  2 01:18:49 2010
@@ -27,18 +27,19 @@ import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 
-import org.apache.cassandra.config.ConfigurationException;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
-import org.apache.cassandra.SchemaLoader;
+import org.apache.cassandra.CleanupHelper;
+import org.apache.cassandra.config.ConfigurationException;
 import org.apache.cassandra.config.DatabaseDescriptor;
 import org.apache.cassandra.db.Table;
 import org.apache.cassandra.dht.*;
 import org.apache.cassandra.service.StorageService;
 import org.apache.cassandra.service.StorageServiceAccessor;
 
-public class SimpleStrategyTest extends SchemaLoader
+import static org.junit.Assert.*;
+
+public class SimpleStrategyTest extends CleanupHelper
 {
     @Test
     public void tryValidTable()

Modified: 
cassandra/trunk/test/unit/org/apache/cassandra/service/StorageProxyTest.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/service/StorageProxyTest.java?rev=1041244&r1=1041243&r2=1041244&view=diff
==============================================================================
--- 
cassandra/trunk/test/unit/org/apache/cassandra/service/StorageProxyTest.java 
(original)
+++ 
cassandra/trunk/test/unit/org/apache/cassandra/service/StorageProxyTest.java 
Thu Dec  2 01:18:49 2010
@@ -96,8 +96,9 @@ public class StorageProxyTest extends Cl
         // full wraps
         testGRR(range("0", "0"), range("0", "1"), range("1", "6"), range("6", 
""), range("", "0"));
         testGRR(range("", ""), range("", "1"), range("1", "6"), range("6", 
""));
-        // wrap on member token
+        // wrap on member tokens
         testGRR(range("6", "6"), range("6", ""), range("", "1"), range("1", 
"6"));
+        testGRR(range("6", "1"), range("6", ""), range("", "1"));
         // end wrapped
         testGRR(range("5", ""), range("5", "6"), range("6", ""));
     }


Reply via email to