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", ""));
}