[jira] [Commented] (CASSANDRA-7066) Simplify (and unify) cleanup of compaction leftovers

2015-08-09 Thread Stefania (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-7066?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14663280#comment-14663280
 ] 

Stefania commented on CASSANDRA-7066:
-

Thanks, let's move the discussion to CASSANDRA-10006.

 Simplify (and unify) cleanup of compaction leftovers
 

 Key: CASSANDRA-7066
 URL: https://issues.apache.org/jira/browse/CASSANDRA-7066
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Benedict
Assignee: Stefania
Priority: Minor
  Labels: benedict-to-commit, compaction
 Fix For: 3.0 alpha 1

 Attachments: 7066.txt


 Currently we manage a list of in-progress compactions in a system table, 
 which we use to cleanup incomplete compactions when we're done. The problem 
 with this is that 1) it's a bit clunky (and leaves us in positions where we 
 can unnecessarily cleanup completed files, or conversely not cleanup files 
 that have been superceded); and 2) it's only used for a regular compaction - 
 no other compaction types are guarded in the same way, so can result in 
 duplication if we fail before deleting the replacements.
 I'd like to see each sstable store in its metadata its direct ancestors, and 
 on startup we simply delete any sstables that occur in the union of all 
 ancestor sets. This way as soon as we finish writing we're capable of 
 cleaning up any leftovers, so we never get duplication. It's also much easier 
 to reason about.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-10006) 2.1 format sstable filenames with tmp are not handled by 3.0

2015-08-09 Thread Stefania (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-10006?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14663283#comment-14663283
 ] 

Stefania commented on CASSANDRA-10006:
--

What are the valid upgrade paths to 3.0? Can we do 2.1 - 3.0 and 2.0 - 3.0 as 
well? In CASSANDRA-7066 I only assumed 2.2 - 3.0, hence the problem. I do 
agree there is an issue on folder names though, see [this 
comment|https://issues.apache.org/jira/browse/CASSANDRA-7066?focusedCommentId=14661942page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14661942],
 I'll fix this. 

 2.1 format sstable filenames with tmp are not handled by 3.0
 --

 Key: CASSANDRA-10006
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10006
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Tyler Hobbs
Assignee: Stefania
 Fix For: 3.0 beta 1


 In 3.0, {{Descriptor.fromFilename()}} doesn't handle tmp in sstable 
 filenames in the 2.1 (ka) format.  If you start 3.0 with one of these 
 filenames, you'll see an exception like the following:
 {noformat}
 ERROR [main] 2015-08-05 10:15:57,872 CassandraDaemon.java:623 - Exception 
 encountered during startup
 java.lang.AssertionError: Invalid file name 
 system-schema_columns-tmp-ka-5-Filter.db in 
 /tmp/dtest-Jstsy2/test/node1/data/system/schema_columns-296e9c049bec3085827dc17d3df2122a
 at 
 org.apache.cassandra.io.sstable.Descriptor.fromFilename(Descriptor.java:291) 
 ~[main/:na]
 at 
 org.apache.cassandra.io.sstable.Descriptor.fromFilename(Descriptor.java:190) 
 ~[main/:na]
 at 
 org.apache.cassandra.service.StartupChecks$7$1.visitFile(StartupChecks.java:226)
  ~[main/:na]
 at 
 org.apache.cassandra.service.StartupChecks$7$1.visitFile(StartupChecks.java:218)
  ~[main/:na]
 at java.nio.file.Files.walkFileTree(Files.java:2670) ~[na:1.8.0_45]
 at java.nio.file.Files.walkFileTree(Files.java:2742) ~[na:1.8.0_45]
 at 
 org.apache.cassandra.service.StartupChecks$7.execute(StartupChecks.java:251) 
 ~[main/:na]
 at 
 org.apache.cassandra.service.StartupChecks.verify(StartupChecks.java:103) 
 ~[main/:na]
 at 
 org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:163) 
 [main/:na]
 at 
 org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:504)
  [main/:na]
 at 
 org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:610) 
 [main/:na]
 {noformat}
 I can reliably reproduce this with an [upgrade 
 dtest|https://github.com/thobbs/cassandra-dtest/blob/8099-backwards-compat/upgrade_tests/cql_tests.py#L5126-L5162]
  from CASSANDRA-9704, but it should also be reproducible by simply starting 
 3.0 with a filename like the one from the error message.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-9459) SecondaryIndex API redesign

2015-08-09 Thread Robert Stupp (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-9459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14663284#comment-14663284
 ] 

Robert Stupp commented on CASSANDRA-9459:
-

Will the new API also provide a unique ID per 2i and base table? Currently we 
have {{UUID cfId}} unique per base table. The only way to identify a 2i (and 
distinguish from the base table) is to check whether a {{.}} is in cfName as 
done throughout the code using {{.contains(.)}}. (I'm not sure how far this 
is addressed in CASSANDRA-9712)

 SecondaryIndex API redesign
 ---

 Key: CASSANDRA-9459
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9459
 Project: Cassandra
  Issue Type: Improvement
Reporter: Sam Tunnicliffe
Assignee: Sam Tunnicliffe
 Fix For: 3.0 beta 1


 For some time now the index subsystem has been a pain point and in large part 
 this is due to the way that the APIs and principal classes have grown 
 organically over the years. It would be a good idea to conduct a wholesale 
 review of the area and see if we can come up with something a bit more 
 coherent.
 A few starting points:
 * There's a lot in AbstractPerColumnSecondaryIndex  its subclasses which 
 could be pulled up into SecondaryIndexSearcher (note that to an extent, this 
 is done in CASSANDRA-8099).
 * SecondayIndexManager is overly complex and several of its functions should 
 be simplified/re-examined. The handling of which columns are indexed and 
 index selection on both the read and write paths are somewhat dense and 
 unintuitive.
 * The SecondaryIndex class hierarchy is rather convoluted and could use some 
 serious rework.
 There are a number of outstanding tickets which we should be able to roll 
 into this higher level one as subtasks (but I'll defer doing that until 
 getting into the details of the redesign):
 * CASSANDRA-7771
 * CASSANDRA-8103
 * CASSANDRA-9041
 * CASSANDRA-4458
 * CASSANDRA-8505
 Whilst they're not hard dependencies, I propose that this be done on top of 
 both CASSANDRA-8099 and CASSANDRA-6717. The former largely because the 
 storage engine changes may facilitate a friendlier index API, but also 
 because of the changes to SIS mentioned above. As for 6717, the changes to 
 schema tables there will help facilitate CASSANDRA-7771.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-9712) Refactor CFMetaData

2015-08-09 Thread Robert Stupp (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-9712?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14663285#comment-14663285
 ] 

Robert Stupp commented on CASSANDRA-9712:
-

Will step #2 also give us IDs for base table and each 2i? (see [my 
comment|https://issues.apache.org/jira/browse/CASSANDRA-9459?focusedCommentId=14663284page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14663284]
 in CASSANDRA-9495)

 Refactor CFMetaData
 ---

 Key: CASSANDRA-9712
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9712
 Project: Cassandra
  Issue Type: Improvement
Reporter: Aleksey Yeschenko
Assignee: Aleksey Yeschenko
 Fix For: 3.x


 As part of CASSANDRA-9425 and a follow-up to CASSANDRA-9665, and a 
 pre-requisite for new schema change protocol, this ticket will do the 
 following
 1. Make the triggers {{HashMap}} immutable (new {{Triggers}} class)
 2. Allow multiple 2i definitions per column in CFMetaData
 3. to be filled in
 4. Rename and move {{config.CFMetaData}} to {{schema.TableMetadata}}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-5543) Ant issues when building gen-cql2-grammar

2015-08-09 Thread Robert Stupp (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-5543?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14663293#comment-14663293
 ] 

Robert Stupp commented on CASSANDRA-5543:
-

