[jira] [Commented] (CASSANDRA-7066) Simplify (and unify) cleanup of compaction leftovers
[ 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
[ 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
[ 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
[ 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
[ 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
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
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
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
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
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
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
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
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
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
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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
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
[ 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
[ 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
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
[ 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
[ 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
[ 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
[ 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.
[ 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
[ 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
[ 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
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.
[ 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
[ 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
[ 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
[ 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
[ 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
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.
[ 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
[ 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
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
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
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
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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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)