Is this still an issue (e.g. for cql3)?

 Ant issues when building gen-cql2-grammar
 -

 Key: CASSANDRA-5543
 URL: https://issues.apache.org/jira/browse/CASSANDRA-5543
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.2.3
Reporter: Joaquin Casares
Assignee: Dave Brosius
Priority: Trivial
 Attachments: 5543-ant.log


 Below are the commands and outputs that were returned.
 The first `ant` command fails on gen-cql2-grammar, but if I don't run `ant 
 realclean` then it works fine after a second pass.
 {CODE}
 ubuntu@ip-10-196-153-29:~/.ccm/repository/1.2.3$ ant realclean
 Buildfile: /home/ubuntu/.ccm/repository/1.2.3/build.xml
 clean:
[delete] Deleting directory /home/ubuntu/.ccm/repository/1.2.3/build/test
[delete] Deleting directory 
 /home/ubuntu/.ccm/repository/1.2.3/build/classes
[delete] Deleting directory /home/ubuntu/.ccm/repository/1.2.3/src/gen-java
[delete] Deleting: /home/ubuntu/.ccm/repository/1.2.3/build/internode.avpr
 realclean:
[delete] Deleting directory /home/ubuntu/.ccm/repository/1.2.3/build
 BUILD SUCCESSFUL
 Total time: 0 seconds
 {CODE}
 {CODE}
 ubuntu@ip-10-196-153-29:~/.ccm/repository/1.2.3$ ant
 Buildfile: /home/ubuntu/.ccm/repository/1.2.3/build.xml
 maven-ant-tasks-localrepo:
 maven-ant-tasks-download:
  [echo] Downloading Maven ANT Tasks...
 [mkdir] Created dir: /home/ubuntu/.ccm/repository/1.2.3/build
   [get] Getting: 
 http://repo2.maven.org/maven2/org/apache/maven/maven-ant-tasks/2.1.3/maven-ant-tasks-2.1.3.jar
   [get] To: 
 /home/ubuntu/.ccm/repository/1.2.3/build/maven-ant-tasks-2.1.3.jar
 maven-ant-tasks-init:
 [mkdir] Created dir: /home/ubuntu/.ccm/repository/1.2.3/build/lib
 maven-declare-dependencies:
 maven-ant-tasks-retrieve-build:
 [artifact:dependencies] Downloading: asm/asm/3.2/asm-3.2-sources.jar from 
 repository central at http://repo1.maven.org/maven2
 
 [artifact:dependencies] [INFO] Unable to find resource 
 'hsqldb:hsqldb:java-source:sources:1.8.0.10' in repository java.net2 
 (http://download.java.net/maven/2)
 [artifact:dependencies] Building ant file: 
 /home/ubuntu/.ccm/repository/1.2.3/build/build-dependencies.xml
  [copy] Copying 45 files to 
 /home/ubuntu/.ccm/repository/1.2.3/build/lib/jars
  [copy] Copying 35 files to 
 /home/ubuntu/.ccm/repository/1.2.3/build/lib/sources
 init:
 [mkdir] Created dir: /home/ubuntu/.ccm/repository/1.2.3/build/classes/main
 [mkdir] Created dir: 
 /home/ubuntu/.ccm/repository/1.2.3/build/classes/thrift
 [mkdir] Created dir: /home/ubuntu/.ccm/repository/1.2.3/build/test/lib
 [mkdir] Created dir: /home/ubuntu/.ccm/repository/1.2.3/build/test/classes
 [mkdir] Created dir: /home/ubuntu/.ccm/repository/1.2.3/src/gen-java
 check-avro-generate:
 avro-interface-generate-internode:
  [echo] Generating Avro internode code...
 avro-generate:
 build-subprojects:
 check-gen-cli-grammar:
 gen-cli-grammar:
  [echo] Building Grammar 
 /home/ubuntu/.ccm/repository/1.2.3/src/java/org/apache/cassandra/cli/Cli.g  
 
 check-gen-cql2-grammar:
 gen-cql2-grammar:
  [echo] Building Grammar 
 /home/ubuntu/.ccm/repository/1.2.3/src/java/org/apache/cassandra/cql/Cql.g  
 ...
  [java] warning(200): 
 /home/ubuntu/.ccm/repository/1.2.3/src/java/org/apache/cassandra/cql/Cql.g:479:20:
  Decision can match input such as IDENT using multiple alternatives: 1, 2
  [java] As a result, alternative(s) 2 were disabled for that input
  [java] warning(200): 
 /home/ubuntu/.ccm/repository/1.2.3/src/java/org/apache/cassandra/cql/Cql.g:479:20:
  Decision can match input such as K_KEY using multiple alternatives: 1, 2
  [java] As a result, alternative(s) 2 were disabled for that input
  [java] warning(200): 
 /home/ubuntu/.ccm/repository/1.2.3/src/java/org/apache/cassandra/cql/Cql.g:479:20:
  Decision can match input such as QMARK using multiple alternatives: 1, 2
  [java] As a result, alternative(s) 2 were disabled for that input
  [java] warning(200): 
 /home/ubuntu/.ccm/repository/1.2.3/src/java/org/apache/cassandra/cql/Cql.g:479:20:
  Decision can match input such as FLOAT using multiple alternatives: 1, 2
  [java] As a result, alternative(s) 2 were disabled for that input
  [java] warning(200): 
 /home/ubuntu/.ccm/repository/1.2.3/src/java/org/apache/cassandra/cql/Cql.g:479:20:
  Decision can match input such as STRING_LITERAL using multiple 
 alternatives: 1, 2
  [java] As a result, alternative(s) 2 were disabled for that input
  [java] warning(200): 
 

[03/10] cassandra git commit: Ensure commit log stop policy is enforced at startup

2015-08-09 Thread benedict
Ensure commit log stop policy is enforced at startup

patch by paulo; reviewed by benedict for CASSANDRA-8515


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

Branch: refs/heads/cassandra-3.0
Commit: 3b7934f1aa20d2210866afd9b88472e9cb1aed8d
Parents: 98a08eb
Author: Paulo Motta pauloricard...@gmail.com
Authored: Mon Jul 13 19:35:50 2015 -0300
Committer: Benedict Elliott Smith bened...@apache.org
Committed: Sun Aug 9 09:34:05 2015 +0200

--
 .../cassandra/service/CassandraDaemon.java  |   7 ++
 .../cassandra/utils/JVMStabilityInspector.java  |   9 +-
 .../org/apache/cassandra/db/CommitLogTest.java  | 110 +++
 .../apache/cassandra/utils/KillerForTests.java  |  11 +-
 4 files changed, 134 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/3b7934f1/src/java/org/apache/cassandra/service/CassandraDaemon.java
--
diff --git a/src/java/org/apache/cassandra/service/CassandraDaemon.java 
b/src/java/org/apache/cassandra/service/CassandraDaemon.java
index 2c141a6..d078203 100644
--- a/src/java/org/apache/cassandra/service/CassandraDaemon.java
+++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java
@@ -34,6 +34,7 @@ import javax.management.remote.JMXConnectorServer;
 import javax.management.remote.JMXServiceURL;
 import javax.management.remote.rmi.RMIConnectorServer;
 
+import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Iterables;
 import com.google.common.util.concurrent.Uninterruptibles;
 import org.slf4j.Logger;
@@ -425,6 +426,12 @@ public class CassandraDaemon
 int nativePort = DatabaseDescriptor.getNativeTransportPort();
 nativeServer = new org.apache.cassandra.transport.Server(nativeAddr, 
nativePort);
 
+completeSetup();
+}
+
+@VisibleForTesting
+public void completeSetup()
+{
 setupCompleted = true;
 }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3b7934f1/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
--
diff --git a/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java 
b/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
index c0ab84f..de396bb 100644
--- a/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
+++ b/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
@@ -28,7 +28,9 @@ import org.apache.cassandra.config.Config;
 import org.apache.cassandra.config.DatabaseDescriptor;
 import org.apache.cassandra.io.FSError;
 import org.apache.cassandra.io.sstable.CorruptSSTableException;
+import org.apache.cassandra.service.CassandraDaemon;
 import org.apache.cassandra.service.StorageService;
+import org.apache.cassandra.thrift.Cassandra;
 
 /**
  * Responsible for deciding whether to kill the JVM if it gets in an 
unstable state (think OOM).
@@ -38,6 +40,7 @@ public final class JVMStabilityInspector
 private static final Logger logger = 
LoggerFactory.getLogger(JVMStabilityInspector.class);
 private static Killer killer = new Killer();
 
+
 private JVMStabilityInspector() {}
 
 /**
@@ -66,7 +69,11 @@ public final class JVMStabilityInspector
 
 public static void inspectCommitLogThrowable(Throwable t)
 {
-if (DatabaseDescriptor.getCommitFailurePolicy() == 
Config.CommitFailurePolicy.die)
+if (!StorageService.instance.isSetupCompleted())
+{
+logger.error(Exiting due to error while processing commit log 
during initialization., t);
+killer.killCurrentJVM(t, true);
+} else if (DatabaseDescriptor.getCommitFailurePolicy() == 
Config.CommitFailurePolicy.die)
 killer.killCurrentJVM(t);
 else
 inspectThrowable(t);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3b7934f1/test/unit/org/apache/cassandra/db/CommitLogTest.java
--
diff --git a/test/unit/org/apache/cassandra/db/CommitLogTest.java 
b/test/unit/org/apache/cassandra/db/CommitLogTest.java
index 9a8a1dc..1c3daab 100644
--- a/test/unit/org/apache/cassandra/db/CommitLogTest.java
+++ b/test/unit/org/apache/cassandra/db/CommitLogTest.java
@@ -35,6 +35,7 @@ import org.apache.cassandra.config.Config;
 import org.apache.cassandra.config.DatabaseDescriptor;
 import org.apache.cassandra.db.commitlog.CommitLog;
 import org.apache.cassandra.db.commitlog.CommitLogDescriptor;
+import org.apache.cassandra.db.commitlog.CommitLogSegmentManager;
 import 

[07/10] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2015-08-09 Thread benedict
Merge branch 'cassandra-2.1' into cassandra-2.2

Conflicts:
src/java/org/apache/cassandra/service/CassandraDaemon.java
test/unit/org/apache/cassandra/db/CommitLogTest.java


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

Branch: refs/heads/trunk
Commit: 0871533945b19bb5ccf96ab7a28233cadd537a59
Parents: 6fd41ab 3b7934f
Author: Benedict Elliott Smith bened...@apache.org
Authored: Sun Aug 9 09:40:09 2015 +0200
Committer: Benedict Elliott Smith bened...@apache.org
Committed: Sun Aug 9 09:40:09 2015 +0200

--
 .../cassandra/service/CassandraDaemon.java  |   8 +
 .../cassandra/utils/JVMStabilityInspector.java  |   9 +-
 .../org/apache/cassandra/db/CommitLogTest.java  | 159 ++-
 .../apache/cassandra/utils/KillerForTests.java  |  11 +-
 4 files changed, 182 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/08715339/src/java/org/apache/cassandra/service/CassandraDaemon.java
--
diff --cc src/java/org/apache/cassandra/service/CassandraDaemon.java
index 10aa4b2,d078203..2020201
--- a/src/java/org/apache/cassandra/service/CassandraDaemon.java
+++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java
@@@ -37,11 -34,9 +37,13 @@@ import javax.management.remote.JMXConne
  import javax.management.remote.JMXServiceURL;
  import javax.management.remote.rmi.RMIConnectorServer;
  
 +import com.codahale.metrics.Meter;
 +import com.codahale.metrics.MetricRegistryListener;
 +import com.codahale.metrics.SharedMetricRegistries;
+ import com.google.common.annotations.VisibleForTesting;
+ import com.google.common.collect.Iterables;
  import com.google.common.util.concurrent.Uninterruptibles;
 +import org.apache.cassandra.metrics.DefaultNameFactory;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  

http://git-wip-us.apache.org/repos/asf/cassandra/blob/08715339/test/unit/org/apache/cassandra/db/CommitLogTest.java
--
diff --cc test/unit/org/apache/cassandra/db/CommitLogTest.java
index c53d371,1c3daab..536f0cb
--- a/test/unit/org/apache/cassandra/db/CommitLogTest.java
+++ b/test/unit/org/apache/cassandra/db/CommitLogTest.java
@@@ -19,74 -19,42 +19,82 @@@
  
  package org.apache.cassandra.db;
  
 -import java.io.*;
 +import static org.apache.cassandra.utils.ByteBufferUtil.bytes;
 +
 +import java.io.ByteArrayOutputStream;
 +import java.io.DataOutputStream;
 +import java.io.File;
 +import java.io.FileOutputStream;
 +import java.io.IOException;
 +import java.io.OutputStream;
  import java.nio.ByteBuffer;
 +import java.util.HashMap;
 +import java.util.Map;
  import java.util.UUID;
+ import java.util.concurrent.ExecutionException;
  import java.util.zip.CRC32;
  import java.util.zip.Checksum;
  
 +import com.google.common.collect.ImmutableMap;
 +
  import org.junit.Assert;
 +import org.junit.BeforeClass;
  import org.junit.Test;
 -
  import org.apache.cassandra.SchemaLoader;
  import org.apache.cassandra.Util;
+ import org.apache.cassandra.config.Config;
  import org.apache.cassandra.config.DatabaseDescriptor;
 +import org.apache.cassandra.config.KSMetaData;
 +import org.apache.cassandra.config.ParameterizedClass;
  import org.apache.cassandra.db.commitlog.CommitLog;
  import org.apache.cassandra.db.commitlog.CommitLogDescriptor;
- import org.apache.cassandra.db.commitlog.CommitLogSegment;
+ import org.apache.cassandra.db.commitlog.CommitLogSegmentManager;
  import org.apache.cassandra.db.commitlog.ReplayPosition;
+ import org.apache.cassandra.db.commitlog.CommitLogSegment;
 +import org.apache.cassandra.db.compaction.CompactionManager;
  import org.apache.cassandra.db.composites.CellName;
  import org.apache.cassandra.db.composites.CellNameType;
  import org.apache.cassandra.db.filter.NamesQueryFilter;
  import org.apache.cassandra.exceptions.ConfigurationException;
+ import org.apache.cassandra.gms.Gossiper;
 +import org.apache.cassandra.io.util.ByteBufferDataInput;
 +import org.apache.cassandra.io.util.FileDataInput;
 +import org.apache.cassandra.locator.SimpleStrategy;
  import org.apache.cassandra.net.MessagingService;
+ import org.apache.cassandra.service.CassandraDaemon;
+ import org.apache.cassandra.service.StorageService;
  import org.apache.cassandra.utils.ByteBufferUtil;
  import org.apache.cassandra.utils.FBUtilities;
+ import org.apache.cassandra.utils.JVMStabilityInspector;
+ import org.apache.cassandra.utils.KillerForTests;
  
 -import static org.apache.cassandra.utils.ByteBufferUtil.bytes;
 -
 -public class CommitLogTest extends SchemaLoader
 

[08/10] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2015-08-09 Thread benedict
Merge branch 'cassandra-2.2' into cassandra-3.0

Conflicts:
test/unit/org/apache/cassandra/db/CommitLogTest.java


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

Branch: refs/heads/cassandra-3.0
Commit: e2ad7d5695d4044a021f14933762f105390c9beb
Parents: 7ea2ce1 0871533
Author: Benedict Elliott Smith bened...@apache.org
Authored: Sun Aug 9 09:41:38 2015 +0200
Committer: Benedict Elliott Smith bened...@apache.org
Committed: Sun Aug 9 09:41:38 2015 +0200

--
 .../cassandra/service/CassandraDaemon.java  |   8 +
 .../cassandra/utils/JVMStabilityInspector.java  |   9 +-
 .../org/apache/cassandra/db/CommitLogTest.java  | 161 ++-
 .../apache/cassandra/utils/KillerForTests.java  |  11 +-
 4 files changed, 184 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e2ad7d56/src/java/org/apache/cassandra/service/CassandraDaemon.java
--
diff --cc src/java/org/apache/cassandra/service/CassandraDaemon.java
index fddf593,2020201..3b123c3
--- a/src/java/org/apache/cassandra/service/CassandraDaemon.java
+++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java
@@@ -40,8 -40,10 +40,10 @@@ import com.addthis.metrics3.reporter.co
  import com.codahale.metrics.Meter;
  import com.codahale.metrics.MetricRegistryListener;
  import com.codahale.metrics.SharedMetricRegistries;
+ import com.google.common.annotations.VisibleForTesting;
+ import com.google.common.collect.Iterables;
  import com.google.common.util.concurrent.Uninterruptibles;
 -import org.apache.cassandra.metrics.DefaultNameFactory;
 +
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e2ad7d56/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e2ad7d56/test/unit/org/apache/cassandra/db/CommitLogTest.java
--
diff --cc test/unit/org/apache/cassandra/db/CommitLogTest.java
index 21bdd9b,536f0cb..512a3d2
--- a/test/unit/org/apache/cassandra/db/CommitLogTest.java
+++ b/test/unit/org/apache/cassandra/db/CommitLogTest.java
@@@ -47,20 -42,31 +48,29 @@@ import org.junit.BeforeClass
  import org.junit.Test;
  import org.apache.cassandra.SchemaLoader;
  import org.apache.cassandra.Util;
+ import org.apache.cassandra.config.Config;
  import org.apache.cassandra.config.DatabaseDescriptor;
 -import org.apache.cassandra.config.KSMetaData;
  import org.apache.cassandra.config.ParameterizedClass;
  import org.apache.cassandra.db.commitlog.CommitLog;
  import org.apache.cassandra.db.commitlog.CommitLogDescriptor;
- import org.apache.cassandra.db.commitlog.CommitLogSegment;
+ import org.apache.cassandra.db.commitlog.CommitLogSegmentManager;
  import org.apache.cassandra.db.commitlog.ReplayPosition;
+ import org.apache.cassandra.db.commitlog.CommitLogSegment;
  import org.apache.cassandra.db.compaction.CompactionManager;
 -import org.apache.cassandra.db.composites.CellName;
 -import org.apache.cassandra.db.composites.CellNameType;
 -import org.apache.cassandra.db.filter.NamesQueryFilter;
  import org.apache.cassandra.exceptions.ConfigurationException;
+ import org.apache.cassandra.gms.Gossiper;
  import org.apache.cassandra.io.util.ByteBufferDataInput;
  import org.apache.cassandra.io.util.FileDataInput;
 -import org.apache.cassandra.locator.SimpleStrategy;
  import org.apache.cassandra.net.MessagingService;
 +import org.apache.cassandra.schema.KeyspaceParams;
 +import org.apache.cassandra.utils.ByteBufferUtil;
 +import org.apache.cassandra.utils.vint.VIntCoding;
+ import org.apache.cassandra.service.CassandraDaemon;
+ import org.apache.cassandra.service.StorageService;
+ import org.apache.cassandra.utils.ByteBufferUtil;
+ import org.apache.cassandra.utils.FBUtilities;
+ import org.apache.cassandra.utils.JVMStabilityInspector;
+ import org.apache.cassandra.utils.KillerForTests;
  
  public class CommitLogTest
  {
@@@ -307,40 -319,179 +317,187 @@@
  }
  
  @Test
- public void testTruncateWithoutSnapshot() throws IOException
+ public void testCommitFailurePolicy_stop() throws ConfigurationException
+ {
+ CassandraDaemon daemon = new CassandraDaemon();
+ daemon.completeSetup(); //startup must be completed, otherwise commit 
log failure must kill JVM regardless of failure policy
+ StorageService.instance.registerDaemon(daemon);
+ 
+ // Need storage service active so stop policy can 

[01/10] cassandra git commit: Ensure commit log stop policy is enforced at startup

2015-08-09 Thread benedict
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.1 98a08ebcf - 3b7934f1a
  refs/heads/cassandra-2.2 6fd41ab15 - 087153394
  refs/heads/cassandra-3.0 7ea2ce124 - e2ad7d569
  refs/heads/trunk 6292aaa72 - 98cc1ee09


Ensure commit log stop policy is enforced at startup

patch by paulo; reviewed by benedict for CASSANDRA-8515


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

Branch: refs/heads/cassandra-2.1
Commit: 3b7934f1aa20d2210866afd9b88472e9cb1aed8d
Parents: 98a08eb
Author: Paulo Motta pauloricard...@gmail.com
Authored: Mon Jul 13 19:35:50 2015 -0300
Committer: Benedict Elliott Smith bened...@apache.org
Committed: Sun Aug 9 09:34:05 2015 +0200

--
 .../cassandra/service/CassandraDaemon.java  |   7 ++
 .../cassandra/utils/JVMStabilityInspector.java  |   9 +-
 .../org/apache/cassandra/db/CommitLogTest.java  | 110 +++
 .../apache/cassandra/utils/KillerForTests.java  |  11 +-
 4 files changed, 134 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/3b7934f1/src/java/org/apache/cassandra/service/CassandraDaemon.java
--
diff --git a/src/java/org/apache/cassandra/service/CassandraDaemon.java 
b/src/java/org/apache/cassandra/service/CassandraDaemon.java
index 2c141a6..d078203 100644
--- a/src/java/org/apache/cassandra/service/CassandraDaemon.java
+++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java
@@ -34,6 +34,7 @@ import javax.management.remote.JMXConnectorServer;
 import javax.management.remote.JMXServiceURL;
 import javax.management.remote.rmi.RMIConnectorServer;
 
+import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Iterables;
 import com.google.common.util.concurrent.Uninterruptibles;
 import org.slf4j.Logger;
@@ -425,6 +426,12 @@ public class CassandraDaemon
 int nativePort = DatabaseDescriptor.getNativeTransportPort();
 nativeServer = new org.apache.cassandra.transport.Server(nativeAddr, 
nativePort);
 
+completeSetup();
+}
+
+@VisibleForTesting
+public void completeSetup()
+{
 setupCompleted = true;
 }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3b7934f1/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
--
diff --git a/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java 
b/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
index c0ab84f..de396bb 100644
--- a/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
+++ b/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
@@ -28,7 +28,9 @@ import org.apache.cassandra.config.Config;
 import org.apache.cassandra.config.DatabaseDescriptor;
 import org.apache.cassandra.io.FSError;
 import org.apache.cassandra.io.sstable.CorruptSSTableException;
+import org.apache.cassandra.service.CassandraDaemon;
 import org.apache.cassandra.service.StorageService;
+import org.apache.cassandra.thrift.Cassandra;
 
 /**
  * Responsible for deciding whether to kill the JVM if it gets in an 
unstable state (think OOM).
@@ -38,6 +40,7 @@ public final class JVMStabilityInspector
 private static final Logger logger = 
LoggerFactory.getLogger(JVMStabilityInspector.class);
 private static Killer killer = new Killer();
 
+
 private JVMStabilityInspector() {}
 
 /**
@@ -66,7 +69,11 @@ public final class JVMStabilityInspector
 
 public static void inspectCommitLogThrowable(Throwable t)
 {
-if (DatabaseDescriptor.getCommitFailurePolicy() == 
Config.CommitFailurePolicy.die)
+if (!StorageService.instance.isSetupCompleted())
+{
+logger.error(Exiting due to error while processing commit log 
during initialization., t);
+killer.killCurrentJVM(t, true);
+} else if (DatabaseDescriptor.getCommitFailurePolicy() == 
Config.CommitFailurePolicy.die)
 killer.killCurrentJVM(t);
 else
 inspectThrowable(t);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3b7934f1/test/unit/org/apache/cassandra/db/CommitLogTest.java
--
diff --git a/test/unit/org/apache/cassandra/db/CommitLogTest.java 
b/test/unit/org/apache/cassandra/db/CommitLogTest.java
index 9a8a1dc..1c3daab 100644
--- a/test/unit/org/apache/cassandra/db/CommitLogTest.java
+++ b/test/unit/org/apache/cassandra/db/CommitLogTest.java
@@ -35,6 +35,7 @@ import org.apache.cassandra.config.Config;
 import 

[10/10] cassandra git commit: Merge branch 'cassandra-3.0' into trunk

2015-08-09 Thread benedict
Merge branch 'cassandra-3.0' into trunk


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

Branch: refs/heads/trunk
Commit: 98cc1ee0994060ca136bc0db968fa4fdf3d772bd
Parents: 6292aaa e2ad7d5
Author: Benedict Elliott Smith bened...@apache.org
Authored: Sun Aug 9 09:41:44 2015 +0200
Committer: Benedict Elliott Smith bened...@apache.org
Committed: Sun Aug 9 09:41:44 2015 +0200

--
 .../cassandra/service/CassandraDaemon.java  |   8 +
 .../cassandra/utils/JVMStabilityInspector.java  |   9 +-
 .../org/apache/cassandra/db/CommitLogTest.java  | 161 ++-
 .../apache/cassandra/utils/KillerForTests.java  |  11 +-
 4 files changed, 184 insertions(+), 5 deletions(-)
--




[02/10] cassandra git commit: Ensure commit log stop policy is enforced at startup

2015-08-09 Thread benedict
Ensure commit log stop policy is enforced at startup

patch by paulo; reviewed by benedict for CASSANDRA-8515


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

Branch: refs/heads/cassandra-2.2
Commit: 3b7934f1aa20d2210866afd9b88472e9cb1aed8d
Parents: 98a08eb
Author: Paulo Motta pauloricard...@gmail.com
Authored: Mon Jul 13 19:35:50 2015 -0300
Committer: Benedict Elliott Smith bened...@apache.org
Committed: Sun Aug 9 09:34:05 2015 +0200

--
 .../cassandra/service/CassandraDaemon.java  |   7 ++
 .../cassandra/utils/JVMStabilityInspector.java  |   9 +-
 .../org/apache/cassandra/db/CommitLogTest.java  | 110 +++
 .../apache/cassandra/utils/KillerForTests.java  |  11 +-
 4 files changed, 134 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/3b7934f1/src/java/org/apache/cassandra/service/CassandraDaemon.java
--
diff --git a/src/java/org/apache/cassandra/service/CassandraDaemon.java 
b/src/java/org/apache/cassandra/service/CassandraDaemon.java
index 2c141a6..d078203 100644
--- a/src/java/org/apache/cassandra/service/CassandraDaemon.java
+++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java
@@ -34,6 +34,7 @@ import javax.management.remote.JMXConnectorServer;
 import javax.management.remote.JMXServiceURL;
 import javax.management.remote.rmi.RMIConnectorServer;
 
+import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Iterables;
 import com.google.common.util.concurrent.Uninterruptibles;
 import org.slf4j.Logger;
@@ -425,6 +426,12 @@ public class CassandraDaemon
 int nativePort = DatabaseDescriptor.getNativeTransportPort();
 nativeServer = new org.apache.cassandra.transport.Server(nativeAddr, 
nativePort);
 
+completeSetup();
+}
+
+@VisibleForTesting
+public void completeSetup()
+{
 setupCompleted = true;
 }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3b7934f1/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
--
diff --git a/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java 
b/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
index c0ab84f..de396bb 100644
--- a/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
+++ b/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
@@ -28,7 +28,9 @@ import org.apache.cassandra.config.Config;
 import org.apache.cassandra.config.DatabaseDescriptor;
 import org.apache.cassandra.io.FSError;
 import org.apache.cassandra.io.sstable.CorruptSSTableException;
+import org.apache.cassandra.service.CassandraDaemon;
 import org.apache.cassandra.service.StorageService;
+import org.apache.cassandra.thrift.Cassandra;
 
 /**
  * Responsible for deciding whether to kill the JVM if it gets in an 
unstable state (think OOM).
@@ -38,6 +40,7 @@ public final class JVMStabilityInspector
 private static final Logger logger = 
LoggerFactory.getLogger(JVMStabilityInspector.class);
 private static Killer killer = new Killer();
 
+
 private JVMStabilityInspector() {}
 
 /**
@@ -66,7 +69,11 @@ public final class JVMStabilityInspector
 
 public static void inspectCommitLogThrowable(Throwable t)
 {
-if (DatabaseDescriptor.getCommitFailurePolicy() == 
Config.CommitFailurePolicy.die)
+if (!StorageService.instance.isSetupCompleted())
+{
+logger.error(Exiting due to error while processing commit log 
during initialization., t);
+killer.killCurrentJVM(t, true);
+} else if (DatabaseDescriptor.getCommitFailurePolicy() == 
Config.CommitFailurePolicy.die)
 killer.killCurrentJVM(t);
 else
 inspectThrowable(t);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3b7934f1/test/unit/org/apache/cassandra/db/CommitLogTest.java
--
diff --git a/test/unit/org/apache/cassandra/db/CommitLogTest.java 
b/test/unit/org/apache/cassandra/db/CommitLogTest.java
index 9a8a1dc..1c3daab 100644
--- a/test/unit/org/apache/cassandra/db/CommitLogTest.java
+++ b/test/unit/org/apache/cassandra/db/CommitLogTest.java
@@ -35,6 +35,7 @@ import org.apache.cassandra.config.Config;
 import org.apache.cassandra.config.DatabaseDescriptor;
 import org.apache.cassandra.db.commitlog.CommitLog;
 import org.apache.cassandra.db.commitlog.CommitLogDescriptor;
+import org.apache.cassandra.db.commitlog.CommitLogSegmentManager;
 import 

[04/10] cassandra git commit: Ensure commit log stop policy is enforced at startup

2015-08-09 Thread benedict
Ensure commit log stop policy is enforced at startup

patch by paulo; reviewed by benedict for CASSANDRA-8515


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

Branch: refs/heads/trunk
Commit: 3b7934f1aa20d2210866afd9b88472e9cb1aed8d
Parents: 98a08eb
Author: Paulo Motta pauloricard...@gmail.com
Authored: Mon Jul 13 19:35:50 2015 -0300
Committer: Benedict Elliott Smith bened...@apache.org
Committed: Sun Aug 9 09:34:05 2015 +0200

--
 .../cassandra/service/CassandraDaemon.java  |   7 ++
 .../cassandra/utils/JVMStabilityInspector.java  |   9 +-
 .../org/apache/cassandra/db/CommitLogTest.java  | 110 +++
 .../apache/cassandra/utils/KillerForTests.java  |  11 +-
 4 files changed, 134 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/3b7934f1/src/java/org/apache/cassandra/service/CassandraDaemon.java
--
diff --git a/src/java/org/apache/cassandra/service/CassandraDaemon.java 
b/src/java/org/apache/cassandra/service/CassandraDaemon.java
index 2c141a6..d078203 100644
--- a/src/java/org/apache/cassandra/service/CassandraDaemon.java
+++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java
@@ -34,6 +34,7 @@ import javax.management.remote.JMXConnectorServer;
 import javax.management.remote.JMXServiceURL;
 import javax.management.remote.rmi.RMIConnectorServer;
 
+import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Iterables;
 import com.google.common.util.concurrent.Uninterruptibles;
 import org.slf4j.Logger;
@@ -425,6 +426,12 @@ public class CassandraDaemon
 int nativePort = DatabaseDescriptor.getNativeTransportPort();
 nativeServer = new org.apache.cassandra.transport.Server(nativeAddr, 
nativePort);
 
+completeSetup();
+}
+
+@VisibleForTesting
+public void completeSetup()
+{
 setupCompleted = true;
 }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3b7934f1/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
--
diff --git a/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java 
b/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
index c0ab84f..de396bb 100644
--- a/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
+++ b/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
@@ -28,7 +28,9 @@ import org.apache.cassandra.config.Config;
 import org.apache.cassandra.config.DatabaseDescriptor;
 import org.apache.cassandra.io.FSError;
 import org.apache.cassandra.io.sstable.CorruptSSTableException;
+import org.apache.cassandra.service.CassandraDaemon;
 import org.apache.cassandra.service.StorageService;
+import org.apache.cassandra.thrift.Cassandra;
 
 /**
  * Responsible for deciding whether to kill the JVM if it gets in an 
unstable state (think OOM).
@@ -38,6 +40,7 @@ public final class JVMStabilityInspector
 private static final Logger logger = 
LoggerFactory.getLogger(JVMStabilityInspector.class);
 private static Killer killer = new Killer();
 
+
 private JVMStabilityInspector() {}
 
 /**
@@ -66,7 +69,11 @@ public final class JVMStabilityInspector
 
 public static void inspectCommitLogThrowable(Throwable t)
 {
-if (DatabaseDescriptor.getCommitFailurePolicy() == 
Config.CommitFailurePolicy.die)
+if (!StorageService.instance.isSetupCompleted())
+{
+logger.error(Exiting due to error while processing commit log 
during initialization., t);
+killer.killCurrentJVM(t, true);
+} else if (DatabaseDescriptor.getCommitFailurePolicy() == 
Config.CommitFailurePolicy.die)
 killer.killCurrentJVM(t);
 else
 inspectThrowable(t);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3b7934f1/test/unit/org/apache/cassandra/db/CommitLogTest.java
--
diff --git a/test/unit/org/apache/cassandra/db/CommitLogTest.java 
b/test/unit/org/apache/cassandra/db/CommitLogTest.java
index 9a8a1dc..1c3daab 100644
--- a/test/unit/org/apache/cassandra/db/CommitLogTest.java
+++ b/test/unit/org/apache/cassandra/db/CommitLogTest.java
@@ -35,6 +35,7 @@ import org.apache.cassandra.config.Config;
 import org.apache.cassandra.config.DatabaseDescriptor;
 import org.apache.cassandra.db.commitlog.CommitLog;
 import org.apache.cassandra.db.commitlog.CommitLogDescriptor;
+import org.apache.cassandra.db.commitlog.CommitLogSegmentManager;
 import 

[05/10] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2015-08-09 Thread benedict
Merge branch 'cassandra-2.1' into cassandra-2.2

Conflicts:
src/java/org/apache/cassandra/service/CassandraDaemon.java
test/unit/org/apache/cassandra/db/CommitLogTest.java


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

Branch: refs/heads/cassandra-3.0
Commit: 0871533945b19bb5ccf96ab7a28233cadd537a59
Parents: 6fd41ab 3b7934f
Author: Benedict Elliott Smith bened...@apache.org
Authored: Sun Aug 9 09:40:09 2015 +0200
Committer: Benedict Elliott Smith bened...@apache.org
Committed: Sun Aug 9 09:40:09 2015 +0200

--
 .../cassandra/service/CassandraDaemon.java  |   8 +
 .../cassandra/utils/JVMStabilityInspector.java  |   9 +-
 .../org/apache/cassandra/db/CommitLogTest.java  | 159 ++-
 .../apache/cassandra/utils/KillerForTests.java  |  11 +-
 4 files changed, 182 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/08715339/src/java/org/apache/cassandra/service/CassandraDaemon.java
--
diff --cc src/java/org/apache/cassandra/service/CassandraDaemon.java
index 10aa4b2,d078203..2020201
--- a/src/java/org/apache/cassandra/service/CassandraDaemon.java
+++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java
@@@ -37,11 -34,9 +37,13 @@@ import javax.management.remote.JMXConne
  import javax.management.remote.JMXServiceURL;
  import javax.management.remote.rmi.RMIConnectorServer;
  
 +import com.codahale.metrics.Meter;
 +import com.codahale.metrics.MetricRegistryListener;
 +import com.codahale.metrics.SharedMetricRegistries;
+ import com.google.common.annotations.VisibleForTesting;
+ import com.google.common.collect.Iterables;
  import com.google.common.util.concurrent.Uninterruptibles;
 +import org.apache.cassandra.metrics.DefaultNameFactory;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  

http://git-wip-us.apache.org/repos/asf/cassandra/blob/08715339/test/unit/org/apache/cassandra/db/CommitLogTest.java
--
diff --cc test/unit/org/apache/cassandra/db/CommitLogTest.java
index c53d371,1c3daab..536f0cb
--- a/test/unit/org/apache/cassandra/db/CommitLogTest.java
+++ b/test/unit/org/apache/cassandra/db/CommitLogTest.java
@@@ -19,74 -19,42 +19,82 @@@
  
  package org.apache.cassandra.db;
  
 -import java.io.*;
 +import static org.apache.cassandra.utils.ByteBufferUtil.bytes;
 +
 +import java.io.ByteArrayOutputStream;
 +import java.io.DataOutputStream;
 +import java.io.File;
 +import java.io.FileOutputStream;
 +import java.io.IOException;
 +import java.io.OutputStream;
  import java.nio.ByteBuffer;
 +import java.util.HashMap;
 +import java.util.Map;
  import java.util.UUID;
+ import java.util.concurrent.ExecutionException;
  import java.util.zip.CRC32;
  import java.util.zip.Checksum;
  
 +import com.google.common.collect.ImmutableMap;
 +
  import org.junit.Assert;
 +import org.junit.BeforeClass;
  import org.junit.Test;
 -
  import org.apache.cassandra.SchemaLoader;
  import org.apache.cassandra.Util;
+ import org.apache.cassandra.config.Config;
  import org.apache.cassandra.config.DatabaseDescriptor;
 +import org.apache.cassandra.config.KSMetaData;
 +import org.apache.cassandra.config.ParameterizedClass;
  import org.apache.cassandra.db.commitlog.CommitLog;
  import org.apache.cassandra.db.commitlog.CommitLogDescriptor;
- import org.apache.cassandra.db.commitlog.CommitLogSegment;
+ import org.apache.cassandra.db.commitlog.CommitLogSegmentManager;
  import org.apache.cassandra.db.commitlog.ReplayPosition;
+ import org.apache.cassandra.db.commitlog.CommitLogSegment;
 +import org.apache.cassandra.db.compaction.CompactionManager;
  import org.apache.cassandra.db.composites.CellName;
  import org.apache.cassandra.db.composites.CellNameType;
  import org.apache.cassandra.db.filter.NamesQueryFilter;
  import org.apache.cassandra.exceptions.ConfigurationException;
+ import org.apache.cassandra.gms.Gossiper;
 +import org.apache.cassandra.io.util.ByteBufferDataInput;
 +import org.apache.cassandra.io.util.FileDataInput;
 +import org.apache.cassandra.locator.SimpleStrategy;
  import org.apache.cassandra.net.MessagingService;
+ import org.apache.cassandra.service.CassandraDaemon;
+ import org.apache.cassandra.service.StorageService;
  import org.apache.cassandra.utils.ByteBufferUtil;
  import org.apache.cassandra.utils.FBUtilities;
+ import org.apache.cassandra.utils.JVMStabilityInspector;
+ import org.apache.cassandra.utils.KillerForTests;
  
 -import static org.apache.cassandra.utils.ByteBufferUtil.bytes;
 -
 -public class CommitLogTest extends 

[06/10] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2015-08-09 Thread benedict
Merge branch 'cassandra-2.1' into cassandra-2.2

Conflicts:
src/java/org/apache/cassandra/service/CassandraDaemon.java
test/unit/org/apache/cassandra/db/CommitLogTest.java


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

Branch: refs/heads/cassandra-2.2
Commit: 0871533945b19bb5ccf96ab7a28233cadd537a59
Parents: 6fd41ab 3b7934f
Author: Benedict Elliott Smith bened...@apache.org
Authored: Sun Aug 9 09:40:09 2015 +0200
Committer: Benedict Elliott Smith bened...@apache.org
Committed: Sun Aug 9 09:40:09 2015 +0200

--
 .../cassandra/service/CassandraDaemon.java  |   8 +
 .../cassandra/utils/JVMStabilityInspector.java  |   9 +-
 .../org/apache/cassandra/db/CommitLogTest.java  | 159 ++-
 .../apache/cassandra/utils/KillerForTests.java  |  11 +-
 4 files changed, 182 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/08715339/src/java/org/apache/cassandra/service/CassandraDaemon.java
--
diff --cc src/java/org/apache/cassandra/service/CassandraDaemon.java
index 10aa4b2,d078203..2020201
--- a/src/java/org/apache/cassandra/service/CassandraDaemon.java
+++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java
@@@ -37,11 -34,9 +37,13 @@@ import javax.management.remote.JMXConne
  import javax.management.remote.JMXServiceURL;
  import javax.management.remote.rmi.RMIConnectorServer;
  
 +import com.codahale.metrics.Meter;
 +import com.codahale.metrics.MetricRegistryListener;
 +import com.codahale.metrics.SharedMetricRegistries;
+ import com.google.common.annotations.VisibleForTesting;
+ import com.google.common.collect.Iterables;
  import com.google.common.util.concurrent.Uninterruptibles;
 +import org.apache.cassandra.metrics.DefaultNameFactory;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  

http://git-wip-us.apache.org/repos/asf/cassandra/blob/08715339/test/unit/org/apache/cassandra/db/CommitLogTest.java
--
diff --cc test/unit/org/apache/cassandra/db/CommitLogTest.java
index c53d371,1c3daab..536f0cb
--- a/test/unit/org/apache/cassandra/db/CommitLogTest.java
+++ b/test/unit/org/apache/cassandra/db/CommitLogTest.java
@@@ -19,74 -19,42 +19,82 @@@
  
  package org.apache.cassandra.db;
  
 -import java.io.*;
 +import static org.apache.cassandra.utils.ByteBufferUtil.bytes;
 +
 +import java.io.ByteArrayOutputStream;
 +import java.io.DataOutputStream;
 +import java.io.File;
 +import java.io.FileOutputStream;
 +import java.io.IOException;
 +import java.io.OutputStream;
  import java.nio.ByteBuffer;
 +import java.util.HashMap;
 +import java.util.Map;
  import java.util.UUID;
+ import java.util.concurrent.ExecutionException;
  import java.util.zip.CRC32;
  import java.util.zip.Checksum;
  
 +import com.google.common.collect.ImmutableMap;
 +
  import org.junit.Assert;
 +import org.junit.BeforeClass;
  import org.junit.Test;
 -
  import org.apache.cassandra.SchemaLoader;
  import org.apache.cassandra.Util;
+ import org.apache.cassandra.config.Config;
  import org.apache.cassandra.config.DatabaseDescriptor;
 +import org.apache.cassandra.config.KSMetaData;
 +import org.apache.cassandra.config.ParameterizedClass;
  import org.apache.cassandra.db.commitlog.CommitLog;
  import org.apache.cassandra.db.commitlog.CommitLogDescriptor;
- import org.apache.cassandra.db.commitlog.CommitLogSegment;
+ import org.apache.cassandra.db.commitlog.CommitLogSegmentManager;
  import org.apache.cassandra.db.commitlog.ReplayPosition;
+ import org.apache.cassandra.db.commitlog.CommitLogSegment;
 +import org.apache.cassandra.db.compaction.CompactionManager;
  import org.apache.cassandra.db.composites.CellName;
  import org.apache.cassandra.db.composites.CellNameType;
  import org.apache.cassandra.db.filter.NamesQueryFilter;
  import org.apache.cassandra.exceptions.ConfigurationException;
+ import org.apache.cassandra.gms.Gossiper;
 +import org.apache.cassandra.io.util.ByteBufferDataInput;
 +import org.apache.cassandra.io.util.FileDataInput;
 +import org.apache.cassandra.locator.SimpleStrategy;
  import org.apache.cassandra.net.MessagingService;
+ import org.apache.cassandra.service.CassandraDaemon;
+ import org.apache.cassandra.service.StorageService;
  import org.apache.cassandra.utils.ByteBufferUtil;
  import org.apache.cassandra.utils.FBUtilities;
+ import org.apache.cassandra.utils.JVMStabilityInspector;
+ import org.apache.cassandra.utils.KillerForTests;
  
 -import static org.apache.cassandra.utils.ByteBufferUtil.bytes;
 -
 -public class CommitLogTest extends 

[09/10] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2015-08-09 Thread benedict
Merge branch 'cassandra-2.2' into cassandra-3.0

Conflicts:
test/unit/org/apache/cassandra/db/CommitLogTest.java


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

Branch: refs/heads/trunk
Commit: e2ad7d5695d4044a021f14933762f105390c9beb
Parents: 7ea2ce1 0871533
Author: Benedict Elliott Smith bened...@apache.org
Authored: Sun Aug 9 09:41:38 2015 +0200
Committer: Benedict Elliott Smith bened...@apache.org
Committed: Sun Aug 9 09:41:38 2015 +0200

--
 .../cassandra/service/CassandraDaemon.java  |   8 +
 .../cassandra/utils/JVMStabilityInspector.java  |   9 +-
 .../org/apache/cassandra/db/CommitLogTest.java  | 161 ++-
 .../apache/cassandra/utils/KillerForTests.java  |  11 +-
 4 files changed, 184 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e2ad7d56/src/java/org/apache/cassandra/service/CassandraDaemon.java
--
diff --cc src/java/org/apache/cassandra/service/CassandraDaemon.java
index fddf593,2020201..3b123c3
--- a/src/java/org/apache/cassandra/service/CassandraDaemon.java
+++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java
@@@ -40,8 -40,10 +40,10 @@@ import com.addthis.metrics3.reporter.co
  import com.codahale.metrics.Meter;
  import com.codahale.metrics.MetricRegistryListener;
  import com.codahale.metrics.SharedMetricRegistries;
+ import com.google.common.annotations.VisibleForTesting;
+ import com.google.common.collect.Iterables;
  import com.google.common.util.concurrent.Uninterruptibles;
 -import org.apache.cassandra.metrics.DefaultNameFactory;
 +
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e2ad7d56/src/java/org/apache/cassandra/utils/JVMStabilityInspector.java
--

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e2ad7d56/test/unit/org/apache/cassandra/db/CommitLogTest.java
--
diff --cc test/unit/org/apache/cassandra/db/CommitLogTest.java
index 21bdd9b,536f0cb..512a3d2
--- a/test/unit/org/apache/cassandra/db/CommitLogTest.java
+++ b/test/unit/org/apache/cassandra/db/CommitLogTest.java
@@@ -47,20 -42,31 +48,29 @@@ import org.junit.BeforeClass
  import org.junit.Test;
  import org.apache.cassandra.SchemaLoader;
  import org.apache.cassandra.Util;
+ import org.apache.cassandra.config.Config;
  import org.apache.cassandra.config.DatabaseDescriptor;
 -import org.apache.cassandra.config.KSMetaData;
  import org.apache.cassandra.config.ParameterizedClass;
  import org.apache.cassandra.db.commitlog.CommitLog;
  import org.apache.cassandra.db.commitlog.CommitLogDescriptor;
- import org.apache.cassandra.db.commitlog.CommitLogSegment;
+ import org.apache.cassandra.db.commitlog.CommitLogSegmentManager;
  import org.apache.cassandra.db.commitlog.ReplayPosition;
+ import org.apache.cassandra.db.commitlog.CommitLogSegment;
  import org.apache.cassandra.db.compaction.CompactionManager;
 -import org.apache.cassandra.db.composites.CellName;
 -import org.apache.cassandra.db.composites.CellNameType;
 -import org.apache.cassandra.db.filter.NamesQueryFilter;
  import org.apache.cassandra.exceptions.ConfigurationException;
+ import org.apache.cassandra.gms.Gossiper;
  import org.apache.cassandra.io.util.ByteBufferDataInput;
  import org.apache.cassandra.io.util.FileDataInput;
 -import org.apache.cassandra.locator.SimpleStrategy;
  import org.apache.cassandra.net.MessagingService;
 +import org.apache.cassandra.schema.KeyspaceParams;
 +import org.apache.cassandra.utils.ByteBufferUtil;
 +import org.apache.cassandra.utils.vint.VIntCoding;
+ import org.apache.cassandra.service.CassandraDaemon;
+ import org.apache.cassandra.service.StorageService;
+ import org.apache.cassandra.utils.ByteBufferUtil;
+ import org.apache.cassandra.utils.FBUtilities;
+ import org.apache.cassandra.utils.JVMStabilityInspector;
+ import org.apache.cassandra.utils.KillerForTests;
  
  public class CommitLogTest
  {
@@@ -307,40 -319,179 +317,187 @@@
  }
  
  @Test
- public void testTruncateWithoutSnapshot() throws IOException
+ public void testCommitFailurePolicy_stop() throws ConfigurationException
+ {
+ CassandraDaemon daemon = new CassandraDaemon();
+ daemon.completeSetup(); //startup must be completed, otherwise commit 
log failure must kill JVM regardless of failure policy
+ StorageService.instance.registerDaemon(daemon);
+ 
+ // Need storage service active so stop policy can 

[jira] [Updated] (CASSANDRA-8515) Commit log stop policy not enforced correctly during startup

2015-08-09 Thread Benedict (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-8515?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Benedict updated CASSANDRA-8515:

Fix Version/s: (was: 2.1.x)
   3.0 beta 1
   2.2.1
   2.1.9

 Commit log stop policy not enforced correctly during startup 
 -

 Key: CASSANDRA-8515
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8515
 Project: Cassandra
  Issue Type: Bug
Reporter: Richard Low
Assignee: Paulo Motta
Priority: Minor
 Fix For: 2.1.9, 2.2.1, 3.0 beta 1


 If the commit log directory has no free space, Cassandra hangs on startup.
 The main thread is waiting:
 {code}
 main prio=9 tid=0x7fefe400f800 nid=0x1303 waiting on condition 
 [0x00010b9c1000]
java.lang.Thread.State: WAITING (parking)
   at sun.misc.Unsafe.park(Native Method)
   - parking to wait for  0x0007dc8c5fc8 (a 
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
   at 
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
   at 
 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
   at 
 org.apache.cassandra.db.commitlog.CommitLogAllocator.fetchSegment(CommitLogAllocator.java:137)
   at 
 org.apache.cassandra.db.commitlog.CommitLog.activateNextSegment(CommitLog.java:299)
   at org.apache.cassandra.db.commitlog.CommitLog.init(CommitLog.java:73)
   at 
 org.apache.cassandra.db.commitlog.CommitLog.clinit(CommitLog.java:53)
   at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:360)
   at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:339)
   at org.apache.cassandra.db.RowMutation.apply(RowMutation.java:211)
   at 
 org.apache.cassandra.cql3.statements.ModificationStatement.executeInternal(ModificationStatement.java:699)
   at 
 org.apache.cassandra.cql3.QueryProcessor.processInternal(QueryProcessor.java:208)
   at 
 org.apache.cassandra.db.SystemKeyspace.updateSchemaVersion(SystemKeyspace.java:390)
   - locked 0x0007de2f2ce0 (a java.lang.Class for 
 org.apache.cassandra.db.SystemKeyspace)
   at org.apache.cassandra.config.Schema.updateVersion(Schema.java:384)
   at 
 org.apache.cassandra.config.DatabaseDescriptor.loadSchemas(DatabaseDescriptor.java:532)
   at 
 org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:270)
   at 
 org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:496)
   at 
 org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:585)
 {code}
 but COMMIT-LOG-ALLOCATOR is RUNNABLE:
 {code}
 COMMIT-LOG-ALLOCATOR prio=9 tid=0x7fefe5402800 nid=0x7513 in 
 Object.wait() [0x000118252000]
java.lang.Thread.State: RUNNABLE
   at 
 org.apache.cassandra.db.commitlog.CommitLogAllocator$1.runMayThrow(CommitLogAllocator.java:116)
   at 
 org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28)
   at java.lang.Thread.run(Thread.java:745)
 {code}
 but making no progress.
 This behaviour has changed since 1.2 (see CASSANDRA-5737).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (CASSANDRA-8515) Commit log stop policy not enforced correctly during startup

2015-08-09 Thread Benedict (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-8515?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Benedict updated CASSANDRA-8515:

Reproduced In:   (was: 2.1.9, 2.2.1, 3.0 beta 1)

 Commit log stop policy not enforced correctly during startup 
 -

 Key: CASSANDRA-8515
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8515
 Project: Cassandra
  Issue Type: Bug
Reporter: Richard Low
Assignee: Paulo Motta
Priority: Minor
 Fix For: 2.1.9, 2.2.1, 3.0 beta 1


 If the commit log directory has no free space, Cassandra hangs on startup.
 The main thread is waiting:
 {code}
 main prio=9 tid=0x7fefe400f800 nid=0x1303 waiting on condition 
 [0x00010b9c1000]
java.lang.Thread.State: WAITING (parking)
   at sun.misc.Unsafe.park(Native Method)
   - parking to wait for  0x0007dc8c5fc8 (a 
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
   at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
   at 
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
   at 
 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
   at 
 org.apache.cassandra.db.commitlog.CommitLogAllocator.fetchSegment(CommitLogAllocator.java:137)
   at 
 org.apache.cassandra.db.commitlog.CommitLog.activateNextSegment(CommitLog.java:299)
   at org.apache.cassandra.db.commitlog.CommitLog.init(CommitLog.java:73)
   at 
 org.apache.cassandra.db.commitlog.CommitLog.clinit(CommitLog.java:53)
   at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:360)
   at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:339)
   at org.apache.cassandra.db.RowMutation.apply(RowMutation.java:211)
   at 
 org.apache.cassandra.cql3.statements.ModificationStatement.executeInternal(ModificationStatement.java:699)
   at 
 org.apache.cassandra.cql3.QueryProcessor.processInternal(QueryProcessor.java:208)
   at 
 org.apache.cassandra.db.SystemKeyspace.updateSchemaVersion(SystemKeyspace.java:390)
   - locked 0x0007de2f2ce0 (a java.lang.Class for 
 org.apache.cassandra.db.SystemKeyspace)
   at org.apache.cassandra.config.Schema.updateVersion(Schema.java:384)
   at 
 org.apache.cassandra.config.DatabaseDescriptor.loadSchemas(DatabaseDescriptor.java:532)
   at 
 org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:270)
   at 
 org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:496)
   at 
 org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:585)
 {code}
 but COMMIT-LOG-ALLOCATOR is RUNNABLE:
 {code}
 COMMIT-LOG-ALLOCATOR prio=9 tid=0x7fefe5402800 nid=0x7513 in 
 Object.wait() [0x000118252000]
java.lang.Thread.State: RUNNABLE
   at 
 org.apache.cassandra.db.commitlog.CommitLogAllocator$1.runMayThrow(CommitLogAllocator.java:116)
   at 
 org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28)
   at java.lang.Thread.run(Thread.java:745)
 {code}
 but making no progress.
 This behaviour has changed since 1.2 (see CASSANDRA-5737).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-9908) Potential race caused by async cleanup of transaction log files

2015-08-09 Thread Benedict (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-9908?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14663311#comment-14663311
 ] 

Benedict commented on CASSANDRA-9908:
-

(It's also worth noting this race condition as a whole is not new to 
CASSANDRA-7066, but it is easier to hit now. The patch as stands should make 
the situation better than pre-7066)

 Potential race caused by async cleanup of transaction log files
 ---

 Key: CASSANDRA-9908
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9908
 Project: Cassandra
  Issue Type: Bug
Reporter: Sam Tunnicliffe
Assignee: Stefania
  Labels: benedict-to-commit
 Fix For: 3.0 beta 1

 Attachments: TEST-org.apache.cassandra.db.SecondaryIndexTest.log


 There seems to be a potential race in the cleanup of transaction log files, 
 introduced in CASSANDRA-7066
 It's pretty hard to trigger on trunk, but it's possible to hit it via 
 {{o.a.c.db.SecondaryIndexTest#testCreateIndex}} 
 That test creates an index, then removes it to check that the removal is 
 correctly recorded, then adds the index again to assert that it gets rebuilt 
 from the existing data. 
 The removal causes the SSTables of the index CFS to be dropped, which is a 
 transactional operation and so writes a transaction log. When the drop is 
 completed and the last reference to an SSTable is released, the cleanup of 
 the transaction log is scheduled on the periodic tasks executor. The issue is 
 that re-creating the index re-creates the index CFS. When this happens, it's 
 possible for the cleanup of the txn log to have not yet happened. If so, the 
 initialization of the CFS attempts to read the log to identify any orphaned 
 temporary files. The cleanup can happen between the finding the log file and 
 reading it's contents, which results in a {{NoSuchFileException}}
 {noformat}
 [junit] java.nio.file.NoSuchFileException: 
 build/test/cassandra/data:1/SecondaryIndexTest1/CompositeIndexToBeAdded-d0885f60323211e5a5e8ad83a3dc3e9c/.birthdate_index/transactions/unknowncompactiontype_d4b69fc0-3232-11e5-a5e8-ad83a3dc3e9c_old.log
 [junit] java.lang.RuntimeException: java.nio.file.NoSuchFileException: 
 build/test/cassandra/data:1/SecondaryIndexTest1/CompositeIndexToBeAdded-d0885f60323211e5a5e8ad83a3dc3e9c/.birthdate_index/transactions/unknowncompactiontype_d4b69fc0-3232-11e5-a5e8-ad83a3dc3e9c_old.log
 [junit] at 
 org.apache.cassandra.io.util.FileUtils.readLines(FileUtils.java:620)
 [junit] at 
 org.apache.cassandra.db.lifecycle.TransactionLogs$TransactionFile.getTrackedFiles(TransactionLogs.java:190)
 [junit] at 
 org.apache.cassandra.db.lifecycle.TransactionLogs$TransactionData.getTemporaryFiles(TransactionLogs.java:338)
 [junit] at 
 org.apache.cassandra.db.lifecycle.TransactionLogs.getTemporaryFiles(TransactionLogs.java:739)
 [junit] at 
 org.apache.cassandra.db.lifecycle.LifecycleTransaction.getTemporaryFiles(LifecycleTransaction.java:541)
 [junit] at 
 org.apache.cassandra.db.Directories$SSTableLister.getFilter(Directories.java:652)
 [junit] at 
 org.apache.cassandra.db.Directories$SSTableLister.filter(Directories.java:641)
 [junit] at 
 org.apache.cassandra.db.Directories$SSTableLister.list(Directories.java:606)
 [junit] at 
 org.apache.cassandra.db.ColumnFamilyStore.init(ColumnFamilyStore.java:351)
 [junit] at 
 org.apache.cassandra.db.ColumnFamilyStore.init(ColumnFamilyStore.java:313)
 [junit] at 
 org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:511)
 [junit] at 
 org.apache.cassandra.index.internal.CassandraIndexer.addIndexedColumn(CassandraIndexer.java:115)
 [junit] at 
 org.apache.cassandra.index.SecondaryIndexManager.addIndexedColumn(SecondaryIndexManager.java:265)
 [junit] at 
 org.apache.cassandra.db.SecondaryIndexTest.testIndexCreate(SecondaryIndexTest.java:467)
 [junit] Caused by: java.nio.file.NoSuchFileException: 
 build/test/cassandra/data:1/SecondaryIndexTest1/CompositeIndexToBeAdded-d0885f60323211e5a5e8ad83a3dc3e9c/.birthdate_index/transactions/unknowncompactiontype_d4b69fc0-3232-11e5-a5e8-ad83a3dc3e9c_old.log
 [junit] at 
 sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
 [junit] at 
 sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
 [junit] at 
 sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
 [junit] at 
 sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
 [junit] at java.nio.file.Files.newByteChannel(Files.java:361)
 [junit] at java.nio.file.Files.newByteChannel(Files.java:407)
 [junit] at 
 java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:384)
 [junit] at 

[jira] [Commented] (CASSANDRA-10022) Add INSERT permission

2015-08-09 Thread Vovodroid (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-10022?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679104#comment-14679104
 ] 

Vovodroid commented on CASSANDRA-10022:
---

bq.Cassandra makes no distinction meaningful distinction between INSERT, 
UPDATE, and DELETE queries
Internally yes, but from external point of view there is much difference 
between add new data and change existing.

bq.I don't see a way to make it non-confusing.
Non-confusing for who? I guess it's quite clear: INSERT permission allow only 
perform INSERT as if IF NOT EXIST specified, so forcing this condition 
(making INSERT behavior like MySQL counterpart). Probably we can call it ADD, 
or ADDNEW, or INSERTNEW or something like this to make it clearer.

bq.LWT updates are not a security mechanism
Yes, but it can be used in such way. That's why I would like to add INSERT 
permission (to make issues less confusing .

 Add INSERT permission
 -

 Key: CASSANDRA-10022
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10022
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Vovodroid

 Hi,
 currently there is MODIFY permission in C*. It would be nice to add specific 
 INSERT permission, that would act as 'IF NOT EXIST' option specified.
 Imagine distributed application (e.g. mobile), that each its instance should 
 add something to table, but shouldn't be able to alter/delete existing data.
 Regards.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-10022) Add INSERT permission

2015-08-09 Thread Aleksey Yeschenko (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-10022?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679071#comment-14679071
 ] 

Aleksey Yeschenko commented on CASSANDRA-10022:
---

I'm afraid this wouldn't work. We would still require you to have the 
{{MODIFY}} permission to run those queries (if anything, for compatibility 
reasons), and if you have {{MODIFY}}, then you'll be able to omit {{IF NOT 
EXIST}} and do anything anyway.

Perhaps CASSANDRA-8303 is what you really need. Give a role {{MODIFY}} 
permission, but take away the right to perform non-LWT updates.

 Add INSERT permission
 -

 Key: CASSANDRA-10022
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10022
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Vovodroid

 Hi,
 currently there is MODIFY permission in C*. It would be nice to add specific 
 INSERT permission, that would act as 'IF NOT EXIST' option specified.
 Imagine distributed application (e.g. mobile), that each its instance should 
 add something to table, but shouldn't be able to alter/delete existing data.
 Regards.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (CASSANDRA-10022) Add INSERT permission

2015-08-09 Thread Aleksey Yeschenko (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-10022?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aleksey Yeschenko resolved CASSANDRA-10022.
---
   Resolution: Won't Fix
Fix Version/s: (was: 3.x)

 Add INSERT permission
 -

 Key: CASSANDRA-10022
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10022
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Vovodroid

 Hi,
 currently there is MODIFY permission in C*. It would be nice to add specific 
 INSERT permission, that would act as 'IF NOT EXIST' option specified.
 Imagine distributed application (e.g. mobile), that each its instance should 
 add something to table, but shouldn't be able to alter/delete existing data.
 Regards.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-10026) AccessControlException in UFPureScriptTest

2015-08-09 Thread Sam Tunnicliffe (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-10026?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679105#comment-14679105
 ] 

Sam Tunnicliffe commented on CASSANDRA-10026:
-

In this [branch|https://github.com/beobal/cassandra/tree/10026-3.0] I've 
switched function implementations to use a standard {{ExecutorService}} 
utest - 
[3.0|http://cassci.datastax.com/view/Dev/view/beobal/job/beobal-10026-3.0-testall/],
 
[trunk|http://cassci.datastax.com/view/Dev/view/beobal/job/beobal-10026-trunk-testall/]
dtest - 
[3.0|http://cassci.datastax.com/view/Dev/view/beobal/job/beobal-10026-3.0-dtest/
 ], 
[trunk|http://cassci.datastax.com/view/Dev/view/beobal/job/beobal-10026-trunk-dtest/]


 AccessControlException in UFPureScriptTest
 --

 Key: CASSANDRA-10026
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10026
 Project: Cassandra
  Issue Type: Bug
Reporter: Sam Tunnicliffe
Assignee: Sam Tunnicliffe
 Fix For: 3.0 beta 1


 CASSANDRA-9129 removed {{JMXEnabledScheduledThreadPoolExecutor}} and replaced 
 its usage in {{JavaBasedUDFuntion}} and {{ScriptBasedUDFunction}} with 
 {{JMXEnabledThreadPoolExecutor}} as the scheduling capabilities were not 
 required. This causes an {{AccessControlException}} as 
 {{JMXEnabedThreadPoolExecutor}}  {{DebuggableThreadPoolExecutor}} reference 
 internal {{o.a.c}} classes which is not permitted by the UDF execution 
 sandbox's {{SecurityManager}}. 
 JUnit output contains a bunch of 
 {noformat}
 [junit] Exception: java.security.AccessControlException thrown from the 
 UncaughtExceptionHandler in thread UserDefinedScriptFunctions:1
 {noformat}
 And ultimately fails with:
 {noformat}
 [junit] Testcase: 
 testJavascriptSimpleCollections(org.apache.cassandra.cql3.validation.entities.UFPureScriptTest):
   Caused an ERROR
 [junit] execution of 'cql_test_keyspace_alt.function_1[listdouble]' failed: 
 java.lang.IllegalArgumentException: Invalid thread ID parameter: 0
 [junit] org.apache.cassandra.exceptions.FunctionExecutionException: execution 
 of 'cql_test_keyspace_alt.function_1[listdouble]' failed: 
 java.lang.IllegalArgumentException: Invalid thread ID parameter: 0
 [junit] at 
 org.apache.cassandra.exceptions.FunctionExecutionException.create(FunctionExecutionException.java:35)
 [junit] at 
 org.apache.cassandra.cql3.functions.UDFunction.execute(UDFunction.java:286)
 [junit] at 
 org.apache.cassandra.cql3.selection.ScalarFunctionSelector.getOutput(ScalarFunctionSelector.java:60)
 [junit] at 
 org.apache.cassandra.cql3.selection.Selection$SelectionWithProcessing$1.getOutputRow(Selection.java:535)
 [junit] at 
 org.apache.cassandra.cql3.selection.Selection$ResultSetBuilder.getOutputRow(Selection.java:363)
 [junit] at 
 org.apache.cassandra.cql3.selection.Selection$ResultSetBuilder.build(Selection.java:351)
 [junit] at 
 org.apache.cassandra.cql3.statements.SelectStatement.process(SelectStatement.java:581)
 [junit] at 
 org.apache.cassandra.cql3.statements.SelectStatement.processResults(SelectStatement.java:348)
 [junit] at 
 org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:364)
 [junit] at 
 org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:72)
 [junit] at 
 org.apache.cassandra.cql3.QueryProcessor.executeOnceInternal(QueryProcessor.java:337)
 [junit] at org.apache.cassandra.cql3.CQLTester.execute(CQLTester.java:654)
 [junit] at 
 org.apache.cassandra.cql3.validation.entities.UFPureScriptTest.testJavascriptSimpleCollections(UFPureScriptTest.java:89)
 [junit] Caused by: java.lang.IllegalArgumentException: Invalid thread ID 
 parameter: 0
 [junit] at sun.management.ThreadImpl.verifyThreadIds(ThreadImpl.java:154)
 [junit] at 
 sun.management.ThreadImpl.verifyThreadCpuTime(ThreadImpl.java:227)
 [junit] at sun.management.ThreadImpl.getThreadCpuTime(ThreadImpl.java:251)
 [junit] at sun.management.ThreadImpl.getThreadCpuTime(ThreadImpl.java:222)
 [junit] at 
 org.apache.cassandra.cql3.functions.UDFunction.executeAsync(UDFunction.java:369)
 [junit] at 
 org.apache.cassandra.cql3.functions.UDFunction.execute(UDFunction.java:272)
 [junit] 
 [junit] 
 [junit] Test org.apache.cassandra.cql3.validation.entities.UFPureScriptTest 
 FAILED
 {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-10022) Add INSERT permission

2015-08-09 Thread Vovodroid (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-10022?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679095#comment-14679095
 ] 

Vovodroid commented on CASSANDRA-10022:
---

bq.We would still require you to have the MODIFY permission to run those 
queries (if anything, for compatibility reasons)
Sorry, I didn't catch why MODIFY is needed in such case. Assume we already have 
the code that makes INSERT  to add unique rows as its normal behavior, 
but to enhance security we want to deny altering existing data. So we can give 
said INSERT permission without touching existing application. Only if this app 
want to change data new limitation will trigger.

bq.Give a role MODIFY permission, but take away the right to perform non-LWT 
updates.
Well, but it seems more complex, and demands changing existing apps (they 
should start use IF NOT EXIST).


 Add INSERT permission
 -

 Key: CASSANDRA-10022
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10022
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Vovodroid

 Hi,
 currently there is MODIFY permission in C*. It would be nice to add specific 
 INSERT permission, that would act as 'IF NOT EXIST' option specified.
 Imagine distributed application (e.g. mobile), that each its instance should 
 add something to table, but shouldn't be able to alter/delete existing data.
 Regards.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (CASSANDRA-10026) AccessControlException in UFPureScriptTest

2015-08-09 Thread Sam Tunnicliffe (JIRA)
Sam Tunnicliffe created CASSANDRA-10026:
---

 Summary: AccessControlException in UFPureScriptTest
 Key: CASSANDRA-10026
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10026
 Project: Cassandra
  Issue Type: Bug
Reporter: Sam Tunnicliffe
Assignee: Sam Tunnicliffe
 Fix For: 3.0 beta 1


CASSANDRA-9129 removed {{JMXEnabledScheduledThreadPoolExecutor}} and replaced 
its usage in {{JavaBasedUDFuntion}} and {{ScriptBasedUDFunction}} with 
{{JMXEnabledThreadPoolExecutor}} as the scheduling capabilities were not 
required. This causes an {{AccessControlException}} as 
{{JMXEnabedThreadPoolExecutor}}  {{DebuggableThreadPoolExecutor}} reference 
internal {{o.a.c}} classes which is not permitted by the UDF execution 
sandbox's {{SecurityManager}}. 

JUnit output contains a bunch of 
{noformat}
[junit] Exception: java.security.AccessControlException thrown from the 
UncaughtExceptionHandler in thread UserDefinedScriptFunctions:1
{noformat}

And ultimately fails with:
{noformat}
[junit] Testcase: 
testJavascriptSimpleCollections(org.apache.cassandra.cql3.validation.entities.UFPureScriptTest):
  Caused an ERROR
[junit] execution of 'cql_test_keyspace_alt.function_1[listdouble]' failed: 
java.lang.IllegalArgumentException: Invalid thread ID parameter: 0
[junit] org.apache.cassandra.exceptions.FunctionExecutionException: execution 
of 'cql_test_keyspace_alt.function_1[listdouble]' failed: 
java.lang.IllegalArgumentException: Invalid thread ID parameter: 0
[junit] at 
org.apache.cassandra.exceptions.FunctionExecutionException.create(FunctionExecutionException.java:35)
[junit] at 
org.apache.cassandra.cql3.functions.UDFunction.execute(UDFunction.java:286)
[junit] at 
org.apache.cassandra.cql3.selection.ScalarFunctionSelector.getOutput(ScalarFunctionSelector.java:60)
[junit] at 
org.apache.cassandra.cql3.selection.Selection$SelectionWithProcessing$1.getOutputRow(Selection.java:535)
[junit] at 
org.apache.cassandra.cql3.selection.Selection$ResultSetBuilder.getOutputRow(Selection.java:363)
[junit] at 
org.apache.cassandra.cql3.selection.Selection$ResultSetBuilder.build(Selection.java:351)
[junit] at 
org.apache.cassandra.cql3.statements.SelectStatement.process(SelectStatement.java:581)
[junit] at 
org.apache.cassandra.cql3.statements.SelectStatement.processResults(SelectStatement.java:348)
[junit] at 
org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:364)
[junit] at 
org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:72)
[junit] at 
org.apache.cassandra.cql3.QueryProcessor.executeOnceInternal(QueryProcessor.java:337)
[junit] at org.apache.cassandra.cql3.CQLTester.execute(CQLTester.java:654)
[junit] at 
org.apache.cassandra.cql3.validation.entities.UFPureScriptTest.testJavascriptSimpleCollections(UFPureScriptTest.java:89)
[junit] Caused by: java.lang.IllegalArgumentException: Invalid thread ID 
parameter: 0
[junit] at sun.management.ThreadImpl.verifyThreadIds(ThreadImpl.java:154)
[junit] at 
sun.management.ThreadImpl.verifyThreadCpuTime(ThreadImpl.java:227)
[junit] at sun.management.ThreadImpl.getThreadCpuTime(ThreadImpl.java:251)
[junit] at sun.management.ThreadImpl.getThreadCpuTime(ThreadImpl.java:222)
[junit] at 
org.apache.cassandra.cql3.functions.UDFunction.executeAsync(UDFunction.java:369)
[junit] at 
org.apache.cassandra.cql3.functions.UDFunction.execute(UDFunction.java:272)
[junit] 
[junit] 
[junit] Test org.apache.cassandra.cql3.validation.entities.UFPureScriptTest 
FAILED
{noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-10022) Add INSERT permission

2015-08-09 Thread Aleksey Yeschenko (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-10022?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679097#comment-14679097
 ] 

Aleksey Yeschenko commented on CASSANDRA-10022:
---

The logical conclusion would be to add {{DELETE}} permission for {{DELETE IF 
EXISTS}} and an {{UPDATE}} permission that would only allow modifying data that 
is already there, and you would still have {{MODIFY}} that allows to do all of 
the above (we have a single permissions because Cassandra makes no distinction 
meaningful distinction between INSERT, UPDATE, and DELETE queries - in many 
cases you can use them interchangeably - especially UPDATE and INSERT). I don't 
see a way to make it non-confusing.

LWT updates are not a security mechanism - it's a tool to use for a small 
subset of your writes when there is absolutely no way to use regular writes 
(think new user account creation).

 Add INSERT permission
 -

 Key: CASSANDRA-10022
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10022
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Vovodroid

 Hi,
 currently there is MODIFY permission in C*. It would be nice to add specific 
 INSERT permission, that would act as 'IF NOT EXIST' option specified.
 Imagine distributed application (e.g. mobile), that each its instance should 
 add something to table, but shouldn't be able to alter/delete existing data.
 Regards.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-9459) SecondaryIndex API redesign

2015-08-09 Thread Sam Tunnicliffe (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-9459?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679108#comment-14679108
 ] 

Sam Tunnicliffe commented on CASSANDRA-9459:


No plans for unique ids for 2i tables here, because at the moment I'm just 
focusing on getting the API changes done for 3.0. There are obviously a lot of 
changes to the implementation, but I'd like to defer any further non-essential 
ones to separate tickets if possible.

 SecondaryIndex API redesign
 ---

 Key: CASSANDRA-9459
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9459
 Project: Cassandra
  Issue Type: Improvement
Reporter: Sam Tunnicliffe
Assignee: Sam Tunnicliffe
 Fix For: 3.0 beta 1


 For some time now the index subsystem has been a pain point and in large part 
 this is due to the way that the APIs and principal classes have grown 
 organically over the years. It would be a good idea to conduct a wholesale 
 review of the area and see if we can come up with something a bit more 
 coherent.
 A few starting points:
 * There's a lot in AbstractPerColumnSecondaryIndex  its subclasses which 
 could be pulled up into SecondaryIndexSearcher (note that to an extent, this 
 is done in CASSANDRA-8099).
 * SecondayIndexManager is overly complex and several of its functions should 
 be simplified/re-examined. The handling of which columns are indexed and 
 index selection on both the read and write paths are somewhat dense and 
 unintuitive.
 * The SecondaryIndex class hierarchy is rather convoluted and could use some 
 serious rework.
 There are a number of outstanding tickets which we should be able to roll 
 into this higher level one as subtasks (but I'll defer doing that until 
 getting into the details of the redesign):
 * CASSANDRA-7771
 * CASSANDRA-8103
 * CASSANDRA-9041
 * CASSANDRA-4458
 * CASSANDRA-8505
 Whilst they're not hard dependencies, I propose that this be done on top of 
 both CASSANDRA-8099 and CASSANDRA-6717. The former largely because the 
 storage engine changes may facilitate a friendlier index API, but also 
 because of the changes to SIS mentioned above. As for 6717, the changes to 
 schema tables there will help facilitate CASSANDRA-7771.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (CASSANDRA-10028) Unique ID per ColumnFamilyStore

2015-08-09 Thread Robert Stupp (JIRA)
Robert Stupp created CASSANDRA-10028:


 Summary: Unique ID per ColumnFamilyStore
 Key: CASSANDRA-10028
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10028
 Project: Cassandra
  Issue Type: Improvement
Reporter: Robert Stupp
Priority: Minor


It would be beneficial to have a unique ID to identify not just a column family 
but also each 2i within a column family.

A secondary index is referenced using the KS name plus one string containing 
{{cfName + '.' + indexName}}. Whether a cfName references the base table or a 
2i is distinguished using a {{.contains(.)}}.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-10006) 2.1 format sstable filenames with tmp are not handled by 3.0

2015-08-09 Thread Jeremiah Jordan (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-10006?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679141#comment-14679141
 ] 

Jeremiah Jordan commented on CASSANDRA-10006:
-

2.1 or 2.2 - 3.0

 2.1 format sstable filenames with tmp are not handled by 3.0
 --

 Key: CASSANDRA-10006
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10006
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Tyler Hobbs
Assignee: Stefania
 Fix For: 3.0 beta 1


 In 3.0, {{Descriptor.fromFilename()}} doesn't handle tmp in sstable 
 filenames in the 2.1 (ka) format.  If you start 3.0 with one of these 
 filenames, you'll see an exception like the following:
 {noformat}
 ERROR [main] 2015-08-05 10:15:57,872 CassandraDaemon.java:623 - Exception 
 encountered during startup
 java.lang.AssertionError: Invalid file name 
 system-schema_columns-tmp-ka-5-Filter.db in 
 /tmp/dtest-Jstsy2/test/node1/data/system/schema_columns-296e9c049bec3085827dc17d3df2122a
 at 
 org.apache.cassandra.io.sstable.Descriptor.fromFilename(Descriptor.java:291) 
 ~[main/:na]
 at 
 org.apache.cassandra.io.sstable.Descriptor.fromFilename(Descriptor.java:190) 
 ~[main/:na]
 at 
 org.apache.cassandra.service.StartupChecks$7$1.visitFile(StartupChecks.java:226)
  ~[main/:na]
 at 
 org.apache.cassandra.service.StartupChecks$7$1.visitFile(StartupChecks.java:218)
  ~[main/:na]
 at java.nio.file.Files.walkFileTree(Files.java:2670) ~[na:1.8.0_45]
 at java.nio.file.Files.walkFileTree(Files.java:2742) ~[na:1.8.0_45]
 at 
 org.apache.cassandra.service.StartupChecks$7.execute(StartupChecks.java:251) 
 ~[main/:na]
 at 
 org.apache.cassandra.service.StartupChecks.verify(StartupChecks.java:103) 
 ~[main/:na]
 at 
 org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:163) 
 [main/:na]
 at 
 org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:504)
  [main/:na]
 at 
 org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:610) 
 [main/:na]
 {noformat}
 I can reliably reproduce this with an [upgrade 
 dtest|https://github.com/thobbs/cassandra-dtest/blob/8099-backwards-compat/upgrade_tests/cql_tests.py#L5126-L5162]
  from CASSANDRA-9704, but it should also be reproducible by simply starting 
 3.0 with a filename like the one from the error message.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-10027) ALTER TYPE of varint to date should not be allowed

2015-08-09 Thread Robert Stupp (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-10027?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679183#comment-14679183
 ] 

Robert Stupp commented on CASSANDRA-10027:
--

This seems to be a regression caused by CASSANDRA-6766 since 2.0.9.
{{ALTER TABLE tab ALTER col}} uses 
{{AbstractType.isValueCompatibleWith(AbstractType)}} to check for compatibility.

 ALTER TYPE of varint to date should not be allowed
 --

 Key: CASSANDRA-10027
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10027
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Aaron Ploetz
Priority: Minor
 Fix For: 2.2.x


 I stumbled onto the fact that 2.2.0 will allow you to ALTER TYPE of a 
 {{varint}} to the new {{date}} type.  I thought that was an odd conversion to 
 allow, so I attempted to query it.  I received an error on all subsequent 
 queries, unless I exited or truncated the table.
 After truncating, I could then INSERT and query as normal.  But the new 
 {{varint}} values inserted simply were reflected as an offset of the minimum 
 {{varint}} value.
 I'm not sure why that's happening, but if we could simply prevent type 
 conversion between {{varint}} and {{date}} (and just show the types are 
 incompatible message) that should fix this.
 Steps to reproduce:
 {code}
 aploetz@cqlsh:typeconversion CREATE TABLE varinttest (key int PRIMARY KEY, 
 c1 varint);
 aploetz@cqlsh:typeconversion INSERT INTO varinttest (key, c1) VALUES (1,1);
 aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;
  key | c1
 -+
1 |  1
 (1 rows)
 aploetz@cqlsh:typeconversion ALTER TABLE varinttest ALTER c1 TYPE date;
 aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;
 Traceback (most recent call last):
   File /usr/bin/cqlsh.py, line 1150, in perform_simple_statement
 rows = future.result(self.session.default_timeout)
   File 
 /usr/share/cassandra/lib/cassandra-driver-internal-only-2.6.0c2.post.zip/cassandra-driver-2.6.0c2.post/cassandra/cluster.py,
  line 3296, in result
 raise self._final_exception
 error: unpack requires a string argument of length 4
 aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;
 NoHostAvailable: ('Unable to complete the operation against any hosts', 
 {Host: 127.0.0.1 PloetzLabs: ConnectionShutdown('Connection to 127.0.0.1 is 
 defunct',)})
 aploetz@cqlsh:typeconversion TRUNCATE varinttest ;
 aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;
  key | c1
 -+
 (0 rows)
 aploetz@cqlsh:typeconversion INSERT INTO varinttest (key, c1) VALUES (1,1);
 aploetz@cqlsh:typeconversion INSERT INTO varinttest (key, c1) VALUES (2,2);
 aploetz@cqlsh:typeconversion INSERT INTO varinttest (key, c1) VALUES (3,3);
 aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;
  key | c1
 -+-
1 | -2147483647
2 | -2147483646
3 | -2147483645
 (3 rows)
 {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (CASSANDRA-10027) ALTER TABLE TYPE check broken

2015-08-09 Thread Robert Stupp (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-10027?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Robert Stupp updated CASSANDRA-10027:
-
Summary: ALTER TABLE TYPE check broken  (was: ALTER TYPE of varint to date 
should not be allowed)

 ALTER TABLE TYPE check broken
 -

 Key: CASSANDRA-10027
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10027
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Aaron Ploetz
Priority: Minor
 Fix For: 2.1.x


 I stumbled onto the fact that 2.2.0 will allow you to ALTER TYPE of a 
 {{varint}} to the new {{date}} type.  I thought that was an odd conversion to 
 allow, so I attempted to query it.  I received an error on all subsequent 
 queries, unless I exited or truncated the table.
 After truncating, I could then INSERT and query as normal.  But the new 
 {{varint}} values inserted simply were reflected as an offset of the minimum 
 {{varint}} value.
 I'm not sure why that's happening, but if we could simply prevent type 
 conversion between {{varint}} and {{date}} (and just show the types are 
 incompatible message) that should fix this.
 Steps to reproduce:
 {code}
 aploetz@cqlsh:typeconversion CREATE TABLE varinttest (key int PRIMARY KEY, 
 c1 varint);
 aploetz@cqlsh:typeconversion INSERT INTO varinttest (key, c1) VALUES (1,1);
 aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;
  key | c1
 -+
1 |  1
 (1 rows)
 aploetz@cqlsh:typeconversion ALTER TABLE varinttest ALTER c1 TYPE date;
 aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;
 Traceback (most recent call last):
   File /usr/bin/cqlsh.py, line 1150, in perform_simple_statement
 rows = future.result(self.session.default_timeout)
   File 
 /usr/share/cassandra/lib/cassandra-driver-internal-only-2.6.0c2.post.zip/cassandra-driver-2.6.0c2.post/cassandra/cluster.py,
  line 3296, in result
 raise self._final_exception
 error: unpack requires a string argument of length 4
 aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;
 NoHostAvailable: ('Unable to complete the operation against any hosts', 
 {Host: 127.0.0.1 PloetzLabs: ConnectionShutdown('Connection to 127.0.0.1 is 
 defunct',)})
 aploetz@cqlsh:typeconversion TRUNCATE varinttest ;
 aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;
  key | c1
 -+
 (0 rows)
 aploetz@cqlsh:typeconversion INSERT INTO varinttest (key, c1) VALUES (1,1);
 aploetz@cqlsh:typeconversion INSERT INTO varinttest (key, c1) VALUES (2,2);
 aploetz@cqlsh:typeconversion INSERT INTO varinttest (key, c1) VALUES (3,3);
 aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;
  key | c1
 -+-
1 | -2147483647
2 | -2147483646
3 | -2147483645
 (3 rows)
 {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (CASSANDRA-10027) ALTER TYPE of varint to date should not be allowed

2015-08-09 Thread Robert Stupp (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-10027?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Robert Stupp updated CASSANDRA-10027:
-
Fix Version/s: (was: 2.2.x)
   2.1.x

 ALTER TYPE of varint to date should not be allowed
 --

 Key: CASSANDRA-10027
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10027
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Aaron Ploetz
Priority: Minor
 Fix For: 2.1.x


 I stumbled onto the fact that 2.2.0 will allow you to ALTER TYPE of a 
 {{varint}} to the new {{date}} type.  I thought that was an odd conversion to 
 allow, so I attempted to query it.  I received an error on all subsequent 
 queries, unless I exited or truncated the table.
 After truncating, I could then INSERT and query as normal.  But the new 
 {{varint}} values inserted simply were reflected as an offset of the minimum 
 {{varint}} value.
 I'm not sure why that's happening, but if we could simply prevent type 
 conversion between {{varint}} and {{date}} (and just show the types are 
 incompatible message) that should fix this.
 Steps to reproduce:
 {code}
 aploetz@cqlsh:typeconversion CREATE TABLE varinttest (key int PRIMARY KEY, 
 c1 varint);
 aploetz@cqlsh:typeconversion INSERT INTO varinttest (key, c1) VALUES (1,1);
 aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;
  key | c1
 -+
1 |  1
 (1 rows)
 aploetz@cqlsh:typeconversion ALTER TABLE varinttest ALTER c1 TYPE date;
 aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;
 Traceback (most recent call last):
   File /usr/bin/cqlsh.py, line 1150, in perform_simple_statement
 rows = future.result(self.session.default_timeout)
   File 
 /usr/share/cassandra/lib/cassandra-driver-internal-only-2.6.0c2.post.zip/cassandra-driver-2.6.0c2.post/cassandra/cluster.py,
  line 3296, in result
 raise self._final_exception
 error: unpack requires a string argument of length 4
 aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;
 NoHostAvailable: ('Unable to complete the operation against any hosts', 
 {Host: 127.0.0.1 PloetzLabs: ConnectionShutdown('Connection to 127.0.0.1 is 
 defunct',)})
 aploetz@cqlsh:typeconversion TRUNCATE varinttest ;
 aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;
  key | c1
 -+
 (0 rows)
 aploetz@cqlsh:typeconversion INSERT INTO varinttest (key, c1) VALUES (1,1);
 aploetz@cqlsh:typeconversion INSERT INTO varinttest (key, c1) VALUES (2,2);
 aploetz@cqlsh:typeconversion INSERT INTO varinttest (key, c1) VALUES (3,3);
 aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;
  key | c1
 -+-
1 | -2147483647
2 | -2147483646
3 | -2147483645
 (3 rows)
 {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-7342) CAS writes does not have hint functionality.

2015-08-09 Thread sankalp kohli (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-7342?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679275#comment-14679275
 ] 

sankalp kohli commented on CASSANDRA-7342:
--

+1 looks good. Thanks for simplifying the above two things. 

 CAS writes does not have hint functionality. 
 -

 Key: CASSANDRA-7342
 URL: https://issues.apache.org/jira/browse/CASSANDRA-7342
 Project: Cassandra
  Issue Type: Sub-task
Reporter: sankalp kohli
Assignee: sankalp kohli
 Fix For: 2.1.x, 2.2.x, 3.0.x

 Attachments: 7342_2.0.txt, 7342_2.1.txt


 When a dead node comes up, it gets the last commit but not anything which it 
 has missed. 
 This reduces the durability of those writes compared to other writes. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-7731) Get max values for live/tombstone cells per slice

2015-08-09 Thread Robert Stupp (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-7731?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679173#comment-14679173
 ] 

Robert Stupp commented on CASSANDRA-7731:
-

[~jjordan] The suggestions from the 2.1 patch are already in 2.2. So there's 
nothing to be done regarding nodetool output.
AFAICT 2.2 also uses codahale metrics exclusively. It's not perfect but ok. 
Further improvement of metrics is up to CASSANDRA-6486.

 Get max values for live/tombstone cells per slice
 -

 Key: CASSANDRA-7731
 URL: https://issues.apache.org/jira/browse/CASSANDRA-7731
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Cyril Scetbon
Assignee: Robert Stupp
Priority: Minor
 Fix For: 2.1.x

 Attachments: 7731-2.0.txt, 7731-2.1.txt


 I think you should not say that slice statistics are valid for the [last five 
 minutes 
 |https://github.com/apache/cassandra/blob/cassandra-2.0/src/java/org/apache/cassandra/tools/NodeCmd.java#L955-L956]
  in CFSTATS command of nodetool. I've read the documentation from yammer for 
 Histograms and there is no way to force values to expire after x minutes 
 except by 
 [clearing|http://grepcode.com/file/repo1.maven.org/maven2/com.yammer.metrics/metrics-core/2.1.2/com/yammer/metrics/core/Histogram.java#96]
  it . The only thing I can see is that the last snapshot used to provide the 
 median (or whatever you'd used instead) value is based on 1028 values.
 I think we should also be able to detect that some requests are accessing a 
 lot of live/tombstone cells per query and that's not possible for now without 
 activating DEBUG for SliceQueryFilter for example and by tweaking the 
 threshold. Currently as nodetool cfstats returns the median if a low part of 
 the queries are scanning a lot of live/tombstone cells we miss it !



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (CASSANDRA-9712) Refactor CFMetaData

2015-08-09 Thread Robert Stupp (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-9712?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14663285#comment-14663285
 ] 

Robert Stupp edited comment on CASSANDRA-9712 at 8/9/15 4:48 PM:
-

Will step #2 also give us IDs for base table and each 2i? (see [my 
comment|https://issues.apache.org/jira/browse/CASSANDRA-9459?focusedCommentId=14663284page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14663284]
 in CASSANDRA-9459)


was (Author: snazy):
Will step #2 also give us IDs for base table and each 2i? (see [my 
comment|https://issues.apache.org/jira/browse/CASSANDRA-9459?focusedCommentId=14663284page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14663284]
 in CASSANDRA-9495)

 Refactor CFMetaData
 ---

 Key: CASSANDRA-9712
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9712
 Project: Cassandra
  Issue Type: Improvement
Reporter: Aleksey Yeschenko
Assignee: Aleksey Yeschenko
 Fix For: 3.x


 As part of CASSANDRA-9425 and a follow-up to CASSANDRA-9665, and a 
 pre-requisite for new schema change protocol, this ticket will do the 
 following
 1. Make the triggers {{HashMap}} immutable (new {{Triggers}} class)
 2. Allow multiple 2i definitions per column in CFMetaData
 3. to be filled in
 4. Rename and move {{config.CFMetaData}} to {{schema.TableMetadata}}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (CASSANDRA-10027) ALTER TYPE of varint to date should not be allowed

2015-08-09 Thread Aaron Ploetz (JIRA)
Aaron Ploetz created CASSANDRA-10027:


 Summary: ALTER TYPE of varint to date should not be allowed
 Key: CASSANDRA-10027
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10027
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Aaron Ploetz
Priority: Minor
 Fix For: 2.2.x


I stumbled onto the fact that 2.2.0 will allow you to ALTER TYPE of a 
{{varint}} to the new {{date}} type.  I thought that was an odd conversion to 
allow, so I attempted to query it.  I received an error on all subsequent 
queries, unless I exited or truncated the table.

After truncating, I could then INSERT and query as normal.  But the new 
{{varint}} values inserted simply were reflected as an offset of the minimum 
{{varint}} value.

I'm not sure why that's happening, but if we could simply prevent type 
conversion between {{varint}} and {{date}} (and just show the types are 
incompatible message) that should fix this.

Steps to reproduce:

{code}
aploetz@cqlsh:typeconversion CREATE TABLE varinttest (key int PRIMARY KEY, c1 
varint);
aploetz@cqlsh:typeconversion INSERT INTO varinttest (key, c1) VALUES (1,1);
aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;

 key | c1
-+
   1 |  1

(1 rows)
aploetz@cqlsh:typeconversion ALTER TABLE varinttest ALTER c1 TYPE date;
aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;
Traceback (most recent call last):
  File /usr/bin/cqlsh.py, line 1150, in perform_simple_statement
rows = future.result(self.session.default_timeout)
  File 
/usr/share/cassandra/lib/cassandra-driver-internal-only-2.6.0c2.post.zip/cassandra-driver-2.6.0c2.post/cassandra/cluster.py,
 line 3296, in result
raise self._final_exception
error: unpack requires a string argument of length 4

aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;
NoHostAvailable: ('Unable to complete the operation against any hosts', {Host: 
127.0.0.1 PloetzLabs: ConnectionShutdown('Connection to 127.0.0.1 is 
defunct',)})
aploetz@cqlsh:typeconversion TRUNCATE varinttest ;
aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;

 key | c1
-+

(0 rows)
aploetz@cqlsh:typeconversion INSERT INTO varinttest (key, c1) VALUES (1,1);
aploetz@cqlsh:typeconversion INSERT INTO varinttest (key, c1) VALUES (2,2);
aploetz@cqlsh:typeconversion INSERT INTO varinttest (key, c1) VALUES (3,3);
aploetz@cqlsh:typeconversion SELECT * FROM varinttest ;

 key | c1
-+-
   1 | -2147483647
   2 | -2147483646
   3 | -2147483645

(3 rows)
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-7342) CAS writes does not have hint functionality.

2015-08-09 Thread Aleksey Yeschenko (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-7342?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679136#comment-14679136
 ] 

Aleksey Yeschenko commented on CASSANDRA-7342:
--

The original patch was ignoring {{shouldHint}} in {{commitPaxos()}} when the 
node was live. Both the original patch and my follow-up had redundant methods - 
and arguments - we don't need an extra {{isCas}} or {{kind}} fields in 
{{WriteCallbackInfo}} because we can infer the type from {{sentMessage.verb}}.

Updated versions: [2.1|https://github.com/iamaleksey/cassandra/tree/7342-2.1], 
[2.2|https://github.com/iamaleksey/cassandra/tree/7342-2.2], 
[3.0|https://github.com/iamaleksey/cassandra/tree/7342-3.0].

Cassci: [2.1 
testall|http://cassci.datastax.com/view/Dev/view/iamaleksey/job/iamaleksey-7342-2.1-testall/],
 [2.1 
dtest|http://cassci.datastax.com/view/Dev/view/iamaleksey/job/iamaleksey-7342-2.1-dtest/],
 [2.2 
testall|http://cassci.datastax.com/view/Dev/view/iamaleksey/job/iamaleksey-7342-2.2-testall/],
 [2.2 
dtest|http://cassci.datastax.com/view/Dev/view/iamaleksey/job/iamaleksey-7342-2.2-dtest/],
 [3.0 
testall|http://cassci.datastax.com/view/Dev/view/iamaleksey/job/iamaleksey-7342-3.0-testall/],
 [3.0 
dtest|http://cassci.datastax.com/view/Dev/view/iamaleksey/job/iamaleksey-7342-3.0-dtest/].

 CAS writes does not have hint functionality. 
 -

 Key: CASSANDRA-7342
 URL: https://issues.apache.org/jira/browse/CASSANDRA-7342
 Project: Cassandra
  Issue Type: Sub-task
Reporter: sankalp kohli
Assignee: sankalp kohli
 Fix For: 2.1.x, 2.2.x, 3.0.x

 Attachments: 7342_2.0.txt, 7342_2.1.txt


 When a dead node comes up, it gets the last commit but not anything which it 
 has missed. 
 This reduces the durability of those writes compared to other writes. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-10026) AccessControlException in UFPureScriptTest

2015-08-09 Thread Robert Stupp (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-10026?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679247#comment-14679247
 ] 

Robert Stupp commented on CASSANDRA-10026:
--

+1

 AccessControlException in UFPureScriptTest
 --

 Key: CASSANDRA-10026
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10026
 Project: Cassandra
  Issue Type: Bug
Reporter: Sam Tunnicliffe
Assignee: Sam Tunnicliffe
 Fix For: 3.0 beta 1


 CASSANDRA-9129 removed {{JMXEnabledScheduledThreadPoolExecutor}} and replaced 
 its usage in {{JavaBasedUDFuntion}} and {{ScriptBasedUDFunction}} with 
 {{JMXEnabledThreadPoolExecutor}} as the scheduling capabilities were not 
 required. This causes an {{AccessControlException}} as 
 {{JMXEnabedThreadPoolExecutor}}  {{DebuggableThreadPoolExecutor}} reference 
 internal {{o.a.c}} classes which is not permitted by the UDF execution 
 sandbox's {{SecurityManager}}. 
 JUnit output contains a bunch of 
 {noformat}
 [junit] Exception: java.security.AccessControlException thrown from the 
 UncaughtExceptionHandler in thread UserDefinedScriptFunctions:1
 {noformat}
 And ultimately fails with:
 {noformat}
 [junit] Testcase: 
 testJavascriptSimpleCollections(org.apache.cassandra.cql3.validation.entities.UFPureScriptTest):
   Caused an ERROR
 [junit] execution of 'cql_test_keyspace_alt.function_1[listdouble]' failed: 
 java.lang.IllegalArgumentException: Invalid thread ID parameter: 0
 [junit] org.apache.cassandra.exceptions.FunctionExecutionException: execution 
 of 'cql_test_keyspace_alt.function_1[listdouble]' failed: 
 java.lang.IllegalArgumentException: Invalid thread ID parameter: 0
 [junit] at 
 org.apache.cassandra.exceptions.FunctionExecutionException.create(FunctionExecutionException.java:35)
 [junit] at 
 org.apache.cassandra.cql3.functions.UDFunction.execute(UDFunction.java:286)
 [junit] at 
 org.apache.cassandra.cql3.selection.ScalarFunctionSelector.getOutput(ScalarFunctionSelector.java:60)
 [junit] at 
 org.apache.cassandra.cql3.selection.Selection$SelectionWithProcessing$1.getOutputRow(Selection.java:535)
 [junit] at 
 org.apache.cassandra.cql3.selection.Selection$ResultSetBuilder.getOutputRow(Selection.java:363)
 [junit] at 
 org.apache.cassandra.cql3.selection.Selection$ResultSetBuilder.build(Selection.java:351)
 [junit] at 
 org.apache.cassandra.cql3.statements.SelectStatement.process(SelectStatement.java:581)
 [junit] at 
 org.apache.cassandra.cql3.statements.SelectStatement.processResults(SelectStatement.java:348)
 [junit] at 
 org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:364)
 [junit] at 
 org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:72)
 [junit] at 
 org.apache.cassandra.cql3.QueryProcessor.executeOnceInternal(QueryProcessor.java:337)
 [junit] at org.apache.cassandra.cql3.CQLTester.execute(CQLTester.java:654)
 [junit] at 
 org.apache.cassandra.cql3.validation.entities.UFPureScriptTest.testJavascriptSimpleCollections(UFPureScriptTest.java:89)
 [junit] Caused by: java.lang.IllegalArgumentException: Invalid thread ID 
 parameter: 0
 [junit] at sun.management.ThreadImpl.verifyThreadIds(ThreadImpl.java:154)
 [junit] at 
 sun.management.ThreadImpl.verifyThreadCpuTime(ThreadImpl.java:227)
 [junit] at sun.management.ThreadImpl.getThreadCpuTime(ThreadImpl.java:251)
 [junit] at sun.management.ThreadImpl.getThreadCpuTime(ThreadImpl.java:222)
 [junit] at 
 org.apache.cassandra.cql3.functions.UDFunction.executeAsync(UDFunction.java:369)
 [junit] at 
 org.apache.cassandra.cql3.functions.UDFunction.execute(UDFunction.java:272)
 [junit] 
 [junit] 
 [junit] Test org.apache.cassandra.cql3.validation.entities.UFPureScriptTest 
 FAILED
 {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (CASSANDRA-7731) Get max values for live/tombstone cells per slice

2015-08-09 Thread Jeremiah Jordan (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-7731?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeremiah Jordan resolved CASSANDRA-7731.

   Resolution: Fixed
Fix Version/s: (was: 2.1.x)
   2.2.0
Reproduced In: 2.0.9, 1.2.18  (was: 1.2.18, 2.0.9)

 Get max values for live/tombstone cells per slice
 -

 Key: CASSANDRA-7731
 URL: https://issues.apache.org/jira/browse/CASSANDRA-7731
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Cyril Scetbon
Assignee: Robert Stupp
Priority: Minor
 Fix For: 2.2.0

 Attachments: 7731-2.0.txt, 7731-2.1.txt


 I think you should not say that slice statistics are valid for the [last five 
 minutes 
 |https://github.com/apache/cassandra/blob/cassandra-2.0/src/java/org/apache/cassandra/tools/NodeCmd.java#L955-L956]
  in CFSTATS command of nodetool. I've read the documentation from yammer for 
 Histograms and there is no way to force values to expire after x minutes 
 except by 
 [clearing|http://grepcode.com/file/repo1.maven.org/maven2/com.yammer.metrics/metrics-core/2.1.2/com/yammer/metrics/core/Histogram.java#96]
  it . The only thing I can see is that the last snapshot used to provide the 
 median (or whatever you'd used instead) value is based on 1028 values.
 I think we should also be able to detect that some requests are accessing a 
 lot of live/tombstone cells per query and that's not possible for now without 
 activating DEBUG for SliceQueryFilter for example and by tweaking the 
 threshold. Currently as nodetool cfstats returns the median if a low part of 
 the queries are scanning a lot of live/tombstone cells we miss it !



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-10026) AccessControlException in UFPureScriptTest

2015-08-09 Thread Robert Stupp (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-10026?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679164#comment-14679164
 ] 

Robert Stupp commented on CASSANDRA-10026:
--

(as discussed offline:) I think a good choice for the thread pool size would be 
the number of CPUs.

 AccessControlException in UFPureScriptTest
 --

 Key: CASSANDRA-10026
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10026
 Project: Cassandra
  Issue Type: Bug
Reporter: Sam Tunnicliffe
Assignee: Sam Tunnicliffe
 Fix For: 3.0 beta 1


 CASSANDRA-9129 removed {{JMXEnabledScheduledThreadPoolExecutor}} and replaced 
 its usage in {{JavaBasedUDFuntion}} and {{ScriptBasedUDFunction}} with 
 {{JMXEnabledThreadPoolExecutor}} as the scheduling capabilities were not 
 required. This causes an {{AccessControlException}} as 
 {{JMXEnabedThreadPoolExecutor}}  {{DebuggableThreadPoolExecutor}} reference 
 internal {{o.a.c}} classes which is not permitted by the UDF execution 
 sandbox's {{SecurityManager}}. 
 JUnit output contains a bunch of 
 {noformat}
 [junit] Exception: java.security.AccessControlException thrown from the 
 UncaughtExceptionHandler in thread UserDefinedScriptFunctions:1
 {noformat}
 And ultimately fails with:
 {noformat}
 [junit] Testcase: 
 testJavascriptSimpleCollections(org.apache.cassandra.cql3.validation.entities.UFPureScriptTest):
   Caused an ERROR
 [junit] execution of 'cql_test_keyspace_alt.function_1[listdouble]' failed: 
 java.lang.IllegalArgumentException: Invalid thread ID parameter: 0
 [junit] org.apache.cassandra.exceptions.FunctionExecutionException: execution 
 of 'cql_test_keyspace_alt.function_1[listdouble]' failed: 
 java.lang.IllegalArgumentException: Invalid thread ID parameter: 0
 [junit] at 
 org.apache.cassandra.exceptions.FunctionExecutionException.create(FunctionExecutionException.java:35)
 [junit] at 
 org.apache.cassandra.cql3.functions.UDFunction.execute(UDFunction.java:286)
 [junit] at 
 org.apache.cassandra.cql3.selection.ScalarFunctionSelector.getOutput(ScalarFunctionSelector.java:60)
 [junit] at 
 org.apache.cassandra.cql3.selection.Selection$SelectionWithProcessing$1.getOutputRow(Selection.java:535)
 [junit] at 
 org.apache.cassandra.cql3.selection.Selection$ResultSetBuilder.getOutputRow(Selection.java:363)
 [junit] at 
 org.apache.cassandra.cql3.selection.Selection$ResultSetBuilder.build(Selection.java:351)
 [junit] at 
 org.apache.cassandra.cql3.statements.SelectStatement.process(SelectStatement.java:581)
 [junit] at 
 org.apache.cassandra.cql3.statements.SelectStatement.processResults(SelectStatement.java:348)
 [junit] at 
 org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:364)
 [junit] at 
 org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:72)
 [junit] at 
 org.apache.cassandra.cql3.QueryProcessor.executeOnceInternal(QueryProcessor.java:337)
 [junit] at org.apache.cassandra.cql3.CQLTester.execute(CQLTester.java:654)
 [junit] at 
 org.apache.cassandra.cql3.validation.entities.UFPureScriptTest.testJavascriptSimpleCollections(UFPureScriptTest.java:89)
 [junit] Caused by: java.lang.IllegalArgumentException: Invalid thread ID 
 parameter: 0
 [junit] at sun.management.ThreadImpl.verifyThreadIds(ThreadImpl.java:154)
 [junit] at 
 sun.management.ThreadImpl.verifyThreadCpuTime(ThreadImpl.java:227)
 [junit] at sun.management.ThreadImpl.getThreadCpuTime(ThreadImpl.java:251)
 [junit] at sun.management.ThreadImpl.getThreadCpuTime(ThreadImpl.java:222)
 [junit] at 
 org.apache.cassandra.cql3.functions.UDFunction.executeAsync(UDFunction.java:369)
 [junit] at 
 org.apache.cassandra.cql3.functions.UDFunction.execute(UDFunction.java:272)
 [junit] 
 [junit] 
 [junit] Test org.apache.cassandra.cql3.validation.entities.UFPureScriptTest 
 FAILED
 {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-10019) UFPureScriptTest.testJavascriptTupleType fails on uninitialized thread id

2015-08-09 Thread Robert Stupp (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-10019?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679165#comment-14679165
 ] 

Robert Stupp commented on CASSANDRA-10019:
--

FTR: this seems to be related to CASSANDRA-10026 - but otherwise: the patch is 
a good thing

 UFPureScriptTest.testJavascriptTupleType fails on uninitialized thread id
 -

 Key: CASSANDRA-10019
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10019
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Ariel Weisberg
Assignee: Ariel Weisberg
 Fix For: 3.0 beta 1


 http://cassci.datastax.com/view/trunk/job/trunk_utest/492/testReport/junit/org.apache.cassandra.cql3.validation.entities/UFPureScriptTest/testJavascriptTupleType/
 The thread ID is retrieved from the executor service when the task executes 
 which may not be immediately. There appear to be scenarios where it will try 
 to get CPU time for the uninitialized thread id.
 I propose waiting for the thread id to be set up to a timeout in the event it 
 isn't set.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[1/2] cassandra git commit: Allows single-column slice restrictions to be merged with multi-columns slice restrictions

2015-08-09 Thread blerer
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.1 07a7e80c3 - 1ae58ef3a


Allows single-column slice restrictions to be merged with multi-columns slice 
restrictions

patch by Benjamin Lerer; reviewed by Sam Tunnicliffe for CASSANDRA-9606


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

Branch: refs/heads/cassandra-2.1
Commit: de84a5c770ac1a429152dd79f0895b27aa544368
Parents: c9587cd
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 21:48:04 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 21:48:04 2015 +0200

--
 .../cql3/statements/MultiColumnRestriction.java | 10 +++-
 .../cassandra/cql3/statements/Restriction.java  |  4 ++
 .../cql3/statements/SelectStatement.java| 54 ++--
 .../statements/SingleColumnRestriction.java | 25 +++--
 .../cassandra/cql3/MultiColumnRelationTest.java | 49 +-
 .../cql3/SingleColumnRelationTest.java  | 53 +--
 6 files changed, 165 insertions(+), 30 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/de84a5c7/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
--
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java 
b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
index f643684..ed1e7f1 100644
--- a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
@@ -24,8 +24,11 @@ import 
org.apache.cassandra.exceptions.InvalidRequestException;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
+import org.apache.cassandra.cql3.Term.Terminal;
+
 public interface MultiColumnRestriction extends Restriction
 {
 public static class EQ extends SingleColumnRestriction.EQ implements 
MultiColumnRestriction
@@ -128,8 +131,11 @@ public interface MultiColumnRestriction extends Restriction
  */
 public ListByteBuffer componentBounds(Bound b, ListByteBuffer 
variables) throws InvalidRequestException
 {
-Tuples.Value value = (Tuples.Value)bounds[b.idx].bind(variables);
-return value.getElements();
+Terminal terminal = bounds[b.idx].bind(variables);
+if (terminal instanceof Tuples.Value)
+return ((Tuples.Value) terminal).getElements();
+
+return Collections.singletonList(terminal.get());
 }
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/de84a5c7/src/java/org/apache/cassandra/cql3/statements/Restriction.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/Restriction.java 
b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
index 3d33bde..f582c84 100644
--- a/src/java/org/apache/cassandra/cql3/statements/Restriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
@@ -54,6 +54,8 @@ public interface Restriction
 /** Returns true if the start or end bound (depending on the argument) 
is set, false otherwise */
 public boolean hasBound(Bound b);
 
+public Term bound(Bound b);
+
 public ByteBuffer bound(Bound b, ListByteBuffer variables) throws 
InvalidRequestException;
 
 /** Returns true if the start or end bound (depending on the argument) 
is inclusive, false otherwise */
@@ -64,5 +66,7 @@ public interface Restriction
 public IndexOperator getIndexOperator(Bound b);
 
 public void setBound(Relation.Type type, Term t) throws 
InvalidRequestException;
+
+public void setBound(Slice restriction) throws InvalidRequestException;
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/de84a5c7/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index aaf9579..a9eae7a 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@ -46,7 +46,6 @@ import org.apache.cassandra.service.StorageProxy;
 import org.apache.cassandra.service.StorageService;
 import org.apache.cassandra.service.pager.*;
 import org.apache.cassandra.db.ConsistencyLevel;
-import 

[jira] [Commented] (CASSANDRA-7342) CAS writes does not have hint functionality.

2015-08-09 Thread Aleksey Yeschenko (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-7342?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679313#comment-14679313
 ] 

Aleksey Yeschenko commented on CASSANDRA-7342:
--

Committed as 
[07a7e80c321b6667cc44a236f999c7837fe48e20|https://github.com/apache/cassandra/commit/07a7e80c321b6667cc44a236f999c7837fe48e20]
 to cassandra-2.1, and merged up. Thanks.

 CAS writes does not have hint functionality. 
 -

 Key: CASSANDRA-7342
 URL: https://issues.apache.org/jira/browse/CASSANDRA-7342
 Project: Cassandra
  Issue Type: Sub-task
Reporter: sankalp kohli
Assignee: sankalp kohli
 Fix For: 2.1.9, 2.2.1, 3.0 beta 1

 Attachments: 7342_2.0.txt, 7342_2.1.txt


 When a dead node comes up, it gets the last commit but not anything which it 
 has missed. 
 This reduces the durability of those writes compared to other writes. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[2/2] cassandra git commit: Merge branch 'cassandra-2.0' into cassandra-2.1

2015-08-09 Thread blerer
Merge branch 'cassandra-2.0' into cassandra-2.1


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

Branch: refs/heads/cassandra-2.1
Commit: 1ae58ef3acc187a3728ca0dda3e98be8b3580ec1
Parents: 07a7e80 de84a5c
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 22:04:32 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 22:04:56 2015 +0200

--

--




[1/2] cassandra git commit: Makes AggregationTest.testAggregateWithWriteTimeOrTTL more robust

2015-08-09 Thread blerer
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 e2ad7d569 - 8984ca79f


Makes AggregationTest.testAggregateWithWriteTimeOrTTL more robust

patch by Benjamin Lerer; reviewed by Aleksey Yeschenko for CASSANDRA-9891


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

Branch: refs/heads/cassandra-3.0
Commit: a5297f16eede718eac021f27d6825d1062661be6
Parents: 0871533
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 21:12:11 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 21:12:11 2015 +0200

--
 .../cql3/validation/operations/AggregationTest.java  | 11 ++-
 1 file changed, 6 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a5297f16/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
--
diff --git 
a/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
 
b/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
index 51e4a28..120fc21 100644
--- 
a/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
+++ 
b/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
@@ -167,7 +167,7 @@ public class AggregationTest extends CQLTester
 }
 
 @Test
-public void testAggregateWithWithWriteTimeOrTTL() throws Throwable
+public void testAggregateWithWriteTimeOrTTL() throws Throwable
 {
 createTable(CREATE TABLE %s (a int primary key, b int, c int));
 
@@ -180,8 +180,9 @@ public class AggregationTest extends CQLTester
 long today = System.currentTimeMillis() * 1000;
 long yesterday = today - (DateUtils.MILLIS_PER_DAY * 1000);
 
-execute(INSERT INTO %s (a, b, c) VALUES (1, 2, null) USING TTL 5;);
-execute(INSERT INTO %s (a, b, c) VALUES (2, 4, 6) USING TTL 2;);
+final int secondsPerMinute = 60;
+execute(INSERT INTO %s (a, b, c) VALUES (1, 2, null) USING TTL  + 
(20 * secondsPerMinute));
+execute(INSERT INTO %s (a, b, c) VALUES (2, 4, 6) USING TTL  + (10 * 
secondsPerMinute));
 execute(INSERT INTO %s (a, b, c) VALUES (4, 8, 12) USING TIMESTAMP  
+ yesterday );
 
 assertRows(execute(SELECT count(writetime(b)), count(ttl(b)) FROM 
%s),
@@ -190,8 +191,8 @@ public class AggregationTest extends CQLTester
 UntypedResultSet resultSet = execute(SELECT min(ttl(b)), ttl(b) FROM 
%s);
 assertEquals(1, resultSet.size());
 Row row = resultSet.one();
-assertTrue(row.getInt(ttl(b))  4);
-assertTrue(row.getInt(system.min(ttl(b))) = 2);
+assertTrue(row.getInt(ttl(b))  (10 * secondsPerMinute));
+assertTrue(row.getInt(system.min(ttl(b))) = (10 * 
secondsPerMinute));
 
 resultSet = execute(SELECT min(writetime(b)), writetime(b) FROM %s);
 assertEquals(1, resultSet.size());



[1/2] cassandra git commit: Write hints for paxos commits

2015-08-09 Thread aleksey
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.2 a5297f16e - 0b99d33ee


Write hints for paxos commits

patch by Sankalp Kohli and Aleksey Yeschenko for CASSANDRA-7342


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

Branch: refs/heads/cassandra-2.2
Commit: 07a7e80c321b6667cc44a236f999c7837fe48e20
Parents: 3b7934f
Author: sankalp kohli kohlisank...@gmail.com
Authored: Thu Aug 6 18:56:37 2015 +0300
Committer: Aleksey Yeschenko alek...@apache.org
Committed: Sun Aug 9 22:52:03 2015 +0300

--
 CHANGES.txt |  1 +
 src/java/org/apache/cassandra/net/MessagingService.java | 11 +--
 .../org/apache/cassandra/net/WriteCallbackInfo.java | 11 ++-
 src/java/org/apache/cassandra/service/StorageProxy.java | 12 
 4 files changed, 24 insertions(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 3b0241c..7151883 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.9
+ * Write hints for paxos commits (CASSANDRA-7342)
  * (cqlsh) Fix timestamps before 1970 on Windows, always
use UTC for timestamp display (CASSANDRA-1)
  * (cqlsh) Avoid overwriting new config file with old config

http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/net/MessagingService.java
--
diff --git a/src/java/org/apache/cassandra/net/MessagingService.java 
b/src/java/org/apache/cassandra/net/MessagingService.java
index 1ad0e7c..d7825d4 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -379,8 +379,7 @@ public final class MessagingService implements 
MessagingServiceMBean
 
 if (expiredCallbackInfo.shouldHint())
 {
-Mutation mutation = (Mutation) ((WriteCallbackInfo) 
expiredCallbackInfo).sentMessage.payload;
-
+Mutation mutation = ((WriteCallbackInfo) 
expiredCallbackInfo).mutation();
 return StorageProxy.submitHint(mutation, 
expiredCallbackInfo.target, null);
 }
 
@@ -594,13 +593,13 @@ public final class MessagingService implements 
MessagingServiceMBean
 }
 
 public int addCallback(IAsyncCallback cb,
-   MessageOut? extends IMutation message,
+   MessageOut? message,
InetAddress to,
long timeout,
ConsistencyLevel consistencyLevel,
boolean allowHints)
 {
-assert message.verb == Verb.MUTATION || message.verb == 
Verb.COUNTER_MUTATION;
+assert message.verb == Verb.MUTATION || message.verb == 
Verb.COUNTER_MUTATION || message.verb == Verb.PAXOS_COMMIT;
 int messageId = nextId();
 
 CallbackInfo previous = callbacks.put(messageId,
@@ -651,7 +650,7 @@ public final class MessagingService implements 
MessagingServiceMBean
 }
 
 /**
- * Send a mutation message to a given endpoint. This method specifies a 
callback
+ * Send a mutation message or a Paxos Commit to a given endpoint. This 
method specifies a callback
  * which is invoked with the actual response.
  * Also holds the message (only mutation messages) to determine if it
  * needs to trigger a hint (uses StorageProxy for that).
@@ -662,7 +661,7 @@ public final class MessagingService implements 
MessagingServiceMBean
  *suggest that a timeout occurred to the invoker of the 
send().
  * @return an reference to message id used to match with the result
  */
-public int sendRR(MessageOut? extends IMutation message,
+public int sendRR(MessageOut? message,
   InetAddress to,
   AbstractWriteResponseHandler handler,
   boolean allowHints)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
--
diff --git a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java 
b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
index 987ec15..0cf126f 100644
--- a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
+++ b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
@@ -21,12 +21,14 @@ package org.apache.cassandra.net;
 

cassandra git commit: Allows single-column slice restrictions to be merged with multi-columns slice restrictions

2015-08-09 Thread blerer
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.1 1ae58ef3a - c8d163f73


Allows single-column slice restrictions to be merged with multi-columns slice 
restrictions

patch by Benjamin Lerer; reviewed by Sam Tunnicliffe for CASSANDRA-9606


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

Branch: refs/heads/cassandra-2.1
Commit: c8d163f73cad4cb61c12c6871e26489b52094d17
Parents: 1ae58ef
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 22:09:48 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 22:09:48 2015 +0200

--
 .../cql3/statements/MultiColumnRestriction.java | 10 +++-
 .../cassandra/cql3/statements/Restriction.java  |  5 +-
 .../cql3/statements/SelectStatement.java| 61 ++--
 .../statements/SingleColumnRestriction.java | 23 +++-
 .../SelectMultiColumnRelationTest.java  | 44 ++
 .../SelectSingleColumnRelationTest.java | 28 +
 6 files changed, 138 insertions(+), 33 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/c8d163f7/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
--
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java 
b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
index 6946c98..e2ba2a1 100644
--- a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
@@ -25,8 +25,11 @@ import 
org.apache.cassandra.exceptions.InvalidRequestException;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
+import org.apache.cassandra.cql3.Term.Terminal;
+
 public interface MultiColumnRestriction extends Restriction
 {
 public static class EQ extends SingleColumnRestriction.EQ implements 
MultiColumnRestriction
@@ -130,8 +133,11 @@ public interface MultiColumnRestriction extends Restriction
  */
 public ListByteBuffer componentBounds(Bound b, QueryOptions options) 
throws InvalidRequestException
 {
-Tuples.Value value = (Tuples.Value)bounds[b.idx].bind(options);
-return value.getElements();
+Terminal terminal = bounds[b.idx].bind(options);
+if (terminal instanceof Tuples.Value)
+return ((Tuples.Value) terminal).getElements();
+
+return Collections.singletonList(terminal.get(options));
 }
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c8d163f7/src/java/org/apache/cassandra/cql3/statements/Restriction.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/Restriction.java 
b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
index 485fd22..bd0277c 100644
--- a/src/java/org/apache/cassandra/cql3/statements/Restriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
@@ -20,7 +20,6 @@ package org.apache.cassandra.cql3.statements;
 import java.nio.ByteBuffer;
 import java.util.List;
 
-import org.apache.cassandra.cql3.ColumnIdentifier;
 import org.apache.cassandra.cql3.Operator;
 import org.apache.cassandra.cql3.QueryOptions;
 import org.apache.cassandra.cql3.Term;
@@ -63,6 +62,8 @@ public interface Restriction
 /** Returns true if the start or end bound (depending on the argument) 
is set, false otherwise */
 public boolean hasBound(Bound b);
 
+public Term bound(Bound b);
+
 public ByteBuffer bound(Bound b, QueryOptions options) throws 
InvalidRequestException;
 
 /** Returns true if the start or end bound (depending on the argument) 
is inclusive, false otherwise */
@@ -73,5 +74,7 @@ public interface Restriction
 public Operator getIndexOperator(Bound b);
 
 public void setBound(Operator type, Term t) throws 
InvalidRequestException;
+
+public void setBound(Slice restriction) throws InvalidRequestException;
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c8d163f7/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index 26a1ee1..44b780e 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ 

[1/5] cassandra git commit: Allows single-column slice restrictions to be merged with multi-columns slice restrictions

2015-08-09 Thread blerer
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 f568a5d8a - e389dc421


Allows single-column slice restrictions to be merged with multi-columns slice 
restrictions

patch by Benjamin Lerer; reviewed by Sam Tunnicliffe for CASSANDRA-9606


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

Branch: refs/heads/cassandra-3.0
Commit: de84a5c770ac1a429152dd79f0895b27aa544368
Parents: c9587cd
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 21:48:04 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 21:48:04 2015 +0200

--
 .../cql3/statements/MultiColumnRestriction.java | 10 +++-
 .../cassandra/cql3/statements/Restriction.java  |  4 ++
 .../cql3/statements/SelectStatement.java| 54 ++--
 .../statements/SingleColumnRestriction.java | 25 +++--
 .../cassandra/cql3/MultiColumnRelationTest.java | 49 +-
 .../cql3/SingleColumnRelationTest.java  | 53 +--
 6 files changed, 165 insertions(+), 30 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/de84a5c7/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
--
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java 
b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
index f643684..ed1e7f1 100644
--- a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
@@ -24,8 +24,11 @@ import 
org.apache.cassandra.exceptions.InvalidRequestException;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
+import org.apache.cassandra.cql3.Term.Terminal;
+
 public interface MultiColumnRestriction extends Restriction
 {
 public static class EQ extends SingleColumnRestriction.EQ implements 
MultiColumnRestriction
@@ -128,8 +131,11 @@ public interface MultiColumnRestriction extends Restriction
  */
 public ListByteBuffer componentBounds(Bound b, ListByteBuffer 
variables) throws InvalidRequestException
 {
-Tuples.Value value = (Tuples.Value)bounds[b.idx].bind(variables);
-return value.getElements();
+Terminal terminal = bounds[b.idx].bind(variables);
+if (terminal instanceof Tuples.Value)
+return ((Tuples.Value) terminal).getElements();
+
+return Collections.singletonList(terminal.get());
 }
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/de84a5c7/src/java/org/apache/cassandra/cql3/statements/Restriction.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/Restriction.java 
b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
index 3d33bde..f582c84 100644
--- a/src/java/org/apache/cassandra/cql3/statements/Restriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
@@ -54,6 +54,8 @@ public interface Restriction
 /** Returns true if the start or end bound (depending on the argument) 
is set, false otherwise */
 public boolean hasBound(Bound b);
 
+public Term bound(Bound b);
+
 public ByteBuffer bound(Bound b, ListByteBuffer variables) throws 
InvalidRequestException;
 
 /** Returns true if the start or end bound (depending on the argument) 
is inclusive, false otherwise */
@@ -64,5 +66,7 @@ public interface Restriction
 public IndexOperator getIndexOperator(Bound b);
 
 public void setBound(Relation.Type type, Term t) throws 
InvalidRequestException;
+
+public void setBound(Slice restriction) throws InvalidRequestException;
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/de84a5c7/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index aaf9579..a9eae7a 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@ -46,7 +46,6 @@ import org.apache.cassandra.service.StorageProxy;
 import org.apache.cassandra.service.StorageService;
 import org.apache.cassandra.service.pager.*;
 import org.apache.cassandra.db.ConsistencyLevel;
-import 

[3/5] cassandra git commit: Allows single-column slice restrictions to be merged with multi-columns slice restrictions

2015-08-09 Thread blerer
Allows single-column slice restrictions to be merged with multi-columns slice 
restrictions

patch by Benjamin Lerer; reviewed by Sam Tunnicliffe for CASSANDRA-9606


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

Branch: refs/heads/cassandra-3.0
Commit: c8d163f73cad4cb61c12c6871e26489b52094d17
Parents: 1ae58ef
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 22:09:48 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 22:09:48 2015 +0200

--
 .../cql3/statements/MultiColumnRestriction.java | 10 +++-
 .../cassandra/cql3/statements/Restriction.java  |  5 +-
 .../cql3/statements/SelectStatement.java| 61 ++--
 .../statements/SingleColumnRestriction.java | 23 +++-
 .../SelectMultiColumnRelationTest.java  | 44 ++
 .../SelectSingleColumnRelationTest.java | 28 +
 6 files changed, 138 insertions(+), 33 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/c8d163f7/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
--
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java 
b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
index 6946c98..e2ba2a1 100644
--- a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
@@ -25,8 +25,11 @@ import 
org.apache.cassandra.exceptions.InvalidRequestException;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
+import org.apache.cassandra.cql3.Term.Terminal;
+
 public interface MultiColumnRestriction extends Restriction
 {
 public static class EQ extends SingleColumnRestriction.EQ implements 
MultiColumnRestriction
@@ -130,8 +133,11 @@ public interface MultiColumnRestriction extends Restriction
  */
 public ListByteBuffer componentBounds(Bound b, QueryOptions options) 
throws InvalidRequestException
 {
-Tuples.Value value = (Tuples.Value)bounds[b.idx].bind(options);
-return value.getElements();
+Terminal terminal = bounds[b.idx].bind(options);
+if (terminal instanceof Tuples.Value)
+return ((Tuples.Value) terminal).getElements();
+
+return Collections.singletonList(terminal.get(options));
 }
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c8d163f7/src/java/org/apache/cassandra/cql3/statements/Restriction.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/Restriction.java 
b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
index 485fd22..bd0277c 100644
--- a/src/java/org/apache/cassandra/cql3/statements/Restriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
@@ -20,7 +20,6 @@ package org.apache.cassandra.cql3.statements;
 import java.nio.ByteBuffer;
 import java.util.List;
 
-import org.apache.cassandra.cql3.ColumnIdentifier;
 import org.apache.cassandra.cql3.Operator;
 import org.apache.cassandra.cql3.QueryOptions;
 import org.apache.cassandra.cql3.Term;
@@ -63,6 +62,8 @@ public interface Restriction
 /** Returns true if the start or end bound (depending on the argument) 
is set, false otherwise */
 public boolean hasBound(Bound b);
 
+public Term bound(Bound b);
+
 public ByteBuffer bound(Bound b, QueryOptions options) throws 
InvalidRequestException;
 
 /** Returns true if the start or end bound (depending on the argument) 
is inclusive, false otherwise */
@@ -73,5 +74,7 @@ public interface Restriction
 public Operator getIndexOperator(Bound b);
 
 public void setBound(Operator type, Term t) throws 
InvalidRequestException;
+
+public void setBound(Slice restriction) throws InvalidRequestException;
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c8d163f7/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index 26a1ee1..44b780e 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@ -1699,13 +1699,6 @@ public class 

[4/5] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2015-08-09 Thread blerer
Merge branch 'cassandra-2.1' into cassandra-2.2


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

Branch: refs/heads/cassandra-3.0
Commit: 6d0cf7dbd2221c13434958e9e0d5e418f58fe23f
Parents: 0b99d33 c8d163f
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 22:11:14 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 22:12:16 2015 +0200

--
 .../restrictions/MultiColumnRestriction.java| 37 +++
 .../restrictions/SingleColumnRestriction.java   | 68 ++--
 .../SelectMultiColumnRelationTest.java  | 45 +
 .../SelectSingleColumnRelationTest.java | 28 
 4 files changed, 149 insertions(+), 29 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d0cf7db/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
--
diff --cc 
src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
index c4bce4c,000..84a3952
mode 100644,00..100644
--- 
a/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
+++ 
b/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
@@@ -1,448 -1,0 +1,461 @@@
 +/*
 + * Licensed to the Apache Software Foundation (ASF) under one
 + * or more contributor license agreements.  See the NOTICE file
 + * distributed with this work for additional information
 + * regarding copyright ownership.  The ASF licenses this file
 + * to you under the Apache License, Version 2.0 (the
 + * License); you may not use this file except in compliance
 + * with the License.  You may obtain a copy of the License at
 + *
 + * http://www.apache.org/licenses/LICENSE-2.0
 + *
 + * Unless required by applicable law or agreed to in writing, software
 + * distributed under the License is distributed on an AS IS BASIS,
 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 + * See the License for the specific language governing permissions and
 + * limitations under the License.
 + */
 +package org.apache.cassandra.cql3.restrictions;
 +
 +import java.nio.ByteBuffer;
 +import java.util.*;
 +
++import org.apache.cassandra.cql3.Term.Terminal;
++
++import org.apache.cassandra.cql3.Term;
 +import org.apache.cassandra.config.ColumnDefinition;
 +import org.apache.cassandra.cql3.*;
 +import org.apache.cassandra.cql3.functions.Function;
 +import org.apache.cassandra.cql3.statements.Bound;
 +import org.apache.cassandra.db.IndexExpression;
 +import org.apache.cassandra.db.composites.CompositesBuilder;
 +import org.apache.cassandra.db.index.SecondaryIndex;
 +import org.apache.cassandra.db.index.SecondaryIndexManager;
 +import org.apache.cassandra.exceptions.InvalidRequestException;
- 
 +import static 
org.apache.cassandra.cql3.statements.RequestValidations.checkFalse;
 +import static 
org.apache.cassandra.cql3.statements.RequestValidations.checkNotNull;
 +import static 
org.apache.cassandra.cql3.statements.RequestValidations.checkTrue;
 +import static 
org.apache.cassandra.cql3.statements.RequestValidations.invalidRequest;
 +
 +public abstract class MultiColumnRestriction extends AbstractRestriction
 +{
 +/**
 + * The columns to which the restriction apply.
 + */
 +protected final ListColumnDefinition columnDefs;
 +
 +public MultiColumnRestriction(ListColumnDefinition columnDefs)
 +{
 +this.columnDefs = columnDefs;
 +}
 +
 +@Override
 +public boolean isMultiColumn()
 +{
 +return true;
 +}
 +
 +@Override
 +public ColumnDefinition getFirstColumn()
 +{
 +return columnDefs.get(0);
 +}
 +
 +@Override
 +public ColumnDefinition getLastColumn()
 +{
 +return columnDefs.get(columnDefs.size() - 1);
 +}
 +
 +@Override
 +public CollectionColumnDefinition getColumnDefs()
 +{
 +return columnDefs;
 +}
 +
 +@Override
 +public final Restriction mergeWith(Restriction otherRestriction) throws 
InvalidRequestException
 +{
- checkTrue(otherRestriction.isMultiColumn(),
-   Mixing single column relations and multi column 
relations on clustering columns is not allowed);
- return doMergeWith(otherRestriction);
++// We want to allow query like: (b,c)  (?, ?) AND b  ?
++if (!otherRestriction.isMultiColumn()
++ ((SingleColumnRestriction) 
otherRestriction).canBeConvertedToMultiColumnRestriction())
++{
++return doMergeWith(((SingleColumnRestriction) 

[2/5] cassandra git commit: Merge branch 'cassandra-2.0' into cassandra-2.1

2015-08-09 Thread blerer
Merge branch 'cassandra-2.0' into cassandra-2.1


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

Branch: refs/heads/cassandra-3.0
Commit: 1ae58ef3acc187a3728ca0dda3e98be8b3580ec1
Parents: 07a7e80 de84a5c
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 22:04:32 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 22:04:56 2015 +0200

--

--




[5/5] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2015-08-09 Thread blerer
Merge branch 'cassandra-2.2' into cassandra-3.0

Conflicts:

src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java

src/java/org/apache/cassandra/cql3/restrictions/SingleColumnRestriction.java


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

Branch: refs/heads/cassandra-3.0
Commit: e389dc421c0a4892388e99c1ada0b4c37f106b7b
Parents: f568a5d 6d0cf7d
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 22:46:52 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 22:46:52 2015 +0200

--
 .../restrictions/MultiColumnRestriction.java| 37 +++
 .../restrictions/SingleColumnRestriction.java   | 68 ++--
 .../SelectMultiColumnRelationTest.java  | 45 +
 .../SelectSingleColumnRelationTest.java | 28 
 4 files changed, 149 insertions(+), 29 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e389dc42/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
--
diff --cc 
src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
index e48a22b,84a3952..b0f592c
--- 
a/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
+++ 
b/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
@@@ -329,7 -340,7 +336,7 @@@ public abstract class MultiColumnRestri
  this(columnDefs, TermSlice.newInstance(bound, inclusive, term));
  }
  
- private SliceRestriction(ListColumnDefinition columnDefs, TermSlice 
slice)
 -Slice(ListColumnDefinition columnDefs, TermSlice slice)
++SliceRestriction(ListColumnDefinition columnDefs, TermSlice slice)
  {
  super(columnDefs);
  this.slice = slice;
@@@ -409,8 -418,10 +414,10 @@@
 More than one restriction was found for the end bound 
on %s,
 getColumnsInCommons(otherRestriction));
  
 -Slice otherSlice = (Slice) otherRestriction;
++SliceRestriction otherSlice = (SliceRestriction) otherRestriction;
  ListColumnDefinition newColumnDefs = columnDefs.size() = 
otherSlice.columnDefs.size() ?  columnDefs : otherSlice.columnDefs;
+ 
 -return new Slice(newColumnDefs, slice.merge(otherSlice.slice));
 +return new SliceRestriction(newColumnDefs, 
slice.merge(otherSlice.slice));
  }
  
  @Override

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e389dc42/src/java/org/apache/cassandra/cql3/restrictions/SingleColumnRestriction.java
--
diff --cc 
src/java/org/apache/cassandra/cql3/restrictions/SingleColumnRestriction.java
index f96b7a0,afa0419..a6ed4b4
--- 
a/src/java/org/apache/cassandra/cql3/restrictions/SingleColumnRestriction.java
+++ 
b/src/java/org/apache/cassandra/cql3/restrictions/SingleColumnRestriction.java
@@@ -27,12 -27,12 +27,11 @@@ import org.apache.cassandra.cql3.*
  import org.apache.cassandra.cql3.Term.Terminal;
  import org.apache.cassandra.cql3.functions.Function;
  import org.apache.cassandra.cql3.statements.Bound;
 -import org.apache.cassandra.db.IndexExpression;
 -import org.apache.cassandra.db.composites.CompositesBuilder;
 +import org.apache.cassandra.db.MultiCBuilder;
 +import org.apache.cassandra.db.filter.RowFilter;
  import org.apache.cassandra.db.index.SecondaryIndex;
  import org.apache.cassandra.db.index.SecondaryIndexManager;
 -import org.apache.cassandra.db.marshal.CompositeType;
  import org.apache.cassandra.exceptions.InvalidRequestException;
- 
  import static 
org.apache.cassandra.cql3.statements.RequestValidations.checkBindValueSet;
  import static 
org.apache.cassandra.cql3.statements.RequestValidations.checkFalse;
  import static 
org.apache.cassandra.cql3.statements.RequestValidations.checkNotNull;
@@@ -119,11 -140,18 +139,17 @@@ public abstract class SingleColumnRestr
  }
  
  @Override
+ MultiColumnRestriction toMultiColumnRestriction()
+ {
 -return new 
MultiColumnRestriction.EQ(Collections.singletonList(columnDef), value);
++return new 
MultiColumnRestriction.EQRestriction(Collections.singletonList(columnDef), 
value);
+ }
+ 
+ @Override
 -public void addIndexExpressionTo(ListIndexExpression expressions,
 - SecondaryIndexManager indexManager,
 - QueryOptions options) throws 

cassandra git commit: Makes AggregationTest.testAggregateWithWriteTimeOrTTL more robust

2015-08-09 Thread blerer
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.2 087153394 - a5297f16e


Makes AggregationTest.testAggregateWithWriteTimeOrTTL more robust

patch by Benjamin Lerer; reviewed by Aleksey Yeschenko for CASSANDRA-9891


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

Branch: refs/heads/cassandra-2.2
Commit: a5297f16eede718eac021f27d6825d1062661be6
Parents: 0871533
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 21:12:11 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 21:12:11 2015 +0200

--
 .../cql3/validation/operations/AggregationTest.java  | 11 ++-
 1 file changed, 6 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a5297f16/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
--
diff --git 
a/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
 
b/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
index 51e4a28..120fc21 100644
--- 
a/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
+++ 
b/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
@@ -167,7 +167,7 @@ public class AggregationTest extends CQLTester
 }
 
 @Test
-public void testAggregateWithWithWriteTimeOrTTL() throws Throwable
+public void testAggregateWithWriteTimeOrTTL() throws Throwable
 {
 createTable(CREATE TABLE %s (a int primary key, b int, c int));
 
@@ -180,8 +180,9 @@ public class AggregationTest extends CQLTester
 long today = System.currentTimeMillis() * 1000;
 long yesterday = today - (DateUtils.MILLIS_PER_DAY * 1000);
 
-execute(INSERT INTO %s (a, b, c) VALUES (1, 2, null) USING TTL 5;);
-execute(INSERT INTO %s (a, b, c) VALUES (2, 4, 6) USING TTL 2;);
+final int secondsPerMinute = 60;
+execute(INSERT INTO %s (a, b, c) VALUES (1, 2, null) USING TTL  + 
(20 * secondsPerMinute));
+execute(INSERT INTO %s (a, b, c) VALUES (2, 4, 6) USING TTL  + (10 * 
secondsPerMinute));
 execute(INSERT INTO %s (a, b, c) VALUES (4, 8, 12) USING TIMESTAMP  
+ yesterday );
 
 assertRows(execute(SELECT count(writetime(b)), count(ttl(b)) FROM 
%s),
@@ -190,8 +191,8 @@ public class AggregationTest extends CQLTester
 UntypedResultSet resultSet = execute(SELECT min(ttl(b)), ttl(b) FROM 
%s);
 assertEquals(1, resultSet.size());
 Row row = resultSet.one();
-assertTrue(row.getInt(ttl(b))  4);
-assertTrue(row.getInt(system.min(ttl(b))) = 2);
+assertTrue(row.getInt(ttl(b))  (10 * secondsPerMinute));
+assertTrue(row.getInt(system.min(ttl(b))) = (10 * 
secondsPerMinute));
 
 resultSet = execute(SELECT min(writetime(b)), writetime(b) FROM %s);
 assertEquals(1, resultSet.size());



[1/3] cassandra git commit: Makes AggregationTest.testAggregateWithWriteTimeOrTTL more robust

2015-08-09 Thread blerer
Repository: cassandra
Updated Branches:
  refs/heads/trunk 98cc1ee09 - 680accedb


Makes AggregationTest.testAggregateWithWriteTimeOrTTL more robust

patch by Benjamin Lerer; reviewed by Aleksey Yeschenko for CASSANDRA-9891


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

Branch: refs/heads/trunk
Commit: a5297f16eede718eac021f27d6825d1062661be6
Parents: 0871533
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 21:12:11 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 21:12:11 2015 +0200

--
 .../cql3/validation/operations/AggregationTest.java  | 11 ++-
 1 file changed, 6 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a5297f16/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
--
diff --git 
a/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
 
b/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
index 51e4a28..120fc21 100644
--- 
a/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
+++ 
b/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
@@ -167,7 +167,7 @@ public class AggregationTest extends CQLTester
 }
 
 @Test
-public void testAggregateWithWithWriteTimeOrTTL() throws Throwable
+public void testAggregateWithWriteTimeOrTTL() throws Throwable
 {
 createTable(CREATE TABLE %s (a int primary key, b int, c int));
 
@@ -180,8 +180,9 @@ public class AggregationTest extends CQLTester
 long today = System.currentTimeMillis() * 1000;
 long yesterday = today - (DateUtils.MILLIS_PER_DAY * 1000);
 
-execute(INSERT INTO %s (a, b, c) VALUES (1, 2, null) USING TTL 5;);
-execute(INSERT INTO %s (a, b, c) VALUES (2, 4, 6) USING TTL 2;);
+final int secondsPerMinute = 60;
+execute(INSERT INTO %s (a, b, c) VALUES (1, 2, null) USING TTL  + 
(20 * secondsPerMinute));
+execute(INSERT INTO %s (a, b, c) VALUES (2, 4, 6) USING TTL  + (10 * 
secondsPerMinute));
 execute(INSERT INTO %s (a, b, c) VALUES (4, 8, 12) USING TIMESTAMP  
+ yesterday );
 
 assertRows(execute(SELECT count(writetime(b)), count(ttl(b)) FROM 
%s),
@@ -190,8 +191,8 @@ public class AggregationTest extends CQLTester
 UntypedResultSet resultSet = execute(SELECT min(ttl(b)), ttl(b) FROM 
%s);
 assertEquals(1, resultSet.size());
 Row row = resultSet.one();
-assertTrue(row.getInt(ttl(b))  4);
-assertTrue(row.getInt(system.min(ttl(b))) = 2);
+assertTrue(row.getInt(ttl(b))  (10 * secondsPerMinute));
+assertTrue(row.getInt(system.min(ttl(b))) = (10 * 
secondsPerMinute));
 
 resultSet = execute(SELECT min(writetime(b)), writetime(b) FROM %s);
 assertEquals(1, resultSet.size());



[2/3] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2015-08-09 Thread blerer
Merge branch 'cassandra-2.2' into cassandra-3.0


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

Branch: refs/heads/trunk
Commit: 8984ca79f1f9a0fa59642650f7145d572b0a9b9b
Parents: e2ad7d5 a5297f1
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 21:23:28 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 21:23:50 2015 +0200

--
 .../cql3/validation/operations/AggregationTest.java  | 11 ++-
 1 file changed, 6 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/8984ca79/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
--



[3/3] cassandra git commit: Merge branch 'cassandra-3.0' into trunk

2015-08-09 Thread blerer
Merge branch 'cassandra-3.0' into trunk


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

Branch: refs/heads/trunk
Commit: 680accedb31589d81f2742febc0677159136c1f9
Parents: 98cc1ee 8984ca7
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 21:27:00 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 21:27:24 2015 +0200

--
 .../cql3/validation/operations/AggregationTest.java  | 11 ++-
 1 file changed, 6 insertions(+), 5 deletions(-)
--




cassandra git commit: Allows single-column slice restrictions to be merged with multi-columns slice restrictions

2015-08-09 Thread blerer
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.0 c9587cd2b - de84a5c77


Allows single-column slice restrictions to be merged with multi-columns slice 
restrictions

patch by Benjamin Lerer; reviewed by Sam Tunnicliffe for CASSANDRA-9606


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

Branch: refs/heads/cassandra-2.0
Commit: de84a5c770ac1a429152dd79f0895b27aa544368
Parents: c9587cd
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 21:48:04 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 21:48:04 2015 +0200

--
 .../cql3/statements/MultiColumnRestriction.java | 10 +++-
 .../cassandra/cql3/statements/Restriction.java  |  4 ++
 .../cql3/statements/SelectStatement.java| 54 ++--
 .../statements/SingleColumnRestriction.java | 25 +++--
 .../cassandra/cql3/MultiColumnRelationTest.java | 49 +-
 .../cql3/SingleColumnRelationTest.java  | 53 +--
 6 files changed, 165 insertions(+), 30 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/de84a5c7/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
--
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java 
b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
index f643684..ed1e7f1 100644
--- a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
@@ -24,8 +24,11 @@ import 
org.apache.cassandra.exceptions.InvalidRequestException;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
+import org.apache.cassandra.cql3.Term.Terminal;
+
 public interface MultiColumnRestriction extends Restriction
 {
 public static class EQ extends SingleColumnRestriction.EQ implements 
MultiColumnRestriction
@@ -128,8 +131,11 @@ public interface MultiColumnRestriction extends Restriction
  */
 public ListByteBuffer componentBounds(Bound b, ListByteBuffer 
variables) throws InvalidRequestException
 {
-Tuples.Value value = (Tuples.Value)bounds[b.idx].bind(variables);
-return value.getElements();
+Terminal terminal = bounds[b.idx].bind(variables);
+if (terminal instanceof Tuples.Value)
+return ((Tuples.Value) terminal).getElements();
+
+return Collections.singletonList(terminal.get());
 }
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/de84a5c7/src/java/org/apache/cassandra/cql3/statements/Restriction.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/Restriction.java 
b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
index 3d33bde..f582c84 100644
--- a/src/java/org/apache/cassandra/cql3/statements/Restriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
@@ -54,6 +54,8 @@ public interface Restriction
 /** Returns true if the start or end bound (depending on the argument) 
is set, false otherwise */
 public boolean hasBound(Bound b);
 
+public Term bound(Bound b);
+
 public ByteBuffer bound(Bound b, ListByteBuffer variables) throws 
InvalidRequestException;
 
 /** Returns true if the start or end bound (depending on the argument) 
is inclusive, false otherwise */
@@ -64,5 +66,7 @@ public interface Restriction
 public IndexOperator getIndexOperator(Bound b);
 
 public void setBound(Relation.Type type, Term t) throws 
InvalidRequestException;
+
+public void setBound(Slice restriction) throws InvalidRequestException;
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/de84a5c7/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index aaf9579..a9eae7a 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@ -46,7 +46,6 @@ import org.apache.cassandra.service.StorageProxy;
 import org.apache.cassandra.service.StorageService;
 import org.apache.cassandra.service.pager.*;
 import org.apache.cassandra.db.ConsistencyLevel;
-import 

cassandra git commit: Write hints for paxos commits

2015-08-09 Thread aleksey
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.1 3b7934f1a - 07a7e80c3


Write hints for paxos commits

patch by Sankalp Kohli and Aleksey Yeschenko for CASSANDRA-7342


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

Branch: refs/heads/cassandra-2.1
Commit: 07a7e80c321b6667cc44a236f999c7837fe48e20
Parents: 3b7934f
Author: sankalp kohli kohlisank...@gmail.com
Authored: Thu Aug 6 18:56:37 2015 +0300
Committer: Aleksey Yeschenko alek...@apache.org
Committed: Sun Aug 9 22:52:03 2015 +0300

--
 CHANGES.txt |  1 +
 src/java/org/apache/cassandra/net/MessagingService.java | 11 +--
 .../org/apache/cassandra/net/WriteCallbackInfo.java | 11 ++-
 src/java/org/apache/cassandra/service/StorageProxy.java | 12 
 4 files changed, 24 insertions(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 3b0241c..7151883 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.9
+ * Write hints for paxos commits (CASSANDRA-7342)
  * (cqlsh) Fix timestamps before 1970 on Windows, always
use UTC for timestamp display (CASSANDRA-1)
  * (cqlsh) Avoid overwriting new config file with old config

http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/net/MessagingService.java
--
diff --git a/src/java/org/apache/cassandra/net/MessagingService.java 
b/src/java/org/apache/cassandra/net/MessagingService.java
index 1ad0e7c..d7825d4 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -379,8 +379,7 @@ public final class MessagingService implements 
MessagingServiceMBean
 
 if (expiredCallbackInfo.shouldHint())
 {
-Mutation mutation = (Mutation) ((WriteCallbackInfo) 
expiredCallbackInfo).sentMessage.payload;
-
+Mutation mutation = ((WriteCallbackInfo) 
expiredCallbackInfo).mutation();
 return StorageProxy.submitHint(mutation, 
expiredCallbackInfo.target, null);
 }
 
@@ -594,13 +593,13 @@ public final class MessagingService implements 
MessagingServiceMBean
 }
 
 public int addCallback(IAsyncCallback cb,
-   MessageOut? extends IMutation message,
+   MessageOut? message,
InetAddress to,
long timeout,
ConsistencyLevel consistencyLevel,
boolean allowHints)
 {
-assert message.verb == Verb.MUTATION || message.verb == 
Verb.COUNTER_MUTATION;
+assert message.verb == Verb.MUTATION || message.verb == 
Verb.COUNTER_MUTATION || message.verb == Verb.PAXOS_COMMIT;
 int messageId = nextId();
 
 CallbackInfo previous = callbacks.put(messageId,
@@ -651,7 +650,7 @@ public final class MessagingService implements 
MessagingServiceMBean
 }
 
 /**
- * Send a mutation message to a given endpoint. This method specifies a 
callback
+ * Send a mutation message or a Paxos Commit to a given endpoint. This 
method specifies a callback
  * which is invoked with the actual response.
  * Also holds the message (only mutation messages) to determine if it
  * needs to trigger a hint (uses StorageProxy for that).
@@ -662,7 +661,7 @@ public final class MessagingService implements 
MessagingServiceMBean
  *suggest that a timeout occurred to the invoker of the 
send().
  * @return an reference to message id used to match with the result
  */
-public int sendRR(MessageOut? extends IMutation message,
+public int sendRR(MessageOut? message,
   InetAddress to,
   AbstractWriteResponseHandler handler,
   boolean allowHints)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
--
diff --git a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java 
b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
index 987ec15..0cf126f 100644
--- a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
+++ b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
@@ -21,12 +21,14 @@ package org.apache.cassandra.net;
 

[2/6] cassandra git commit: Merge branch 'cassandra-2.0' into cassandra-2.1

2015-08-09 Thread blerer
Merge branch 'cassandra-2.0' into cassandra-2.1


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

Branch: refs/heads/trunk
Commit: 1ae58ef3acc187a3728ca0dda3e98be8b3580ec1
Parents: 07a7e80 de84a5c
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 22:04:32 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 22:04:56 2015 +0200

--

--




[1/6] cassandra git commit: Allows single-column slice restrictions to be merged with multi-columns slice restrictions

2015-08-09 Thread blerer
Repository: cassandra
Updated Branches:
  refs/heads/trunk b6d5f2cf3 - ba56b8221


Allows single-column slice restrictions to be merged with multi-columns slice 
restrictions

patch by Benjamin Lerer; reviewed by Sam Tunnicliffe for CASSANDRA-9606


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

Branch: refs/heads/trunk
Commit: de84a5c770ac1a429152dd79f0895b27aa544368
Parents: c9587cd
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 21:48:04 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 21:48:04 2015 +0200

--
 .../cql3/statements/MultiColumnRestriction.java | 10 +++-
 .../cassandra/cql3/statements/Restriction.java  |  4 ++
 .../cql3/statements/SelectStatement.java| 54 ++--
 .../statements/SingleColumnRestriction.java | 25 +++--
 .../cassandra/cql3/MultiColumnRelationTest.java | 49 +-
 .../cql3/SingleColumnRelationTest.java  | 53 +--
 6 files changed, 165 insertions(+), 30 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/de84a5c7/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
--
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java 
b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
index f643684..ed1e7f1 100644
--- a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
@@ -24,8 +24,11 @@ import 
org.apache.cassandra.exceptions.InvalidRequestException;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
+import org.apache.cassandra.cql3.Term.Terminal;
+
 public interface MultiColumnRestriction extends Restriction
 {
 public static class EQ extends SingleColumnRestriction.EQ implements 
MultiColumnRestriction
@@ -128,8 +131,11 @@ public interface MultiColumnRestriction extends Restriction
  */
 public ListByteBuffer componentBounds(Bound b, ListByteBuffer 
variables) throws InvalidRequestException
 {
-Tuples.Value value = (Tuples.Value)bounds[b.idx].bind(variables);
-return value.getElements();
+Terminal terminal = bounds[b.idx].bind(variables);
+if (terminal instanceof Tuples.Value)
+return ((Tuples.Value) terminal).getElements();
+
+return Collections.singletonList(terminal.get());
 }
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/de84a5c7/src/java/org/apache/cassandra/cql3/statements/Restriction.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/Restriction.java 
b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
index 3d33bde..f582c84 100644
--- a/src/java/org/apache/cassandra/cql3/statements/Restriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
@@ -54,6 +54,8 @@ public interface Restriction
 /** Returns true if the start or end bound (depending on the argument) 
is set, false otherwise */
 public boolean hasBound(Bound b);
 
+public Term bound(Bound b);
+
 public ByteBuffer bound(Bound b, ListByteBuffer variables) throws 
InvalidRequestException;
 
 /** Returns true if the start or end bound (depending on the argument) 
is inclusive, false otherwise */
@@ -64,5 +66,7 @@ public interface Restriction
 public IndexOperator getIndexOperator(Bound b);
 
 public void setBound(Relation.Type type, Term t) throws 
InvalidRequestException;
+
+public void setBound(Slice restriction) throws InvalidRequestException;
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/de84a5c7/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index aaf9579..a9eae7a 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@ -46,7 +46,6 @@ import org.apache.cassandra.service.StorageProxy;
 import org.apache.cassandra.service.StorageService;
 import org.apache.cassandra.service.pager.*;
 import org.apache.cassandra.db.ConsistencyLevel;
-import 

[4/6] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2015-08-09 Thread blerer
Merge branch 'cassandra-2.1' into cassandra-2.2


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

Branch: refs/heads/trunk
Commit: 6d0cf7dbd2221c13434958e9e0d5e418f58fe23f
Parents: 0b99d33 c8d163f
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 22:11:14 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 22:12:16 2015 +0200

--
 .../restrictions/MultiColumnRestriction.java| 37 +++
 .../restrictions/SingleColumnRestriction.java   | 68 ++--
 .../SelectMultiColumnRelationTest.java  | 45 +
 .../SelectSingleColumnRelationTest.java | 28 
 4 files changed, 149 insertions(+), 29 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d0cf7db/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
--
diff --cc 
src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
index c4bce4c,000..84a3952
mode 100644,00..100644
--- 
a/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
+++ 
b/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
@@@ -1,448 -1,0 +1,461 @@@
 +/*
 + * Licensed to the Apache Software Foundation (ASF) under one
 + * or more contributor license agreements.  See the NOTICE file
 + * distributed with this work for additional information
 + * regarding copyright ownership.  The ASF licenses this file
 + * to you under the Apache License, Version 2.0 (the
 + * License); you may not use this file except in compliance
 + * with the License.  You may obtain a copy of the License at
 + *
 + * http://www.apache.org/licenses/LICENSE-2.0
 + *
 + * Unless required by applicable law or agreed to in writing, software
 + * distributed under the License is distributed on an AS IS BASIS,
 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 + * See the License for the specific language governing permissions and
 + * limitations under the License.
 + */
 +package org.apache.cassandra.cql3.restrictions;
 +
 +import java.nio.ByteBuffer;
 +import java.util.*;
 +
++import org.apache.cassandra.cql3.Term.Terminal;
++
++import org.apache.cassandra.cql3.Term;
 +import org.apache.cassandra.config.ColumnDefinition;
 +import org.apache.cassandra.cql3.*;
 +import org.apache.cassandra.cql3.functions.Function;
 +import org.apache.cassandra.cql3.statements.Bound;
 +import org.apache.cassandra.db.IndexExpression;
 +import org.apache.cassandra.db.composites.CompositesBuilder;
 +import org.apache.cassandra.db.index.SecondaryIndex;
 +import org.apache.cassandra.db.index.SecondaryIndexManager;
 +import org.apache.cassandra.exceptions.InvalidRequestException;
- 
 +import static 
org.apache.cassandra.cql3.statements.RequestValidations.checkFalse;
 +import static 
org.apache.cassandra.cql3.statements.RequestValidations.checkNotNull;
 +import static 
org.apache.cassandra.cql3.statements.RequestValidations.checkTrue;
 +import static 
org.apache.cassandra.cql3.statements.RequestValidations.invalidRequest;
 +
 +public abstract class MultiColumnRestriction extends AbstractRestriction
 +{
 +/**
 + * The columns to which the restriction apply.
 + */
 +protected final ListColumnDefinition columnDefs;
 +
 +public MultiColumnRestriction(ListColumnDefinition columnDefs)
 +{
 +this.columnDefs = columnDefs;
 +}
 +
 +@Override
 +public boolean isMultiColumn()
 +{
 +return true;
 +}
 +
 +@Override
 +public ColumnDefinition getFirstColumn()
 +{
 +return columnDefs.get(0);
 +}
 +
 +@Override
 +public ColumnDefinition getLastColumn()
 +{
 +return columnDefs.get(columnDefs.size() - 1);
 +}
 +
 +@Override
 +public CollectionColumnDefinition getColumnDefs()
 +{
 +return columnDefs;
 +}
 +
 +@Override
 +public final Restriction mergeWith(Restriction otherRestriction) throws 
InvalidRequestException
 +{
- checkTrue(otherRestriction.isMultiColumn(),
-   Mixing single column relations and multi column 
relations on clustering columns is not allowed);
- return doMergeWith(otherRestriction);
++// We want to allow query like: (b,c)  (?, ?) AND b  ?
++if (!otherRestriction.isMultiColumn()
++ ((SingleColumnRestriction) 
otherRestriction).canBeConvertedToMultiColumnRestriction())
++{
++return doMergeWith(((SingleColumnRestriction) 

[3/6] cassandra git commit: Allows single-column slice restrictions to be merged with multi-columns slice restrictions

2015-08-09 Thread blerer
Allows single-column slice restrictions to be merged with multi-columns slice 
restrictions

patch by Benjamin Lerer; reviewed by Sam Tunnicliffe for CASSANDRA-9606


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

Branch: refs/heads/trunk
Commit: c8d163f73cad4cb61c12c6871e26489b52094d17
Parents: 1ae58ef
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 22:09:48 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 22:09:48 2015 +0200

--
 .../cql3/statements/MultiColumnRestriction.java | 10 +++-
 .../cassandra/cql3/statements/Restriction.java  |  5 +-
 .../cql3/statements/SelectStatement.java| 61 ++--
 .../statements/SingleColumnRestriction.java | 23 +++-
 .../SelectMultiColumnRelationTest.java  | 44 ++
 .../SelectSingleColumnRelationTest.java | 28 +
 6 files changed, 138 insertions(+), 33 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/c8d163f7/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
--
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java 
b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
index 6946c98..e2ba2a1 100644
--- a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
@@ -25,8 +25,11 @@ import 
org.apache.cassandra.exceptions.InvalidRequestException;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
+import org.apache.cassandra.cql3.Term.Terminal;
+
 public interface MultiColumnRestriction extends Restriction
 {
 public static class EQ extends SingleColumnRestriction.EQ implements 
MultiColumnRestriction
@@ -130,8 +133,11 @@ public interface MultiColumnRestriction extends Restriction
  */
 public ListByteBuffer componentBounds(Bound b, QueryOptions options) 
throws InvalidRequestException
 {
-Tuples.Value value = (Tuples.Value)bounds[b.idx].bind(options);
-return value.getElements();
+Terminal terminal = bounds[b.idx].bind(options);
+if (terminal instanceof Tuples.Value)
+return ((Tuples.Value) terminal).getElements();
+
+return Collections.singletonList(terminal.get(options));
 }
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c8d163f7/src/java/org/apache/cassandra/cql3/statements/Restriction.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/Restriction.java 
b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
index 485fd22..bd0277c 100644
--- a/src/java/org/apache/cassandra/cql3/statements/Restriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
@@ -20,7 +20,6 @@ package org.apache.cassandra.cql3.statements;
 import java.nio.ByteBuffer;
 import java.util.List;
 
-import org.apache.cassandra.cql3.ColumnIdentifier;
 import org.apache.cassandra.cql3.Operator;
 import org.apache.cassandra.cql3.QueryOptions;
 import org.apache.cassandra.cql3.Term;
@@ -63,6 +62,8 @@ public interface Restriction
 /** Returns true if the start or end bound (depending on the argument) 
is set, false otherwise */
 public boolean hasBound(Bound b);
 
+public Term bound(Bound b);
+
 public ByteBuffer bound(Bound b, QueryOptions options) throws 
InvalidRequestException;
 
 /** Returns true if the start or end bound (depending on the argument) 
is inclusive, false otherwise */
@@ -73,5 +74,7 @@ public interface Restriction
 public Operator getIndexOperator(Bound b);
 
 public void setBound(Operator type, Term t) throws 
InvalidRequestException;
+
+public void setBound(Slice restriction) throws InvalidRequestException;
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c8d163f7/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index 26a1ee1..44b780e 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@ -1699,13 +1699,6 @@ public class SelectStatement 

[6/6] cassandra git commit: Merge branch 'cassandra-3.0' into trunk

2015-08-09 Thread blerer
Merge branch 'cassandra-3.0' into trunk


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

Branch: refs/heads/trunk
Commit: ba56b8221b5906633dc41155a6fc0a4a2b6571f7
Parents: b6d5f2c e389dc4
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 22:50:32 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 22:50:46 2015 +0200

--
 .../restrictions/MultiColumnRestriction.java| 37 +++
 .../restrictions/SingleColumnRestriction.java   | 68 ++--
 .../SelectMultiColumnRelationTest.java  | 45 +
 .../SelectSingleColumnRelationTest.java | 28 
 4 files changed, 149 insertions(+), 29 deletions(-)
--




[5/6] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2015-08-09 Thread blerer
Merge branch 'cassandra-2.2' into cassandra-3.0

Conflicts:

src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java

src/java/org/apache/cassandra/cql3/restrictions/SingleColumnRestriction.java


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

Branch: refs/heads/trunk
Commit: e389dc421c0a4892388e99c1ada0b4c37f106b7b
Parents: f568a5d 6d0cf7d
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 22:46:52 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 22:46:52 2015 +0200

--
 .../restrictions/MultiColumnRestriction.java| 37 +++
 .../restrictions/SingleColumnRestriction.java   | 68 ++--
 .../SelectMultiColumnRelationTest.java  | 45 +
 .../SelectSingleColumnRelationTest.java | 28 
 4 files changed, 149 insertions(+), 29 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e389dc42/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
--
diff --cc 
src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
index e48a22b,84a3952..b0f592c
--- 
a/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
+++ 
b/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
@@@ -329,7 -340,7 +336,7 @@@ public abstract class MultiColumnRestri
  this(columnDefs, TermSlice.newInstance(bound, inclusive, term));
  }
  
- private SliceRestriction(ListColumnDefinition columnDefs, TermSlice 
slice)
 -Slice(ListColumnDefinition columnDefs, TermSlice slice)
++SliceRestriction(ListColumnDefinition columnDefs, TermSlice slice)
  {
  super(columnDefs);
  this.slice = slice;
@@@ -409,8 -418,10 +414,10 @@@
 More than one restriction was found for the end bound 
on %s,
 getColumnsInCommons(otherRestriction));
  
 -Slice otherSlice = (Slice) otherRestriction;
++SliceRestriction otherSlice = (SliceRestriction) otherRestriction;
  ListColumnDefinition newColumnDefs = columnDefs.size() = 
otherSlice.columnDefs.size() ?  columnDefs : otherSlice.columnDefs;
+ 
 -return new Slice(newColumnDefs, slice.merge(otherSlice.slice));
 +return new SliceRestriction(newColumnDefs, 
slice.merge(otherSlice.slice));
  }
  
  @Override

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e389dc42/src/java/org/apache/cassandra/cql3/restrictions/SingleColumnRestriction.java
--
diff --cc 
src/java/org/apache/cassandra/cql3/restrictions/SingleColumnRestriction.java
index f96b7a0,afa0419..a6ed4b4
--- 
a/src/java/org/apache/cassandra/cql3/restrictions/SingleColumnRestriction.java
+++ 
b/src/java/org/apache/cassandra/cql3/restrictions/SingleColumnRestriction.java
@@@ -27,12 -27,12 +27,11 @@@ import org.apache.cassandra.cql3.*
  import org.apache.cassandra.cql3.Term.Terminal;
  import org.apache.cassandra.cql3.functions.Function;
  import org.apache.cassandra.cql3.statements.Bound;
 -import org.apache.cassandra.db.IndexExpression;
 -import org.apache.cassandra.db.composites.CompositesBuilder;
 +import org.apache.cassandra.db.MultiCBuilder;
 +import org.apache.cassandra.db.filter.RowFilter;
  import org.apache.cassandra.db.index.SecondaryIndex;
  import org.apache.cassandra.db.index.SecondaryIndexManager;
 -import org.apache.cassandra.db.marshal.CompositeType;
  import org.apache.cassandra.exceptions.InvalidRequestException;
- 
  import static 
org.apache.cassandra.cql3.statements.RequestValidations.checkBindValueSet;
  import static 
org.apache.cassandra.cql3.statements.RequestValidations.checkFalse;
  import static 
org.apache.cassandra.cql3.statements.RequestValidations.checkNotNull;
@@@ -119,11 -140,18 +139,17 @@@ public abstract class SingleColumnRestr
  }
  
  @Override
+ MultiColumnRestriction toMultiColumnRestriction()
+ {
 -return new 
MultiColumnRestriction.EQ(Collections.singletonList(columnDef), value);
++return new 
MultiColumnRestriction.EQRestriction(Collections.singletonList(columnDef), 
value);
+ }
+ 
+ @Override
 -public void addIndexExpressionTo(ListIndexExpression expressions,
 - SecondaryIndexManager indexManager,
 - QueryOptions options) throws 
InvalidRequestException
 

[2/3] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2015-08-09 Thread aleksey
Merge branch 'cassandra-2.1' into cassandra-2.2


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

Branch: refs/heads/cassandra-3.0
Commit: 0b99d33eec5e703b6643aafc3a40a54f3fb088a0
Parents: a5297f1 07a7e80
Author: Aleksey Yeschenko alek...@apache.org
Authored: Sun Aug 9 23:01:06 2015 +0300
Committer: Aleksey Yeschenko alek...@apache.org
Committed: Sun Aug 9 23:01:06 2015 +0300

--
 CHANGES.txt|  1 +
 .../org/apache/cassandra/net/MessagingService.java | 13 ++---
 .../org/apache/cassandra/net/WriteCallbackInfo.java| 11 ++-
 .../org/apache/cassandra/service/StorageProxy.java | 12 
 4 files changed, 25 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/CHANGES.txt
--
diff --cc CHANGES.txt
index 705e560,7151883..a913fe7
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,10 -1,5 +1,11 @@@
 -2.1.9
 +2.2.1
 + * Add checksum to saved cache files (CASSANDRA-9265)
 + * Log warning when using an aggregate without partition key (CASSANDRA-9737)
 + * Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900)
 + * UDF / UDA execution time in trace (CASSANDRA-9723)
 + * Fix broken internode SSL (CASSANDRA-9884)
 +Merged from 2.1:
+  * Write hints for paxos commits (CASSANDRA-7342)
   * (cqlsh) Fix timestamps before 1970 on Windows, always
 use UTC for timestamp display (CASSANDRA-1)
   * (cqlsh) Avoid overwriting new config file with old config

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/net/MessagingService.java
--
diff --cc src/java/org/apache/cassandra/net/MessagingService.java
index bb46bbf,d7825d4..f8fd6fd
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@@ -680,9 -661,9 +679,9 @@@ public final class MessagingService imp
   *suggest that a timeout occurred to the invoker of the 
send().
   * @return an reference to message id used to match with the result
   */
- public int sendRR(MessageOut? extends IMutation message,
+ public int sendRR(MessageOut? message,
InetAddress to,
-   AbstractWriteResponseHandler? extends IMutation 
handler,
 -  AbstractWriteResponseHandler handler,
++  AbstractWriteResponseHandler? handler,
boolean allowHints)
  {
  int id = addCallback(handler, message, to, message.getTimeout(), 
handler.consistencyLevel, allowHints);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
--

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



[1/3] cassandra git commit: Write hints for paxos commits

2015-08-09 Thread aleksey
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 8984ca79f - f568a5d8a


Write hints for paxos commits

patch by Sankalp Kohli and Aleksey Yeschenko for CASSANDRA-7342


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

Branch: refs/heads/cassandra-3.0
Commit: 07a7e80c321b6667cc44a236f999c7837fe48e20
Parents: 3b7934f
Author: sankalp kohli kohlisank...@gmail.com
Authored: Thu Aug 6 18:56:37 2015 +0300
Committer: Aleksey Yeschenko alek...@apache.org
Committed: Sun Aug 9 22:52:03 2015 +0300

--
 CHANGES.txt |  1 +
 src/java/org/apache/cassandra/net/MessagingService.java | 11 +--
 .../org/apache/cassandra/net/WriteCallbackInfo.java | 11 ++-
 src/java/org/apache/cassandra/service/StorageProxy.java | 12 
 4 files changed, 24 insertions(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 3b0241c..7151883 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.9
+ * Write hints for paxos commits (CASSANDRA-7342)
  * (cqlsh) Fix timestamps before 1970 on Windows, always
use UTC for timestamp display (CASSANDRA-1)
  * (cqlsh) Avoid overwriting new config file with old config

http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/net/MessagingService.java
--
diff --git a/src/java/org/apache/cassandra/net/MessagingService.java 
b/src/java/org/apache/cassandra/net/MessagingService.java
index 1ad0e7c..d7825d4 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -379,8 +379,7 @@ public final class MessagingService implements 
MessagingServiceMBean
 
 if (expiredCallbackInfo.shouldHint())
 {
-Mutation mutation = (Mutation) ((WriteCallbackInfo) 
expiredCallbackInfo).sentMessage.payload;
-
+Mutation mutation = ((WriteCallbackInfo) 
expiredCallbackInfo).mutation();
 return StorageProxy.submitHint(mutation, 
expiredCallbackInfo.target, null);
 }
 
@@ -594,13 +593,13 @@ public final class MessagingService implements 
MessagingServiceMBean
 }
 
 public int addCallback(IAsyncCallback cb,
-   MessageOut? extends IMutation message,
+   MessageOut? message,
InetAddress to,
long timeout,
ConsistencyLevel consistencyLevel,
boolean allowHints)
 {
-assert message.verb == Verb.MUTATION || message.verb == 
Verb.COUNTER_MUTATION;
+assert message.verb == Verb.MUTATION || message.verb == 
Verb.COUNTER_MUTATION || message.verb == Verb.PAXOS_COMMIT;
 int messageId = nextId();
 
 CallbackInfo previous = callbacks.put(messageId,
@@ -651,7 +650,7 @@ public final class MessagingService implements 
MessagingServiceMBean
 }
 
 /**
- * Send a mutation message to a given endpoint. This method specifies a 
callback
+ * Send a mutation message or a Paxos Commit to a given endpoint. This 
method specifies a callback
  * which is invoked with the actual response.
  * Also holds the message (only mutation messages) to determine if it
  * needs to trigger a hint (uses StorageProxy for that).
@@ -662,7 +661,7 @@ public final class MessagingService implements 
MessagingServiceMBean
  *suggest that a timeout occurred to the invoker of the 
send().
  * @return an reference to message id used to match with the result
  */
-public int sendRR(MessageOut? extends IMutation message,
+public int sendRR(MessageOut? message,
   InetAddress to,
   AbstractWriteResponseHandler handler,
   boolean allowHints)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
--
diff --git a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java 
b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
index 987ec15..0cf126f 100644
--- a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
+++ b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
@@ -21,12 +21,14 @@ package org.apache.cassandra.net;
 

[3/3] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2015-08-09 Thread aleksey
Merge branch 'cassandra-2.2' into cassandra-3.0


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

Branch: refs/heads/cassandra-3.0
Commit: f568a5d8a8fc2d165801e792f1133ac111c4df27
Parents: 8984ca7 0b99d33
Author: Aleksey Yeschenko alek...@apache.org
Authored: Sun Aug 9 23:04:01 2015 +0300
Committer: Aleksey Yeschenko alek...@apache.org
Committed: Sun Aug 9 23:04:01 2015 +0300

--
 CHANGES.txt |  1 +
 .../org/apache/cassandra/net/MessagingService.java  | 16 
 .../org/apache/cassandra/net/WriteCallbackInfo.java | 11 ++-
 .../org/apache/cassandra/service/StorageProxy.java  | 12 
 4 files changed, 27 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f568a5d8/CHANGES.txt
--
diff --cc CHANGES.txt
index 0ba7b4e,a913fe7..7cb9f16
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,17 -1,11 +1,18 @@@
 -2.2.1
 +3.0.0-beta1
 + * Support mixed-version clusters with Cassandra 2.1 and 2.2 (CASSANDRA-9704)
 + * Fix multiple slices on RowSearchers (CASSANDRA-10002)
 + * Fix bug in merging of collections (CASSANDRA-10001)
 + * Optimize batchlog replay to avoid full scans (CASSANDRA-7237)
 + * Repair improvements when using vnodes (CASSANDRA-5220)
 + * Disable scripted UDFs by default (CASSANDRA-9889)
 + * Add transparent data encryption core classes (CASSANDRA-9945)
 + * Bytecode inspection for Java-UDFs (CASSANDRA-9890)
 + * Use byte to serialize MT hash length (CASSANDRA-9792)
 +Merged from 2.2:
   * Add checksum to saved cache files (CASSANDRA-9265)
   * Log warning when using an aggregate without partition key (CASSANDRA-9737)
 - * Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900)
 - * UDF / UDA execution time in trace (CASSANDRA-9723)
 - * Fix broken internode SSL (CASSANDRA-9884)
  Merged from 2.1:
+  * Write hints for paxos commits (CASSANDRA-7342)
   * (cqlsh) Fix timestamps before 1970 on Windows, always
 use UTC for timestamp display (CASSANDRA-1)
   * (cqlsh) Avoid overwriting new config file with old config

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f568a5d8/src/java/org/apache/cassandra/net/MessagingService.java
--
diff --cc src/java/org/apache/cassandra/net/MessagingService.java
index 25eb0d0,f8fd6fd..0505445
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@@ -625,9 -617,7 +624,10 @@@ public final class MessagingService imp
 ConsistencyLevel consistencyLevel,
 boolean allowHints)
  {
 -assert message.verb == Verb.MUTATION || message.verb == 
Verb.COUNTER_MUTATION || message.verb == Verb.PAXOS_COMMIT;
 +assert message.verb == Verb.MUTATION
-|| message.verb == Verb.BATCHLOG_MUTATION
-|| message.verb == Verb.COUNTER_MUTATION;
++|| message.verb == Verb.BATCHLOG_MUTATION
++|| message.verb == Verb.COUNTER_MUTATION
++|| message.verb == Verb.PAXOS_COMMIT;
  int messageId = nextId();
  
  CallbackInfo previous = callbacks.put(messageId,

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



[2/4] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2015-08-09 Thread aleksey
Merge branch 'cassandra-2.1' into cassandra-2.2


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

Branch: refs/heads/trunk
Commit: 0b99d33eec5e703b6643aafc3a40a54f3fb088a0
Parents: a5297f1 07a7e80
Author: Aleksey Yeschenko alek...@apache.org
Authored: Sun Aug 9 23:01:06 2015 +0300
Committer: Aleksey Yeschenko alek...@apache.org
Committed: Sun Aug 9 23:01:06 2015 +0300

--
 CHANGES.txt|  1 +
 .../org/apache/cassandra/net/MessagingService.java | 13 ++---
 .../org/apache/cassandra/net/WriteCallbackInfo.java| 11 ++-
 .../org/apache/cassandra/service/StorageProxy.java | 12 
 4 files changed, 25 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/CHANGES.txt
--
diff --cc CHANGES.txt
index 705e560,7151883..a913fe7
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,10 -1,5 +1,11 @@@
 -2.1.9
 +2.2.1
 + * Add checksum to saved cache files (CASSANDRA-9265)
 + * Log warning when using an aggregate without partition key (CASSANDRA-9737)
 + * Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900)
 + * UDF / UDA execution time in trace (CASSANDRA-9723)
 + * Fix broken internode SSL (CASSANDRA-9884)
 +Merged from 2.1:
+  * Write hints for paxos commits (CASSANDRA-7342)
   * (cqlsh) Fix timestamps before 1970 on Windows, always
 use UTC for timestamp display (CASSANDRA-1)
   * (cqlsh) Avoid overwriting new config file with old config

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/net/MessagingService.java
--
diff --cc src/java/org/apache/cassandra/net/MessagingService.java
index bb46bbf,d7825d4..f8fd6fd
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@@ -680,9 -661,9 +679,9 @@@ public final class MessagingService imp
   *suggest that a timeout occurred to the invoker of the 
send().
   * @return an reference to message id used to match with the result
   */
- public int sendRR(MessageOut? extends IMutation message,
+ public int sendRR(MessageOut? message,
InetAddress to,
-   AbstractWriteResponseHandler? extends IMutation 
handler,
 -  AbstractWriteResponseHandler handler,
++  AbstractWriteResponseHandler? handler,
boolean allowHints)
  {
  int id = addCallback(handler, message, to, message.getTimeout(), 
handler.consistencyLevel, allowHints);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
--

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



[1/4] cassandra git commit: Write hints for paxos commits

2015-08-09 Thread aleksey
Repository: cassandra
Updated Branches:
  refs/heads/trunk 680accedb - b6d5f2cf3


Write hints for paxos commits

patch by Sankalp Kohli and Aleksey Yeschenko for CASSANDRA-7342


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

Branch: refs/heads/trunk
Commit: 07a7e80c321b6667cc44a236f999c7837fe48e20
Parents: 3b7934f
Author: sankalp kohli kohlisank...@gmail.com
Authored: Thu Aug 6 18:56:37 2015 +0300
Committer: Aleksey Yeschenko alek...@apache.org
Committed: Sun Aug 9 22:52:03 2015 +0300

--
 CHANGES.txt |  1 +
 src/java/org/apache/cassandra/net/MessagingService.java | 11 +--
 .../org/apache/cassandra/net/WriteCallbackInfo.java | 11 ++-
 src/java/org/apache/cassandra/service/StorageProxy.java | 12 
 4 files changed, 24 insertions(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 3b0241c..7151883 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.9
+ * Write hints for paxos commits (CASSANDRA-7342)
  * (cqlsh) Fix timestamps before 1970 on Windows, always
use UTC for timestamp display (CASSANDRA-1)
  * (cqlsh) Avoid overwriting new config file with old config

http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/net/MessagingService.java
--
diff --git a/src/java/org/apache/cassandra/net/MessagingService.java 
b/src/java/org/apache/cassandra/net/MessagingService.java
index 1ad0e7c..d7825d4 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -379,8 +379,7 @@ public final class MessagingService implements 
MessagingServiceMBean
 
 if (expiredCallbackInfo.shouldHint())
 {
-Mutation mutation = (Mutation) ((WriteCallbackInfo) 
expiredCallbackInfo).sentMessage.payload;
-
+Mutation mutation = ((WriteCallbackInfo) 
expiredCallbackInfo).mutation();
 return StorageProxy.submitHint(mutation, 
expiredCallbackInfo.target, null);
 }
 
@@ -594,13 +593,13 @@ public final class MessagingService implements 
MessagingServiceMBean
 }
 
 public int addCallback(IAsyncCallback cb,
-   MessageOut? extends IMutation message,
+   MessageOut? message,
InetAddress to,
long timeout,
ConsistencyLevel consistencyLevel,
boolean allowHints)
 {
-assert message.verb == Verb.MUTATION || message.verb == 
Verb.COUNTER_MUTATION;
+assert message.verb == Verb.MUTATION || message.verb == 
Verb.COUNTER_MUTATION || message.verb == Verb.PAXOS_COMMIT;
 int messageId = nextId();
 
 CallbackInfo previous = callbacks.put(messageId,
@@ -651,7 +650,7 @@ public final class MessagingService implements 
MessagingServiceMBean
 }
 
 /**
- * Send a mutation message to a given endpoint. This method specifies a 
callback
+ * Send a mutation message or a Paxos Commit to a given endpoint. This 
method specifies a callback
  * which is invoked with the actual response.
  * Also holds the message (only mutation messages) to determine if it
  * needs to trigger a hint (uses StorageProxy for that).
@@ -662,7 +661,7 @@ public final class MessagingService implements 
MessagingServiceMBean
  *suggest that a timeout occurred to the invoker of the 
send().
  * @return an reference to message id used to match with the result
  */
-public int sendRR(MessageOut? extends IMutation message,
+public int sendRR(MessageOut? message,
   InetAddress to,
   AbstractWriteResponseHandler handler,
   boolean allowHints)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
--
diff --git a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java 
b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
index 987ec15..0cf126f 100644
--- a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
+++ b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
@@ -21,12 +21,14 @@ package org.apache.cassandra.net;
 import 

[3/4] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2015-08-09 Thread aleksey
Merge branch 'cassandra-2.2' into cassandra-3.0


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

Branch: refs/heads/trunk
Commit: f568a5d8a8fc2d165801e792f1133ac111c4df27
Parents: 8984ca7 0b99d33
Author: Aleksey Yeschenko alek...@apache.org
Authored: Sun Aug 9 23:04:01 2015 +0300
Committer: Aleksey Yeschenko alek...@apache.org
Committed: Sun Aug 9 23:04:01 2015 +0300

--
 CHANGES.txt |  1 +
 .../org/apache/cassandra/net/MessagingService.java  | 16 
 .../org/apache/cassandra/net/WriteCallbackInfo.java | 11 ++-
 .../org/apache/cassandra/service/StorageProxy.java  | 12 
 4 files changed, 27 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f568a5d8/CHANGES.txt
--
diff --cc CHANGES.txt
index 0ba7b4e,a913fe7..7cb9f16
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,17 -1,11 +1,18 @@@
 -2.2.1
 +3.0.0-beta1
 + * Support mixed-version clusters with Cassandra 2.1 and 2.2 (CASSANDRA-9704)
 + * Fix multiple slices on RowSearchers (CASSANDRA-10002)
 + * Fix bug in merging of collections (CASSANDRA-10001)
 + * Optimize batchlog replay to avoid full scans (CASSANDRA-7237)
 + * Repair improvements when using vnodes (CASSANDRA-5220)
 + * Disable scripted UDFs by default (CASSANDRA-9889)
 + * Add transparent data encryption core classes (CASSANDRA-9945)
 + * Bytecode inspection for Java-UDFs (CASSANDRA-9890)
 + * Use byte to serialize MT hash length (CASSANDRA-9792)
 +Merged from 2.2:
   * Add checksum to saved cache files (CASSANDRA-9265)
   * Log warning when using an aggregate without partition key (CASSANDRA-9737)
 - * Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900)
 - * UDF / UDA execution time in trace (CASSANDRA-9723)
 - * Fix broken internode SSL (CASSANDRA-9884)
  Merged from 2.1:
+  * Write hints for paxos commits (CASSANDRA-7342)
   * (cqlsh) Fix timestamps before 1970 on Windows, always
 use UTC for timestamp display (CASSANDRA-1)
   * (cqlsh) Avoid overwriting new config file with old config

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f568a5d8/src/java/org/apache/cassandra/net/MessagingService.java
--
diff --cc src/java/org/apache/cassandra/net/MessagingService.java
index 25eb0d0,f8fd6fd..0505445
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@@ -625,9 -617,7 +624,10 @@@ public final class MessagingService imp
 ConsistencyLevel consistencyLevel,
 boolean allowHints)
  {
 -assert message.verb == Verb.MUTATION || message.verb == 
Verb.COUNTER_MUTATION || message.verb == Verb.PAXOS_COMMIT;
 +assert message.verb == Verb.MUTATION
-|| message.verb == Verb.BATCHLOG_MUTATION
-|| message.verb == Verb.COUNTER_MUTATION;
++|| message.verb == Verb.BATCHLOG_MUTATION
++|| message.verb == Verb.COUNTER_MUTATION
++|| message.verb == Verb.PAXOS_COMMIT;
  int messageId = nextId();
  
  CallbackInfo previous = callbacks.put(messageId,

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



[4/4] cassandra git commit: Merge branch 'cassandra-3.0' into trunk

2015-08-09 Thread aleksey
Merge branch 'cassandra-3.0' into trunk


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

Branch: refs/heads/trunk
Commit: b6d5f2cf3dc2f663c3b7d35a0ee56d2abfea8e02
Parents: 680acce f568a5d
Author: Aleksey Yeschenko alek...@apache.org
Authored: Sun Aug 9 23:05:30 2015 +0300
Committer: Aleksey Yeschenko alek...@apache.org
Committed: Sun Aug 9 23:05:30 2015 +0300

--
 CHANGES.txt |  1 +
 .../org/apache/cassandra/net/MessagingService.java  | 16 
 .../org/apache/cassandra/net/WriteCallbackInfo.java | 11 ++-
 .../org/apache/cassandra/service/StorageProxy.java  | 12 
 4 files changed, 27 insertions(+), 13 deletions(-)
--




[2/2] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

2015-08-09 Thread blerer
Merge branch 'cassandra-2.2' into cassandra-3.0


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

Branch: refs/heads/cassandra-3.0
Commit: 8984ca79f1f9a0fa59642650f7145d572b0a9b9b
Parents: e2ad7d5 a5297f1
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 21:23:28 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 21:23:50 2015 +0200

--
 .../cql3/validation/operations/AggregationTest.java  | 11 ++-
 1 file changed, 6 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/8984ca79/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
--



[2/2] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2015-08-09 Thread aleksey
Merge branch 'cassandra-2.1' into cassandra-2.2


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

Branch: refs/heads/cassandra-2.2
Commit: 0b99d33eec5e703b6643aafc3a40a54f3fb088a0
Parents: a5297f1 07a7e80
Author: Aleksey Yeschenko alek...@apache.org
Authored: Sun Aug 9 23:01:06 2015 +0300
Committer: Aleksey Yeschenko alek...@apache.org
Committed: Sun Aug 9 23:01:06 2015 +0300

--
 CHANGES.txt|  1 +
 .../org/apache/cassandra/net/MessagingService.java | 13 ++---
 .../org/apache/cassandra/net/WriteCallbackInfo.java| 11 ++-
 .../org/apache/cassandra/service/StorageProxy.java | 12 
 4 files changed, 25 insertions(+), 12 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/CHANGES.txt
--
diff --cc CHANGES.txt
index 705e560,7151883..a913fe7
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,10 -1,5 +1,11 @@@
 -2.1.9
 +2.2.1
 + * Add checksum to saved cache files (CASSANDRA-9265)
 + * Log warning when using an aggregate without partition key (CASSANDRA-9737)
 + * Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900)
 + * UDF / UDA execution time in trace (CASSANDRA-9723)
 + * Fix broken internode SSL (CASSANDRA-9884)
 +Merged from 2.1:
+  * Write hints for paxos commits (CASSANDRA-7342)
   * (cqlsh) Fix timestamps before 1970 on Windows, always
 use UTC for timestamp display (CASSANDRA-1)
   * (cqlsh) Avoid overwriting new config file with old config

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/net/MessagingService.java
--
diff --cc src/java/org/apache/cassandra/net/MessagingService.java
index bb46bbf,d7825d4..f8fd6fd
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@@ -680,9 -661,9 +679,9 @@@ public final class MessagingService imp
   *suggest that a timeout occurred to the invoker of the 
send().
   * @return an reference to message id used to match with the result
   */
- public int sendRR(MessageOut? extends IMutation message,
+ public int sendRR(MessageOut? message,
InetAddress to,
-   AbstractWriteResponseHandler? extends IMutation 
handler,
 -  AbstractWriteResponseHandler handler,
++  AbstractWriteResponseHandler? handler,
boolean allowHints)
  {
  int id = addCallback(handler, message, to, message.getTimeout(), 
handler.consistencyLevel, allowHints);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
--

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



[jira] [Commented] (CASSANDRA-7731) Get max values for live/tombstone cells per slice

2015-08-09 Thread Cyril Scetbon (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-7731?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679315#comment-14679315
 ] 

Cyril Scetbon commented on CASSANDRA-7731:
--

[~snazy] Thank you for your work

 Get max values for live/tombstone cells per slice
 -

 Key: CASSANDRA-7731
 URL: https://issues.apache.org/jira/browse/CASSANDRA-7731
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Cyril Scetbon
Assignee: Robert Stupp
Priority: Minor
 Fix For: 2.2.0

 Attachments: 7731-2.0.txt, 7731-2.1.txt


 I think you should not say that slice statistics are valid for the [last five 
 minutes 
 |https://github.com/apache/cassandra/blob/cassandra-2.0/src/java/org/apache/cassandra/tools/NodeCmd.java#L955-L956]
  in CFSTATS command of nodetool. I've read the documentation from yammer for 
 Histograms and there is no way to force values to expire after x minutes 
 except by 
 [clearing|http://grepcode.com/file/repo1.maven.org/maven2/com.yammer.metrics/metrics-core/2.1.2/com/yammer/metrics/core/Histogram.java#96]
  it . The only thing I can see is that the last snapshot used to provide the 
 median (or whatever you'd used instead) value is based on 1028 values.
 I think we should also be able to detect that some requests are accessing a 
 lot of live/tombstone cells per query and that's not possible for now without 
 activating DEBUG for SliceQueryFilter for example and by tweaking the 
 threshold. Currently as nodetool cfstats returns the median if a low part of 
 the queries are scanning a lot of live/tombstone cells we miss it !



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[4/4] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

2015-08-09 Thread blerer
Merge branch 'cassandra-2.1' into cassandra-2.2


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

Branch: refs/heads/cassandra-2.2
Commit: 6d0cf7dbd2221c13434958e9e0d5e418f58fe23f
Parents: 0b99d33 c8d163f
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 22:11:14 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 22:12:16 2015 +0200

--
 .../restrictions/MultiColumnRestriction.java| 37 +++
 .../restrictions/SingleColumnRestriction.java   | 68 ++--
 .../SelectMultiColumnRelationTest.java  | 45 +
 .../SelectSingleColumnRelationTest.java | 28 
 4 files changed, 149 insertions(+), 29 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d0cf7db/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
--
diff --cc 
src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
index c4bce4c,000..84a3952
mode 100644,00..100644
--- 
a/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
+++ 
b/src/java/org/apache/cassandra/cql3/restrictions/MultiColumnRestriction.java
@@@ -1,448 -1,0 +1,461 @@@
 +/*
 + * Licensed to the Apache Software Foundation (ASF) under one
 + * or more contributor license agreements.  See the NOTICE file
 + * distributed with this work for additional information
 + * regarding copyright ownership.  The ASF licenses this file
 + * to you under the Apache License, Version 2.0 (the
 + * License); you may not use this file except in compliance
 + * with the License.  You may obtain a copy of the License at
 + *
 + * http://www.apache.org/licenses/LICENSE-2.0
 + *
 + * Unless required by applicable law or agreed to in writing, software
 + * distributed under the License is distributed on an AS IS BASIS,
 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 + * See the License for the specific language governing permissions and
 + * limitations under the License.
 + */
 +package org.apache.cassandra.cql3.restrictions;
 +
 +import java.nio.ByteBuffer;
 +import java.util.*;
 +
++import org.apache.cassandra.cql3.Term.Terminal;
++
++import org.apache.cassandra.cql3.Term;
 +import org.apache.cassandra.config.ColumnDefinition;
 +import org.apache.cassandra.cql3.*;
 +import org.apache.cassandra.cql3.functions.Function;
 +import org.apache.cassandra.cql3.statements.Bound;
 +import org.apache.cassandra.db.IndexExpression;
 +import org.apache.cassandra.db.composites.CompositesBuilder;
 +import org.apache.cassandra.db.index.SecondaryIndex;
 +import org.apache.cassandra.db.index.SecondaryIndexManager;
 +import org.apache.cassandra.exceptions.InvalidRequestException;
- 
 +import static 
org.apache.cassandra.cql3.statements.RequestValidations.checkFalse;
 +import static 
org.apache.cassandra.cql3.statements.RequestValidations.checkNotNull;
 +import static 
org.apache.cassandra.cql3.statements.RequestValidations.checkTrue;
 +import static 
org.apache.cassandra.cql3.statements.RequestValidations.invalidRequest;
 +
 +public abstract class MultiColumnRestriction extends AbstractRestriction
 +{
 +/**
 + * The columns to which the restriction apply.
 + */
 +protected final ListColumnDefinition columnDefs;
 +
 +public MultiColumnRestriction(ListColumnDefinition columnDefs)
 +{
 +this.columnDefs = columnDefs;
 +}
 +
 +@Override
 +public boolean isMultiColumn()
 +{
 +return true;
 +}
 +
 +@Override
 +public ColumnDefinition getFirstColumn()
 +{
 +return columnDefs.get(0);
 +}
 +
 +@Override
 +public ColumnDefinition getLastColumn()
 +{
 +return columnDefs.get(columnDefs.size() - 1);
 +}
 +
 +@Override
 +public CollectionColumnDefinition getColumnDefs()
 +{
 +return columnDefs;
 +}
 +
 +@Override
 +public final Restriction mergeWith(Restriction otherRestriction) throws 
InvalidRequestException
 +{
- checkTrue(otherRestriction.isMultiColumn(),
-   Mixing single column relations and multi column 
relations on clustering columns is not allowed);
- return doMergeWith(otherRestriction);
++// We want to allow query like: (b,c)  (?, ?) AND b  ?
++if (!otherRestriction.isMultiColumn()
++ ((SingleColumnRestriction) 
otherRestriction).canBeConvertedToMultiColumnRestriction())
++{
++return doMergeWith(((SingleColumnRestriction) 

[2/4] cassandra git commit: Merge branch 'cassandra-2.0' into cassandra-2.1

2015-08-09 Thread blerer
Merge branch 'cassandra-2.0' into cassandra-2.1


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

Branch: refs/heads/cassandra-2.2
Commit: 1ae58ef3acc187a3728ca0dda3e98be8b3580ec1
Parents: 07a7e80 de84a5c
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 22:04:32 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 22:04:56 2015 +0200

--

--




[3/4] cassandra git commit: Allows single-column slice restrictions to be merged with multi-columns slice restrictions

2015-08-09 Thread blerer
Allows single-column slice restrictions to be merged with multi-columns slice 
restrictions

patch by Benjamin Lerer; reviewed by Sam Tunnicliffe for CASSANDRA-9606


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

Branch: refs/heads/cassandra-2.2
Commit: c8d163f73cad4cb61c12c6871e26489b52094d17
Parents: 1ae58ef
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 22:09:48 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 22:09:48 2015 +0200

--
 .../cql3/statements/MultiColumnRestriction.java | 10 +++-
 .../cassandra/cql3/statements/Restriction.java  |  5 +-
 .../cql3/statements/SelectStatement.java| 61 ++--
 .../statements/SingleColumnRestriction.java | 23 +++-
 .../SelectMultiColumnRelationTest.java  | 44 ++
 .../SelectSingleColumnRelationTest.java | 28 +
 6 files changed, 138 insertions(+), 33 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/c8d163f7/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
--
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java 
b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
index 6946c98..e2ba2a1 100644
--- a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
@@ -25,8 +25,11 @@ import 
org.apache.cassandra.exceptions.InvalidRequestException;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
+import org.apache.cassandra.cql3.Term.Terminal;
+
 public interface MultiColumnRestriction extends Restriction
 {
 public static class EQ extends SingleColumnRestriction.EQ implements 
MultiColumnRestriction
@@ -130,8 +133,11 @@ public interface MultiColumnRestriction extends Restriction
  */
 public ListByteBuffer componentBounds(Bound b, QueryOptions options) 
throws InvalidRequestException
 {
-Tuples.Value value = (Tuples.Value)bounds[b.idx].bind(options);
-return value.getElements();
+Terminal terminal = bounds[b.idx].bind(options);
+if (terminal instanceof Tuples.Value)
+return ((Tuples.Value) terminal).getElements();
+
+return Collections.singletonList(terminal.get(options));
 }
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c8d163f7/src/java/org/apache/cassandra/cql3/statements/Restriction.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/Restriction.java 
b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
index 485fd22..bd0277c 100644
--- a/src/java/org/apache/cassandra/cql3/statements/Restriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
@@ -20,7 +20,6 @@ package org.apache.cassandra.cql3.statements;
 import java.nio.ByteBuffer;
 import java.util.List;
 
-import org.apache.cassandra.cql3.ColumnIdentifier;
 import org.apache.cassandra.cql3.Operator;
 import org.apache.cassandra.cql3.QueryOptions;
 import org.apache.cassandra.cql3.Term;
@@ -63,6 +62,8 @@ public interface Restriction
 /** Returns true if the start or end bound (depending on the argument) 
is set, false otherwise */
 public boolean hasBound(Bound b);
 
+public Term bound(Bound b);
+
 public ByteBuffer bound(Bound b, QueryOptions options) throws 
InvalidRequestException;
 
 /** Returns true if the start or end bound (depending on the argument) 
is inclusive, false otherwise */
@@ -73,5 +74,7 @@ public interface Restriction
 public Operator getIndexOperator(Bound b);
 
 public void setBound(Operator type, Term t) throws 
InvalidRequestException;
+
+public void setBound(Slice restriction) throws InvalidRequestException;
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c8d163f7/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index 26a1ee1..44b780e 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@ -1699,13 +1699,6 @@ public class 

[1/4] cassandra git commit: Allows single-column slice restrictions to be merged with multi-columns slice restrictions

2015-08-09 Thread blerer
Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.2 0b99d33ee - 6d0cf7dbd


Allows single-column slice restrictions to be merged with multi-columns slice 
restrictions

patch by Benjamin Lerer; reviewed by Sam Tunnicliffe for CASSANDRA-9606


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

Branch: refs/heads/cassandra-2.2
Commit: de84a5c770ac1a429152dd79f0895b27aa544368
Parents: c9587cd
Author: blerer benjamin.le...@datastax.com
Authored: Sun Aug 9 21:48:04 2015 +0200
Committer: blerer benjamin.le...@datastax.com
Committed: Sun Aug 9 21:48:04 2015 +0200

--
 .../cql3/statements/MultiColumnRestriction.java | 10 +++-
 .../cassandra/cql3/statements/Restriction.java  |  4 ++
 .../cql3/statements/SelectStatement.java| 54 ++--
 .../statements/SingleColumnRestriction.java | 25 +++--
 .../cassandra/cql3/MultiColumnRelationTest.java | 49 +-
 .../cql3/SingleColumnRelationTest.java  | 53 +--
 6 files changed, 165 insertions(+), 30 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/de84a5c7/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
--
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java 
b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
index f643684..ed1e7f1 100644
--- a/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/MultiColumnRestriction.java
@@ -24,8 +24,11 @@ import 
org.apache.cassandra.exceptions.InvalidRequestException;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
+import org.apache.cassandra.cql3.Term.Terminal;
+
 public interface MultiColumnRestriction extends Restriction
 {
 public static class EQ extends SingleColumnRestriction.EQ implements 
MultiColumnRestriction
@@ -128,8 +131,11 @@ public interface MultiColumnRestriction extends Restriction
  */
 public ListByteBuffer componentBounds(Bound b, ListByteBuffer 
variables) throws InvalidRequestException
 {
-Tuples.Value value = (Tuples.Value)bounds[b.idx].bind(variables);
-return value.getElements();
+Terminal terminal = bounds[b.idx].bind(variables);
+if (terminal instanceof Tuples.Value)
+return ((Tuples.Value) terminal).getElements();
+
+return Collections.singletonList(terminal.get());
 }
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/de84a5c7/src/java/org/apache/cassandra/cql3/statements/Restriction.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/Restriction.java 
b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
index 3d33bde..f582c84 100644
--- a/src/java/org/apache/cassandra/cql3/statements/Restriction.java
+++ b/src/java/org/apache/cassandra/cql3/statements/Restriction.java
@@ -54,6 +54,8 @@ public interface Restriction
 /** Returns true if the start or end bound (depending on the argument) 
is set, false otherwise */
 public boolean hasBound(Bound b);
 
+public Term bound(Bound b);
+
 public ByteBuffer bound(Bound b, ListByteBuffer variables) throws 
InvalidRequestException;
 
 /** Returns true if the start or end bound (depending on the argument) 
is inclusive, false otherwise */
@@ -64,5 +66,7 @@ public interface Restriction
 public IndexOperator getIndexOperator(Bound b);
 
 public void setBound(Relation.Type type, Term t) throws 
InvalidRequestException;
+
+public void setBound(Slice restriction) throws InvalidRequestException;
 }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/de84a5c7/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
--
diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index aaf9579..a9eae7a 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@ -46,7 +46,6 @@ import org.apache.cassandra.service.StorageProxy;
 import org.apache.cassandra.service.StorageService;
 import org.apache.cassandra.service.pager.*;
 import org.apache.cassandra.db.ConsistencyLevel;
-import 

[jira] [Commented] (CASSANDRA-10006) 2.1 format sstable filenames with tmp are not handled by 3.0

2015-08-09 Thread Stefania (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-10006?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679420#comment-14679420
 ] 

Stefania commented on CASSANDRA-10006:
--

Thanks Jeremiah.

I've attached a patch that supports 2.1 files as well. The temporary files are 
deleted at startup when we detect a version upgrade; this was already in place 
but for 2.2 files only. I've also used regular expressions to make the match as 
accurate as possible.

CI still pending:

http://cassci.datastax.com/view/Dev/view/stef1927/job/stef1927-10006-3.0-testall/
http://cassci.datastax.com/view/Dev/view/stef1927/job/stef1927-10006-3.0-dtest/



 2.1 format sstable filenames with tmp are not handled by 3.0
 --

 Key: CASSANDRA-10006
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10006
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Tyler Hobbs
Assignee: Stefania
 Fix For: 3.0 beta 1


 In 3.0, {{Descriptor.fromFilename()}} doesn't handle tmp in sstable 
 filenames in the 2.1 (ka) format.  If you start 3.0 with one of these 
 filenames, you'll see an exception like the following:
 {noformat}
 ERROR [main] 2015-08-05 10:15:57,872 CassandraDaemon.java:623 - Exception 
 encountered during startup
 java.lang.AssertionError: Invalid file name 
 system-schema_columns-tmp-ka-5-Filter.db in 
 /tmp/dtest-Jstsy2/test/node1/data/system/schema_columns-296e9c049bec3085827dc17d3df2122a
 at 
 org.apache.cassandra.io.sstable.Descriptor.fromFilename(Descriptor.java:291) 
 ~[main/:na]
 at 
 org.apache.cassandra.io.sstable.Descriptor.fromFilename(Descriptor.java:190) 
 ~[main/:na]
 at 
 org.apache.cassandra.service.StartupChecks$7$1.visitFile(StartupChecks.java:226)
  ~[main/:na]
 at 
 org.apache.cassandra.service.StartupChecks$7$1.visitFile(StartupChecks.java:218)
  ~[main/:na]
 at java.nio.file.Files.walkFileTree(Files.java:2670) ~[na:1.8.0_45]
 at java.nio.file.Files.walkFileTree(Files.java:2742) ~[na:1.8.0_45]
 at 
 org.apache.cassandra.service.StartupChecks$7.execute(StartupChecks.java:251) 
 ~[main/:na]
 at 
 org.apache.cassandra.service.StartupChecks.verify(StartupChecks.java:103) 
 ~[main/:na]
 at 
 org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:163) 
 [main/:na]
 at 
 org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:504)
  [main/:na]
 at 
 org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:610) 
 [main/:na]
 {noformat}
 I can reliably reproduce this with an [upgrade 
 dtest|https://github.com/thobbs/cassandra-dtest/blob/8099-backwards-compat/upgrade_tests/cql_tests.py#L5126-L5162]
  from CASSANDRA-9704, but it should also be reproducible by simply starting 
 3.0 with a filename like the one from the error message.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-10015) Create tool to debug why expired sstables are not getting dropped

2015-08-09 Thread Stefania (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-10015?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679545#comment-14679545
 ] 

Stefania commented on CASSANDRA-10015:
--

LGTM so far. 

Some questions / suggestions:

* Do we need a Windows script and why do we have some sstable* scripts in bin 
and some in tools/bin?

* In the documentation at the top of SSTableExpiredBlocker I would reference 
the ticket number and perhaps explicitly spell out how an sstable can block 
expired sstables, rather than just limiting it to cover anything in other 
sstables. Something like what's mentioned in this ticket description would 
maybe be a little clearer.

* I would replace _columnfamily_ with _table_, at least in the usage and error 
messages.

 Create tool to debug why expired sstables are not getting dropped
 -

 Key: CASSANDRA-10015
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10015
 Project: Cassandra
  Issue Type: Improvement
Reporter: Marcus Eriksson
Assignee: Marcus Eriksson
 Fix For: 3.x, 2.1.x, 2.0.x, 2.2.x


 Sometimes fully expired sstables are not getting dropped, and it is a real 
 pain to manually find out why.
 A tool that outputs which sstable blocks (by having older data than the 
 newest tombstone in an expired sstable) expired ones would save a lot of time.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-9908) Potential race caused by async cleanup of transaction log files

2015-08-09 Thread Stefania (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-9908?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679517#comment-14679517
 ] 

Stefania commented on CASSANDRA-9908:
-

bq. Thinking about it, we need to replicate a little more code from the regular 
CF drop: interruption of compactions. We should be calling both 
CompactionManager.instance.interruptCompactionForCFs and waitForCessation, to 
ensure that most references to the files are also relinquished before we signal 
successful drop.

Done. However, {{waitForCessasion}} is not called by {{Keyspace.dropCf}} - just 
pointing it out, I agree that we should call it.

bq. Then, unfortunately, that still doesn't put us in the clear, but I'm 
beginning to think it would be better and more robust to just accelerate 
SecondaryIndexes having their own UUID, which I believe is already on the cards 
for the near future. As we can still have other long running operations - such 
as keySamples which have references to sstables that can be long lived, that 
aren't compactions and won't acquiesce. So, really, we need to sleep-spin until 
they are all released. This is pretty unpleasant, and it does run the risk of 
schema changes becoming blocked indefinitely on a leaked reference.

Other than this race, which would result in a log message after this patch, 
what are the other risks? From what I understand we include temporary files 
when calculating the latest generation number in 
{{ColumnFamilyStore.createColumnFamilyStore}} but we exclude them when loading 
the sstables in the constructor of CFS. So, we should not reuse old generation 
numbers (which would be really bad) and we should not load old files (also 
quite bad). We delete the tx log file last, and we call getTemporaryFiles() 
before calling listFiles() in Directories.filter(). So can we still pick up 
temporary files by mistake? If anything we should always ensure that 
listFiles() is never called before getTemporaryFiles() by perhaps moving this 
code together? Or am I missing something completely? I do agree on using 
separate UUID for indexes by the way, I am just reasoning on how to make this 
safe given the current status.

bq. I would also prefer we at least logged an error message if we encounter the 
race condition with the NoSuchFileException. Since it definitely means we still 
have problems.

I changed the log message from WARN to ERROR.

--

Please disregard the old patch based on trunk, I rebased it on cassandra-3.0 
and renamed it to 
[9908-3.0|https://github.com/stef1927/cassandra/commits/9908-3.0].


 Potential race caused by async cleanup of transaction log files
 ---

 Key: CASSANDRA-9908
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9908
 Project: Cassandra
  Issue Type: Bug
Reporter: Sam Tunnicliffe
Assignee: Stefania
  Labels: benedict-to-commit
 Fix For: 3.0 beta 1

 Attachments: TEST-org.apache.cassandra.db.SecondaryIndexTest.log


 There seems to be a potential race in the cleanup of transaction log files, 
 introduced in CASSANDRA-7066
 It's pretty hard to trigger on trunk, but it's possible to hit it via 
 {{o.a.c.db.SecondaryIndexTest#testCreateIndex}} 
 That test creates an index, then removes it to check that the removal is 
 correctly recorded, then adds the index again to assert that it gets rebuilt 
 from the existing data. 
 The removal causes the SSTables of the index CFS to be dropped, which is a 
 transactional operation and so writes a transaction log. When the drop is 
 completed and the last reference to an SSTable is released, the cleanup of 
 the transaction log is scheduled on the periodic tasks executor. The issue is 
 that re-creating the index re-creates the index CFS. When this happens, it's 
 possible for the cleanup of the txn log to have not yet happened. If so, the 
 initialization of the CFS attempts to read the log to identify any orphaned 
 temporary files. The cleanup can happen between the finding the log file and 
 reading it's contents, which results in a {{NoSuchFileException}}
 {noformat}
 [junit] java.nio.file.NoSuchFileException: 
 build/test/cassandra/data:1/SecondaryIndexTest1/CompositeIndexToBeAdded-d0885f60323211e5a5e8ad83a3dc3e9c/.birthdate_index/transactions/unknowncompactiontype_d4b69fc0-3232-11e5-a5e8-ad83a3dc3e9c_old.log
 [junit] java.lang.RuntimeException: java.nio.file.NoSuchFileException: 
 build/test/cassandra/data:1/SecondaryIndexTest1/CompositeIndexToBeAdded-d0885f60323211e5a5e8ad83a3dc3e9c/.birthdate_index/transactions/unknowncompactiontype_d4b69fc0-3232-11e5-a5e8-ad83a3dc3e9c_old.log
 [junit] at 
 org.apache.cassandra.io.util.FileUtils.readLines(FileUtils.java:620)
 [junit] at 
 

[jira] [Updated] (CASSANDRA-10006) 2.1 format sstable filenames with tmp are not handled by 3.0

2015-08-09 Thread Jonathan Ellis (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-10006?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jonathan Ellis updated CASSANDRA-10006:
---
Reviewer: Yuki Morishita

[~yukim] to review

 2.1 format sstable filenames with tmp are not handled by 3.0
 --

 Key: CASSANDRA-10006
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10006
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Tyler Hobbs
Assignee: Stefania
 Fix For: 3.0 beta 1


 In 3.0, {{Descriptor.fromFilename()}} doesn't handle tmp in sstable 
 filenames in the 2.1 (ka) format.  If you start 3.0 with one of these 
 filenames, you'll see an exception like the following:
 {noformat}
 ERROR [main] 2015-08-05 10:15:57,872 CassandraDaemon.java:623 - Exception 
 encountered during startup
 java.lang.AssertionError: Invalid file name 
 system-schema_columns-tmp-ka-5-Filter.db in 
 /tmp/dtest-Jstsy2/test/node1/data/system/schema_columns-296e9c049bec3085827dc17d3df2122a
 at 
 org.apache.cassandra.io.sstable.Descriptor.fromFilename(Descriptor.java:291) 
 ~[main/:na]
 at 
 org.apache.cassandra.io.sstable.Descriptor.fromFilename(Descriptor.java:190) 
 ~[main/:na]
 at 
 org.apache.cassandra.service.StartupChecks$7$1.visitFile(StartupChecks.java:226)
  ~[main/:na]
 at 
 org.apache.cassandra.service.StartupChecks$7$1.visitFile(StartupChecks.java:218)
  ~[main/:na]
 at java.nio.file.Files.walkFileTree(Files.java:2670) ~[na:1.8.0_45]
 at java.nio.file.Files.walkFileTree(Files.java:2742) ~[na:1.8.0_45]
 at 
 org.apache.cassandra.service.StartupChecks$7.execute(StartupChecks.java:251) 
 ~[main/:na]
 at 
 org.apache.cassandra.service.StartupChecks.verify(StartupChecks.java:103) 
 ~[main/:na]
 at 
 org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:163) 
 [main/:na]
 at 
 org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:504)
  [main/:na]
 at 
 org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:610) 
 [main/:na]
 {noformat}
 I can reliably reproduce this with an [upgrade 
 dtest|https://github.com/thobbs/cassandra-dtest/blob/8099-backwards-compat/upgrade_tests/cql_tests.py#L5126-L5162]
  from CASSANDRA-9704, but it should also be reproducible by simply starting 
 3.0 with a filename like the one from the error message.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-9913) Select * is only returning the first page of data on trunk

2015-08-09 Thread Stefania (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-9913?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679474#comment-14679474
 ] 

Stefania commented on CASSANDRA-9913:
-

The patch is +1.

Is there absolutely no way to cover these two cases with unit tests and are 
static compact tables the only ones with fake clustering columns?

 Select * is only returning the first page of data on trunk
 --

 Key: CASSANDRA-9913
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9913
 Project: Cassandra
  Issue Type: Bug
Reporter: Philip Thompson
Assignee: Benjamin Lerer
 Fix For: 3.0 beta 1

 Attachments: 9913.txt


 While doing some testing on the validation harness, I have run into a pretty 
 trivially reproducible problem.
 {code}
 ccm create test -v git:trunk -n 1 -s
 ccm node1 stress write n=2M
 ccm node1 cqlsh
 {code}
 {code}
 Use keyspace1;
 Select * From standard1; (100 rows)
 Select count(*) from standard1; (300 rows)
 {code}
 Despite two million rows being written, I have found that {{select * from 
 standard1}} only returns one page's worth of data. I have used both the java 
 and the python driver to test this. I have also found that {{select count(*) 
 from standard1}} gives a multiple of one page's worth of data, that appears 
 to correspond to page size * RF.
 I have already tried with the patch for CASSANDRA-9775, and that did not 
 resolve this issue.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (CASSANDRA-10026) AccessControlException in UFPureScriptTest

2015-08-09 Thread Sam Tunnicliffe (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-10026?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14679167#comment-14679167
 ] 

Sam Tunnicliffe commented on CASSANDRA-10026:
-

pushed to the same location [~snazy]'s suggestion for a custom UDF executor 
based on {{JMXEnabledThreadPoolExecutor}}


 AccessControlException in UFPureScriptTest
 --

 Key: CASSANDRA-10026
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10026
 Project: Cassandra
  Issue Type: Bug
Reporter: Sam Tunnicliffe
Assignee: Sam Tunnicliffe
 Fix For: 3.0 beta 1


 CASSANDRA-9129 removed {{JMXEnabledScheduledThreadPoolExecutor}} and replaced 
 its usage in {{JavaBasedUDFuntion}} and {{ScriptBasedUDFunction}} with 
 {{JMXEnabledThreadPoolExecutor}} as the scheduling capabilities were not 
 required. This causes an {{AccessControlException}} as 
 {{JMXEnabedThreadPoolExecutor}}  {{DebuggableThreadPoolExecutor}} reference 
 internal {{o.a.c}} classes which is not permitted by the UDF execution 
 sandbox's {{SecurityManager}}. 
 JUnit output contains a bunch of 
 {noformat}
 [junit] Exception: java.security.AccessControlException thrown from the 
 UncaughtExceptionHandler in thread UserDefinedScriptFunctions:1
 {noformat}
 And ultimately fails with:
 {noformat}
 [junit] Testcase: 
 testJavascriptSimpleCollections(org.apache.cassandra.cql3.validation.entities.UFPureScriptTest):
   Caused an ERROR
 [junit] execution of 'cql_test_keyspace_alt.function_1[listdouble]' failed: 
 java.lang.IllegalArgumentException: Invalid thread ID parameter: 0
 [junit] org.apache.cassandra.exceptions.FunctionExecutionException: execution 
 of 'cql_test_keyspace_alt.function_1[listdouble]' failed: 
 java.lang.IllegalArgumentException: Invalid thread ID parameter: 0
 [junit] at 
 org.apache.cassandra.exceptions.FunctionExecutionException.create(FunctionExecutionException.java:35)
 [junit] at 
 org.apache.cassandra.cql3.functions.UDFunction.execute(UDFunction.java:286)
 [junit] at 
 org.apache.cassandra.cql3.selection.ScalarFunctionSelector.getOutput(ScalarFunctionSelector.java:60)
 [junit] at 
 org.apache.cassandra.cql3.selection.Selection$SelectionWithProcessing$1.getOutputRow(Selection.java:535)
 [junit] at 
 org.apache.cassandra.cql3.selection.Selection$ResultSetBuilder.getOutputRow(Selection.java:363)
 [junit] at 
 org.apache.cassandra.cql3.selection.Selection$ResultSetBuilder.build(Selection.java:351)
 [junit] at 
 org.apache.cassandra.cql3.statements.SelectStatement.process(SelectStatement.java:581)
 [junit] at 
 org.apache.cassandra.cql3.statements.SelectStatement.processResults(SelectStatement.java:348)
 [junit] at 
 org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:364)
 [junit] at 
 org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:72)
 [junit] at 
 org.apache.cassandra.cql3.QueryProcessor.executeOnceInternal(QueryProcessor.java:337)
 [junit] at org.apache.cassandra.cql3.CQLTester.execute(CQLTester.java:654)
 [junit] at 
 org.apache.cassandra.cql3.validation.entities.UFPureScriptTest.testJavascriptSimpleCollections(UFPureScriptTest.java:89)
 [junit] Caused by: java.lang.IllegalArgumentException: Invalid thread ID 
 parameter: 0
 [junit] at sun.management.ThreadImpl.verifyThreadIds(ThreadImpl.java:154)
 [junit] at 
 sun.management.ThreadImpl.verifyThreadCpuTime(ThreadImpl.java:227)
 [junit] at sun.management.ThreadImpl.getThreadCpuTime(ThreadImpl.java:251)
 [junit] at sun.management.ThreadImpl.getThreadCpuTime(ThreadImpl.java:222)
 [junit] at 
 org.apache.cassandra.cql3.functions.UDFunction.executeAsync(UDFunction.java:369)
 [junit] at 
 org.apache.cassandra.cql3.functions.UDFunction.execute(UDFunction.java:272)
 [junit] 
 [junit] 
 [junit] Test org.apache.cassandra.cql3.validation.entities.UFPureScriptTest 
 FAILED
 {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)