[jira] [Created] (CASSANDRA-9094) Check for fully expired sstables more often

2015-04-02 Thread Marcus Eriksson (JIRA)
Marcus Eriksson created CASSANDRA-9094:
--

 Summary: Check for fully expired sstables more often
 Key: CASSANDRA-9094
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9094
 Project: Cassandra
  Issue Type: Improvement
Reporter: Marcus Eriksson
Priority: Minor
 Fix For: 3.0


CASSANDRA-8359 added an extra check for expired sstables to DTCS since that is 
where it is most likely to happen.

We should refactor this a bit and check more often for all compaction 
strategies (and avoid checking twice like we do now with DTCS).



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


[jira] [Commented] (CASSANDRA-8102) cassandra-cli and cqlsh report two different values for a setting, partially update it and partially report it

2015-04-02 Thread Marcus Eriksson (JIRA)

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

Marcus Eriksson commented on CASSANDRA-8102:


looks like a bug to me

 cassandra-cli and cqlsh report two different values for a setting, partially 
 update it and partially report it
 --

 Key: CASSANDRA-8102
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8102
 Project: Cassandra
  Issue Type: Bug
 Environment: 2.0.9
Reporter: Peter Haggerty
Priority: Minor
  Labels: cli, cqlsh
 Fix For: 2.0.15


 cassandra-cli updates and prints out a min_compaction_threshold that is not 
 shown by cqlsh (it shows a different min_threshold attribute)
 cqlsh updates both values but only shows one of them
 {code}
 cassandra-cli:
 UPDATE COLUMN FAMILY foo WITH min_compaction_threshold = 8;
 $ echo describe foo; | cassandra-cli -h `hostname` -k bar
   Compaction min/max thresholds: 8/32
 $ echo describe table foo; | cqlsh -k bar `hostname`
   compaction={'class': 'SizeTieredCompactionStrategy'} AND
 {code}
 {code}
 cqlsh:
 ALTER TABLE foo WITH compaction = {'class' : 'SizeTieredCompactionStrategy', 
 'min_threshold' : 16};
 cassandra-cli:
   Compaction min/max thresholds: 16/32
   Compaction Strategy Options:
 min_threshold: 16
 cqlsh:
   compaction={'min_threshold': '16', 'class': 'SizeTieredCompactionStrategy'} 
 AND
 {code}
 {code}
 cassandra-cli:
 UPDATE COLUMN FAMILY foo WITH min_compaction_threshold = 8;
 cassandra-cli:
   Compaction min/max thresholds: 8/32
   Compaction Strategy Options:
 min_threshold: 16
 cqlsh:
   compaction={'min_threshold': '16', 'class': 'SizeTieredCompactionStrategy'} 
 AND
 {code}



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


[jira] [Commented] (CASSANDRA-8986) Major cassandra-stress refactor

2015-04-02 Thread Benedict (JIRA)

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

Benedict commented on CASSANDRA-8986:
-

One more thing it should consider is the ability to efficiently compute 
multiple different projections of the same dataset, so that Global Indexes can 
be probed

 Major cassandra-stress refactor
 ---

 Key: CASSANDRA-8986
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8986
 Project: Cassandra
  Issue Type: Improvement
  Components: Tools
Reporter: Benedict
Assignee: Benedict

 We need a tool for both stressing _and_ validating more complex workloads 
 than stress currently supports. Stress needs a raft of changes, and I think 
 it would be easier to deliver many of these as a single major endeavour which 
 I think is justifiable given its audience. The rough behaviours I want stress 
 to support are:
 * Ability to know exactly how many rows it will produce, for any clustering 
 prefix, without generating those prefixes
 * Ability to generate an amount of data proportional to the amount it will 
 produce to the server (or consume from the server), rather than proportional 
 to the variation in clustering columns
 * Ability to reliably produce near identical behaviour each run
 * Ability to understand complex overlays of operation types (LWT, Delete, 
 Expiry, although perhaps not all implemented immediately, the framework for 
 supporting them easily)
 * Ability to (with minimal internal state) understand the complete cluster 
 state through overlays of multiple procedural generations
 * Ability to understand the in-flight state of in-progress operations (i.e. 
 if we're applying a delete, understand that the delete may have been applied, 
 and may not have been, for potentially multiple conflicting in flight 
 operations)
 I think the necessary changes to support this would give us the _functional_ 
 base to support all the functionality I can currently envisage stress 
 needing. Before embarking on this (which I may attempt very soon), it would 
 be helpful to get input from others as to features missing from stress that I 
 haven't covered here that we will certainly want in the future, so that they 
 can be factored in to the overall design and hopefully avoid another refactor 
 one year from now, as its complexity is scaling each time, and each time it 
 is a higher sunk cost. [~jbellis] [~iamaleksey] [~slebresne] [~tjake] 
 [~enigmacurry] [~aweisberg] [~blambov] [~jshook] ... and @everyone else :) 



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


[jira] [Updated] (CASSANDRA-8359) Make DTCS consider removing SSTables much more frequently

2015-04-02 Thread Marcus Eriksson (JIRA)

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

Marcus Eriksson updated CASSANDRA-8359:
---
Fix Version/s: 2.0.15
   3.0

 Make DTCS consider removing SSTables much more frequently
 -

 Key: CASSANDRA-8359
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8359
 Project: Cassandra
  Issue Type: Improvement
Reporter: Björn Hegerfors
Assignee: Björn Hegerfors
Priority: Minor
 Fix For: 3.0, 2.0.15, 2.1.5

 Attachments: cassandra-2.0-CASSANDRA-8359.txt


 When I run DTCS on a table where every value has a TTL (always the same TTL), 
 SSTables are completely expired, but still stay on disk for much longer than 
 they need to. I've applied CASSANDRA-8243, but it doesn't make an apparent 
 difference (probably because the subject SSTables are purged via compaction 
 anyway, if not by directly dropping them).
 Disk size graphs show clearly that tombstones are only removed when the 
 oldest SSTable participates in compaction. In the long run, size on disk 
 continually grows bigger. This should not have to happen. It should easily be 
 able to stay constant, thanks to DTCS separating the expired data from the 
 rest.
 I think checks for whether SSTables can be dropped should happen much more 
 frequently. This is something that probably only needs to be tweaked for 
 DTCS, but perhaps there's a more general place to put this. Anyway, my 
 thinking is that DTCS should, on every call to getNextBackgroundTask, check 
 which SSTables can be dropped. It would be something like a call to 
 CompactionController.getFullyExpiredSSTables with all non-compactingSSTables 
 sent in as compacting and all other SSTables sent in as overlapping. The 
 returned SSTables, if any, are then added to whichever set of SSTables that 
 DTCS decides to compact. Then before the compaction happens, Cassandra is 
 going to make another call to CompactionController.getFullyExpiredSSTables, 
 where it will see that it can just drop them.
 This approach has a bit of redundancy in that it needs to call 
 CompactionController.getFullyExpiredSSTables twice. To avoid that, the code 
 path for deciding SSTables to drop would have to be changed.
 (Side tracking a little here: I'm also thinking that tombstone compactions 
 could be considered more often in DTCS. Maybe even some kind of multi-SSTable 
 tombstone compaction involving the oldest couple of SSTables...)



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


[jira] [Resolved] (CASSANDRA-8276) Duplicate values in an IN restriction on the partition key column can break paging

2015-04-02 Thread Benjamin Lerer (JIRA)

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

Benjamin Lerer resolved CASSANDRA-8276.
---
Resolution: Fixed

 Duplicate values in an IN restriction on the partition key column can break 
 paging
 --

 Key: CASSANDRA-8276
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8276
 Project: Cassandra
  Issue Type: Bug
 Environment: Cassandra 2.0.10
 Java driver 2.0.8-SNAPSHOT
Reporter: Pierre Laporte
Assignee: Benjamin Lerer
 Fix For: 3.0


 We had an issue 
 ([JAVA-515|https://datastax-oss.atlassian.net/browse/JAVA-515]) in the 
 java-driver when the number of parameters in a statement is greater than the 
 supported limit (65k).
 I added a limit-test to verify that prepared statements with 65535 parameters 
 were accepted by the driver, but ran into an issue on the Cassandra side.
 Basically, the test runs forever, because the driver receives an inconsistent 
 answer from Cassandra.  When we prepare the statement, C* answers that it is 
 correctly prepared, however when we try to execute it, we receive a 
 {{UNPREPARED}} answer.
 [Here is the 
 code|https://github.com/datastax/java-driver/blob/JAVA-515/driver-core/src/test/java/com/datastax/driver/core/PreparedStatementTest.java#L448]
  to reproduce the issue.



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


[jira] [Updated] (CASSANDRA-8276) Duplicate values in an IN restriction on the partition key column can break paging

2015-04-02 Thread Benjamin Lerer (JIRA)

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

Benjamin Lerer updated CASSANDRA-8276:
--
Fix Version/s: (was: 2.1.5)
   3.0
  Summary: Duplicate values in an IN restriction on the partition key 
column can break paging  (was: Unusable prepared statement with 65k parameters)

 Duplicate values in an IN restriction on the partition key column can break 
 paging
 --

 Key: CASSANDRA-8276
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8276
 Project: Cassandra
  Issue Type: Bug
 Environment: Cassandra 2.0.10
 Java driver 2.0.8-SNAPSHOT
Reporter: Pierre Laporte
Assignee: Benjamin Lerer
 Fix For: 3.0


 We had an issue 
 ([JAVA-515|https://datastax-oss.atlassian.net/browse/JAVA-515]) in the 
 java-driver when the number of parameters in a statement is greater than the 
 supported limit (65k).
 I added a limit-test to verify that prepared statements with 65535 parameters 
 were accepted by the driver, but ran into an issue on the Cassandra side.
 Basically, the test runs forever, because the driver receives an inconsistent 
 answer from Cassandra.  When we prepare the statement, C* answers that it is 
 correctly prepared, however when we try to execute it, we receive a 
 {{UNPREPARED}} answer.
 [Here is the 
 code|https://github.com/datastax/java-driver/blob/JAVA-515/driver-core/src/test/java/com/datastax/driver/core/PreparedStatementTest.java#L448]
  to reproduce the issue.



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


[jira] [Created] (CASSANDRA-9095) Compressed commit log should measure compressed space used

2015-04-02 Thread Branimir Lambov (JIRA)
Branimir Lambov created CASSANDRA-9095:
--

 Summary: Compressed commit log should measure compressed space used
 Key: CASSANDRA-9095
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9095
 Project: Cassandra
  Issue Type: Improvement
Reporter: Branimir Lambov
Assignee: Branimir Lambov
Priority: Minor


The commit log compression option introduced in CASSANDRA-6809 does not change 
the way space use is measure by the commitlog, meaning that it still measures 
the amount of space taken by the log segments before compression.

It should measure the space taken on disk which in this case is the compressed 
amount.



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


[jira] [Commented] (CASSANDRA-9092) Nodes in DC2 die during and after huge write workload

2015-04-02 Thread Sergey Maznichenko (JIRA)

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

Sergey Maznichenko commented on CASSANDRA-9092:
---

Java heap is selected automatically in cassandra-env.sh. I tried to set 
MAX_HEAP_SIZE=8G, NEW_HEAP_SIZE=800M, but it didn't help.

nodetool disableautocompaction - didn't help, compactions continue after 
restart node.
nodetool truncatehints - didn't help, it showed message like 'cannot stop 
running hint compaction'.

One of nodes had ~24000 files in system\hints-..., I stepped node and deleted 
them, it helps and node is running about 10 hours. Other node has 18154 files 
in system\hints-... (~1.1TB) and has the same problem, I leave it for 
experiments.

Workload: 20-40 processes on application servers, each one performs loading 
files in blobs (one big table), size of each file is about 3.5MB, key - UUID.

CREATE KEYSPACE filespace WITH replication = {'class': 
'NetworkTopologyStrategy', 'DC1': '1', 'DC2': '1'}  AND durable_writes = true;

CREATE TABLE filespace.filestorage (
key text,
filename text,
value blob,
PRIMARY KEY (key, chunk)
) WITH COMPACT STORAGE
AND CLUSTERING ORDER BY (chunk ASC)
AND bloom_filter_fp_chance = 0.01
AND caching = '{keys:ALL, rows_per_partition:NONE}'
AND comment = ''
AND compaction = {'min_threshold': '4', 'class': 
'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 
'max_threshold': '32'}
AND compression = {'sstable_compression': 
'org.apache.cassandra.io.compress.LZ4Compressor'}
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99.0PERCENTILE';

nodetool status filespace
Datacenter: DC1
===
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address   Load   Tokens  Owns (effective)  Host ID  
 Rack
UN  10.X.X.12   4.82 TB256 28.0% 
25cefe6a-a9b1-4b30-839d-46ed5f4736cc  RAC1
UN  10.X.X.13   3.98 TB256 22.9% 
ef439686-1e8f-4b31-9c42-f49ff7a8b537  RAC1
UN  10.X.X.10   4.52 TB256 26.1% 
a11f52a6-1bff-4b47-bfa9-628a55a058dc  RAC1
UN  10.X.X.11   4.01 TB256 23.1% 
0f454fa7-5cdf-45b3-bf2d-729ab7bd9e52  RAC1
Datacenter: DC2
===
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address   Load   Tokens  Owns (effective)  Host ID  
 Rack
UN  10.X.X.137  4.64 TB256 22.6% 
e184cc42-7cd9-4e2e-bd0d-55a6a62f69dd  RAC1
UN  10.X.X.136  1.25 TB256 27.2% 
c8360341-83e0-4778-b2d4-3966f083151b  RAC1
DN  10.X.X.139  4.81 TB256 25.8% 
1f434cfe-6952-4d41-8fc5-780a18e64963  RAC1
UN  10.X.X.138  3.69 TB256 24.4% 
b7467041-05d9-409f-a59a-438d0a29f6a7  RAC1

I need some workaround to prevent this situation with hints. 

How we use dafault values for:
hinted_handoff_enabled: 'true'
max_hints_delivery_threads: 2
max_hint_window_in_ms: 1080
hinted_handoff_throttle_in_kb: 1024

Should I disable hints or increase number of threads and throughput?

For example:
hinted_handoff_enabled: 'true'
max_hints_delivery_threads: 20
max_hint_window_in_ms: 10800
hinted_handoff_throttle_in_kb: 10240


 Nodes in DC2 die during and after huge write workload
 -

 Key: CASSANDRA-9092
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9092
 Project: Cassandra
  Issue Type: Bug
 Environment: CentOS 6.2 64-bit, Cassandra 2.1.2, 
 java version 1.7.0_71
 Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
 Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
Reporter: Sergey Maznichenko
 Fix For: 2.1.5

 Attachments: cassandra_crash1.txt


 Hello,
 We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
 Node is VM 8 CPU, 32GB RAM
 During significant workload (loading several millions blobs ~3.5MB each), 1 
 node in DC2 stops and after some time next 2 nodes in DC2 also stops.
 Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. 
 I see many files in system.hints table and error appears in 2-3 minutes after 
 starting system.hints auto compaction.
 The problem exists only in DC2. We have 1GbE between DC1 and DC2.



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


[2/2] cassandra git commit: Make it possible to major compact LCS

2015-04-02 Thread marcuse
Make it possible to major compact LCS

Patch by marcuse; reviewed by carlyeks for CASSANDRA-7272


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

Branch: refs/heads/trunk
Commit: 910170c9d10bb6a71922a529b2f070cf27891a10
Parents: 86f51fd
Author: Marcus Eriksson marc...@apache.org
Authored: Fri Jan 9 15:18:26 2015 +0100
Committer: Marcus Eriksson marc...@apache.org
Committed: Thu Apr 2 09:56:19 2015 +0200

--
 CHANGES.txt |   1 +
 NEWS.txt|   8 +
 .../apache/cassandra/db/ColumnFamilyStore.java  |   8 +-
 .../cassandra/db/ColumnFamilyStoreMBean.java|   4 +-
 .../org/apache/cassandra/db/DataTracker.java|   7 +-
 .../compaction/AbstractCompactionStrategy.java  |   2 +-
 .../db/compaction/AbstractCompactionTask.java   |  13 +-
 .../db/compaction/CompactionManager.java|  13 +-
 .../cassandra/db/compaction/CompactionTask.java | 112 --
 .../DateTieredCompactionStrategy.java   |   2 +-
 .../compaction/LeveledCompactionStrategy.java   |  41 ++--
 .../db/compaction/LeveledCompactionTask.java|  16 +-
 .../db/compaction/LeveledManifest.java  |  17 +-
 .../db/compaction/SSTableSplitter.java  |   7 +-
 .../SizeTieredCompactionStrategy.java   |  21 +-
 .../compaction/WrappingCompactionStrategy.java  |   6 +-
 .../writers/CompactionAwareWriter.java  |  97 
 .../writers/DefaultCompactionWriter.java|  85 +++
 .../writers/MajorLeveledCompactionWriter.java   | 120 ++
 .../writers/MaxSSTableSizeWriter.java   | 102 +
 .../SplittingSizeTieredCompactionWriter.java| 135 +++
 .../io/sstable/metadata/MetadataCollector.java  |  20 +-
 .../cassandra/service/StorageService.java   |   4 +-
 .../cassandra/service/StorageServiceMBean.java  |   2 +-
 .../org/apache/cassandra/tools/NodeProbe.java   |   4 +-
 .../org/apache/cassandra/tools/NodeTool.java|   5 +-
 .../db/compaction/LongCompactionsTest.java  |   2 +-
 .../LongLeveledCompactionStrategyTest.java  |   4 +-
 .../org/apache/cassandra/db/KeyspaceTest.java   |   2 +-
 .../apache/cassandra/db/RangeTombstoneTest.java |   6 +-
 .../compaction/CompactionAwareWriterTest.java   | 222 +++
 .../db/compaction/CompactionsPurgeTest.java |   6 +-
 .../db/compaction/CompactionsTest.java  |   2 +-
 .../db/compaction/OneCompactionTest.java|   2 +-
 .../cassandra/io/sstable/SSTableReaderTest.java |  12 +-
 35 files changed, 951 insertions(+), 159 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/910170c9/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index c2a23e5..bda5bb7 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0
+ * Make it possible to major compact LCS (CASSANDRA-7272)
  * Make FunctionExecutionException extend RequestExecutionException
(CASSANDRA-9055)
  * Add support for SELECT JSON, INSERT JSON syntax and new toJson(), fromJson()

http://git-wip-us.apache.org/repos/asf/cassandra/blob/910170c9/NEWS.txt
--
diff --git a/NEWS.txt b/NEWS.txt
index 94e225b..7db07f0 100644
--- a/NEWS.txt
+++ b/NEWS.txt
@@ -18,6 +18,14 @@ using the provided 'sstableupgrade' tool.
 
 New features
 
+   - It is now possible to do major compactions when using leveled compaction.
+ Doing that will take all sstables and compact them out in levels. The
+ levels will be non overlapping so doing this will still not be something
+ you want to do very often since it might cause more compactions for a 
while.
+ It is also possible to split output when doing a major compaction with
+ STCS - files will be split in sizes 50%, 25%, 12.5% etc of the total size.
+ This might be a bit better than old major compactions which created one 
big
+ file on disk.
- A new tool has been added bin/sstableverify that checks for errors/bitrot
  in all sstables.  Unlike scrub, this is a non-invasive tool. 
- Authentication  Authorization APIs have been updated to introduce

http://git-wip-us.apache.org/repos/asf/cassandra/blob/910170c9/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
--
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java 
b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index ca77954..2e3355b 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ 

[1/2] cassandra git commit: Make it possible to major compact LCS

2015-04-02 Thread marcuse
Repository: cassandra
Updated Branches:
  refs/heads/trunk 86f51fd4f - 910170c9d


http://git-wip-us.apache.org/repos/asf/cassandra/blob/910170c9/test/unit/org/apache/cassandra/db/compaction/CompactionAwareWriterTest.java
--
diff --git 
a/test/unit/org/apache/cassandra/db/compaction/CompactionAwareWriterTest.java 
b/test/unit/org/apache/cassandra/db/compaction/CompactionAwareWriterTest.java
new file mode 100644
index 000..ac12491
--- /dev/null
+++ 
b/test/unit/org/apache/cassandra/db/compaction/CompactionAwareWriterTest.java
@@ -0,0 +1,222 @@
+/*
+ * 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.db.compaction;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import com.google.common.primitives.Longs;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import org.apache.cassandra.SchemaLoader;
+import org.apache.cassandra.Util;
+import org.apache.cassandra.config.KSMetaData;
+import org.apache.cassandra.db.Cell;
+import org.apache.cassandra.db.ColumnFamily;
+import org.apache.cassandra.db.ColumnFamilyStore;
+import org.apache.cassandra.db.DecoratedKey;
+import org.apache.cassandra.db.Keyspace;
+import org.apache.cassandra.db.Mutation;
+import org.apache.cassandra.db.compaction.writers.CompactionAwareWriter;
+import org.apache.cassandra.db.compaction.writers.DefaultCompactionWriter;
+import org.apache.cassandra.db.compaction.writers.MajorLeveledCompactionWriter;
+import org.apache.cassandra.db.compaction.writers.MaxSSTableSizeWriter;
+import 
org.apache.cassandra.db.compaction.writers.SplittingSizeTieredCompactionWriter;
+import org.apache.cassandra.db.filter.QueryFilter;
+import org.apache.cassandra.exceptions.ConfigurationException;
+import org.apache.cassandra.io.sstable.ISSTableScanner;
+import org.apache.cassandra.io.sstable.format.SSTableReader;
+import org.apache.cassandra.locator.SimpleStrategy;
+import org.apache.cassandra.utils.ByteBufferUtil;
+import static org.junit.Assert.assertEquals;
+
+public class CompactionAwareWriterTest
+{
+private static String KEYSPACE1 = CompactionAwareWriterTest;
+private static String CF = Standard1;
+
+@BeforeClass
+public static void defineSchema() throws ConfigurationException
+{
+SchemaLoader.prepareServer();
+SchemaLoader.createKeyspace(KEYSPACE1,
+SimpleStrategy.class,
+KSMetaData.optsWithRF(1),
+SchemaLoader.standardCFMD(KEYSPACE1, CF));
+
+}
+@Test
+public void testDefaultCompactionWriter()
+{
+Keyspace ks = Keyspace.open(KEYSPACE1);
+ColumnFamilyStore cfs = ks.getColumnFamilyStore(CF);
+int rowCount = 1000;
+cfs.disableAutoCompaction();
+populate(cfs, rowCount);
+SetSSTableReader sstables = new HashSet(cfs.getSSTables());
+long beforeSize = sstables.iterator().next().onDiskLength();
+CompactionAwareWriter writer = new DefaultCompactionWriter(cfs, 
sstables, sstables, false, OperationType.COMPACTION);
+int rows = compact(cfs, sstables, writer);
+assertEquals(1, cfs.getSSTables().size());
+assertEquals(rowCount, rows);
+assertEquals(beforeSize, 
cfs.getSSTables().iterator().next().onDiskLength());
+validateData(cfs, rowCount);
+cfs.truncateBlocking();
+}
+
+@Test
+public void testMaxSSTableSizeWriter()
+{
+Keyspace ks = Keyspace.open(KEYSPACE1);
+ColumnFamilyStore cfs = ks.getColumnFamilyStore(CF);
+cfs.disableAutoCompaction();
+int rowCount = 1000;
+populate(cfs, rowCount);
+SetSSTableReader sstables = new HashSet(cfs.getSSTables());
+long beforeSize = sstables.iterator().next().onDiskLength();
+int sstableCount = (int)beforeSize/10;
+CompactionAwareWriter writer = new MaxSSTableSizeWriter(cfs, sstables, 
sstables, sstableCount, 0, false, 

[jira] [Commented] (CASSANDRA-9045) Deleted columns are resurrected after repair in wide rows

2015-04-02 Thread Roman Tkachenko (JIRA)

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

Roman Tkachenko commented on CASSANDRA-9045:


Okay, thanks for letting me know!

Nope, there were no compactions around that time. I ran repair on this node 
earlier this morning but the queries were performed some time after it was done.

 Deleted columns are resurrected after repair in wide rows
 -

 Key: CASSANDRA-9045
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9045
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Roman Tkachenko
Assignee: Marcus Eriksson
Priority: Critical
 Fix For: 2.0.15

 Attachments: cqlsh.txt, inconsistency.txt


 Hey guys,
 After almost a week of researching the issue and trying out multiple things 
 with (almost) no luck I was suggested (on the user@cass list) to file a 
 report here.
 h5. Setup
 Cassandra 2.0.13 (we had the issue with 2.0.10 as well and upgraded to see if 
 it goes away)
 Multi datacenter 12+6 nodes cluster.
 h5. Schema
 {code}
 cqlsh describe keyspace blackbook;
 CREATE KEYSPACE blackbook WITH replication = {
   'class': 'NetworkTopologyStrategy',
   'IAD': '3',
   'ORD': '3'
 };
 USE blackbook;
 CREATE TABLE bounces (
   domainid text,
   address text,
   message text,
   timestamp bigint,
   PRIMARY KEY (domainid, address)
 ) WITH
   bloom_filter_fp_chance=0.10 AND
   caching='KEYS_ONLY' AND
   comment='' AND
   dclocal_read_repair_chance=0.10 AND
   gc_grace_seconds=864000 AND
   index_interval=128 AND
   read_repair_chance=0.00 AND
   populate_io_cache_on_flush='false' AND
   default_time_to_live=0 AND
   speculative_retry='99.0PERCENTILE' AND
   memtable_flush_period_in_ms=0 AND
   compaction={'class': 'LeveledCompactionStrategy'} AND
   compression={'sstable_compression': 'LZ4Compressor'};
 {code}
 h5. Use case
 Each row (defined by a domainid) can have many many columns (bounce entries) 
 so rows can get pretty wide. In practice, most of the rows are not that big 
 but some of them contain hundreds of thousands and even millions of columns.
 Columns are not TTL'ed but can be deleted using the following CQL3 statement:
 {code}
 delete from bounces where domainid = 'domain.com' and address = 
 'al...@example.com';
 {code}
 All queries are performed using LOCAL_QUORUM CL.
 h5. Problem
 We weren't very diligent about running repairs on the cluster initially, but 
 shorty after we started doing it we noticed that some of previously deleted 
 columns (bounce entries) are there again, as if tombstones have disappeared.
 I have run this test multiple times via cqlsh, on the row of the customer who 
 originally reported the issue:
 * delete an entry
 * verify it's not returned even with CL=ALL
 * run repair on nodes that own this row's key
 * the columns reappear and are returned even with CL=ALL
 I tried the same test on another row with much less data and everything was 
 correctly deleted and didn't reappear after repair.
 h5. Other steps I've taken so far
 Made sure NTP is running on all servers and clocks are synchronized.
 Increased gc_grace_seconds to 100 days, ran full repair (on the affected 
 keyspace) on all nodes, then changed it back to the default 10 days again. 
 Didn't help.
 Performed one more test. Updated one of the resurrected columns, then deleted 
 it and ran repair again. This time the updated version of the column 
 reappeared.
 Finally, I noticed these log entries for the row in question:
 {code}
 INFO [ValidationExecutor:77] 2015-03-25 20:27:43,936 
 CompactionController.java (line 192) Compacting large row 
 blackbook/bounces:4ed558feba8a483733001d6a (279067683 bytes) incrementally
 {code}
 Figuring it may be related I bumped in_memory_compaction_limit_in_mb to 
 512MB so the row fits into it, deleted the entry and ran repair once again. 
 The log entry for this row was gone and the columns didn't reappear.
 We have a lot of rows much larger than 512MB so can't increase this 
 parameters forever, if that is the issue.
 Please let me know if you need more information on the case or if I can run 
 more experiments.
 Thanks!
 Roman



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


[jira] [Updated] (CASSANDRA-6559) cqlsh should warn about ALLOW FILTERING

2015-04-02 Thread Philip Thompson (JIRA)

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

Philip Thompson updated CASSANDRA-6559:
---
Reviewer: Tyler Hobbs

 cqlsh should warn about ALLOW FILTERING
 ---

 Key: CASSANDRA-6559
 URL: https://issues.apache.org/jira/browse/CASSANDRA-6559
 Project: Cassandra
  Issue Type: Bug
  Components: Tools
Reporter: Tupshin Harper
Priority: Minor
  Labels: cqlsh
 Fix For: 2.0.15

 Attachments: CASSANDRA-6559.txt


 ALLOW FILTERING can be a convenience for preliminary exploration of your 
 data, and can be useful for batch jobs, but it is such an anti-pattern for 
 regular production queries, that cqlsh should provie an explicit warn 
 ingwhenever such a query is performed.



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


[jira] [Commented] (CASSANDRA-8915) Improve MergeIterator performance

2015-04-02 Thread Benedict (JIRA)

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

Benedict commented on CASSANDRA-8915:
-

Suggestion: convert each Candidate into a linked-list of colliding iterators, 
so that consume() becomes guaranteed O(1). In the event of many equal items, 
this would incur only linear costs, and only on push down, rather than 
logarithmic costs on both push down and advance. This would particularly help 
the partition level (sstable/memtable) merge, as we are likely to encounter the 
same DecoratedKey many times.

 Improve MergeIterator performance
 -

 Key: CASSANDRA-8915
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8915
 Project: Cassandra
  Issue Type: Improvement
Reporter: Branimir Lambov
Assignee: Branimir Lambov
Priority: Minor

 The implementation of {{MergeIterator}} uses a priority queue and applies a 
 pair of {{poll}}+{{add}} operations for every item in the resulting sequence. 
 This is quite inefficient as {{poll}} necessarily applies at least {{log N}} 
 comparisons (up to {{2log N}}), and {{add}} often requires another {{log N}}, 
 for example in the case where the inputs largely don't overlap (where {{N}} 
 is the number of iterators being merged).
 This can easily be replaced with a simple custom structure that can perform 
 replacement of the top of the queue in a single step, which will very often 
 complete after a couple of comparisons and in the worst case scenarios will 
 match the complexity of the current implementation.
 This should significantly improve merge performance for iterators with 
 limited overlap (e.g. levelled compaction).



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


[jira] [Created] (CASSANDRA-9107) More accurate row count estimates

2015-04-02 Thread Chris Lohfink (JIRA)
Chris Lohfink created CASSANDRA-9107:


 Summary: More accurate row count estimates
 Key: CASSANDRA-9107
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9107
 Project: Cassandra
  Issue Type: Improvement
Reporter: Chris Lohfink
 Attachments: 9107-cassandra2-1.patch

Currently the estimated row count from cfstats is the sum of the number of rows 
in all the sstables. This becomes very inaccurate with wide rows or heavily 
updated datasets since the same partition would exist in many sstables.  In 
example:

{code}
create KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 
'replication_factor': 1};

create TABLE wide (key text PRIMARY KEY , value text) WITH compaction = 
{'class': 'SizeTieredCompactionStrategy', 'min_threshold': 30, 
'max_threshold': 100} ;
---

insert INTO wide (key, value) VALUES ('key', 'value');
// flush
// cfstats output: Number of keys (estimate): 1  (128 in older version from 
index)

insert INTO wide (key, value) VALUES ('key', 'value');
// flush
// cfstats output: Number of keys (estimate): 2  (256 in older version from 
index)

... etc
{code}

previously it used the index but it still did it per sstable and summed them up 
which became inaccurate as there are more sstables (just by much worse). With 
new versions of sstables we can merge the cardinalities to resolve this with a 
slight hit to accuracy in the case of every sstable having completely unique 
partitions.

Furthermore I think it would be pretty minimal effort to include the number of 
rows in the memtables to this count. We wont have the cardinality merging 
between memtables and sstables but I would consider that a relatively minor 
negative.



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


[jira] [Assigned] (CASSANDRA-9107) More accurate row count estimates

2015-04-02 Thread Chris Lohfink (JIRA)

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

Chris Lohfink reassigned CASSANDRA-9107:


Assignee: Chris Lohfink

 More accurate row count estimates
 -

 Key: CASSANDRA-9107
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9107
 Project: Cassandra
  Issue Type: Improvement
Reporter: Chris Lohfink
Assignee: Chris Lohfink
 Attachments: 9107-cassandra2-1.patch


 Currently the estimated row count from cfstats is the sum of the number of 
 rows in all the sstables. This becomes very inaccurate with wide rows or 
 heavily updated datasets since the same partition would exist in many 
 sstables.  In example:
 {code}
 create KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 
 'replication_factor': 1};
 create TABLE wide (key text PRIMARY KEY , value text) WITH compaction = 
 {'class': 'SizeTieredCompactionStrategy', 'min_threshold': 30, 
 'max_threshold': 100} ;
 ---
 insert INTO wide (key, value) VALUES ('key', 'value');
 // flush
 // cfstats output: Number of keys (estimate): 1  (128 in older version from 
 index)
 insert INTO wide (key, value) VALUES ('key', 'value');
 // flush
 // cfstats output: Number of keys (estimate): 2  (256 in older version from 
 index)
 ... etc
 {code}
 previously it used the index but it still did it per sstable and summed them 
 up which became inaccurate as there are more sstables (just by much worse). 
 With new versions of sstables we can merge the cardinalities to resolve this 
 with a slight hit to accuracy in the case of every sstable having completely 
 unique partitions.
 Furthermore I think it would be pretty minimal effort to include the number 
 of rows in the memtables to this count. We wont have the cardinality merging 
 between memtables and sstables but I would consider that a relatively minor 
 negative.



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


[jira] [Issue Comment Deleted] (CASSANDRA-9045) Deleted columns are resurrected after repair in wide rows

2015-04-02 Thread Tyler Hobbs (JIRA)

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

Tyler Hobbs updated CASSANDRA-9045:
---
Comment: was deleted

(was: [~r0mant] we're currently working on reproducing the issue.  Thanks for 
the additional info!  That's pretty odd.  I presume that there were no 
compactions for that table on 173.203.37.151 around the time of those queries?)

 Deleted columns are resurrected after repair in wide rows
 -

 Key: CASSANDRA-9045
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9045
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Roman Tkachenko
Assignee: Marcus Eriksson
Priority: Critical
 Fix For: 2.0.15

 Attachments: cqlsh.txt, inconsistency.txt


 Hey guys,
 After almost a week of researching the issue and trying out multiple things 
 with (almost) no luck I was suggested (on the user@cass list) to file a 
 report here.
 h5. Setup
 Cassandra 2.0.13 (we had the issue with 2.0.10 as well and upgraded to see if 
 it goes away)
 Multi datacenter 12+6 nodes cluster.
 h5. Schema
 {code}
 cqlsh describe keyspace blackbook;
 CREATE KEYSPACE blackbook WITH replication = {
   'class': 'NetworkTopologyStrategy',
   'IAD': '3',
   'ORD': '3'
 };
 USE blackbook;
 CREATE TABLE bounces (
   domainid text,
   address text,
   message text,
   timestamp bigint,
   PRIMARY KEY (domainid, address)
 ) WITH
   bloom_filter_fp_chance=0.10 AND
   caching='KEYS_ONLY' AND
   comment='' AND
   dclocal_read_repair_chance=0.10 AND
   gc_grace_seconds=864000 AND
   index_interval=128 AND
   read_repair_chance=0.00 AND
   populate_io_cache_on_flush='false' AND
   default_time_to_live=0 AND
   speculative_retry='99.0PERCENTILE' AND
   memtable_flush_period_in_ms=0 AND
   compaction={'class': 'LeveledCompactionStrategy'} AND
   compression={'sstable_compression': 'LZ4Compressor'};
 {code}
 h5. Use case
 Each row (defined by a domainid) can have many many columns (bounce entries) 
 so rows can get pretty wide. In practice, most of the rows are not that big 
 but some of them contain hundreds of thousands and even millions of columns.
 Columns are not TTL'ed but can be deleted using the following CQL3 statement:
 {code}
 delete from bounces where domainid = 'domain.com' and address = 
 'al...@example.com';
 {code}
 All queries are performed using LOCAL_QUORUM CL.
 h5. Problem
 We weren't very diligent about running repairs on the cluster initially, but 
 shorty after we started doing it we noticed that some of previously deleted 
 columns (bounce entries) are there again, as if tombstones have disappeared.
 I have run this test multiple times via cqlsh, on the row of the customer who 
 originally reported the issue:
 * delete an entry
 * verify it's not returned even with CL=ALL
 * run repair on nodes that own this row's key
 * the columns reappear and are returned even with CL=ALL
 I tried the same test on another row with much less data and everything was 
 correctly deleted and didn't reappear after repair.
 h5. Other steps I've taken so far
 Made sure NTP is running on all servers and clocks are synchronized.
 Increased gc_grace_seconds to 100 days, ran full repair (on the affected 
 keyspace) on all nodes, then changed it back to the default 10 days again. 
 Didn't help.
 Performed one more test. Updated one of the resurrected columns, then deleted 
 it and ran repair again. This time the updated version of the column 
 reappeared.
 Finally, I noticed these log entries for the row in question:
 {code}
 INFO [ValidationExecutor:77] 2015-03-25 20:27:43,936 
 CompactionController.java (line 192) Compacting large row 
 blackbook/bounces:4ed558feba8a483733001d6a (279067683 bytes) incrementally
 {code}
 Figuring it may be related I bumped in_memory_compaction_limit_in_mb to 
 512MB so the row fits into it, deleted the entry and ran repair once again. 
 The log entry for this row was gone and the columns didn't reappear.
 We have a lot of rows much larger than 512MB so can't increase this 
 parameters forever, if that is the issue.
 Please let me know if you need more information on the case or if I can run 
 more experiments.
 Thanks!
 Roman



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


[jira] [Commented] (CASSANDRA-9045) Deleted columns are resurrected after repair in wide rows

2015-04-02 Thread Tyler Hobbs (JIRA)

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

Tyler Hobbs commented on CASSANDRA-9045:


[~r0mant] we're currently working on reproducing the issue.  Thanks for the 
additional info!  That's pretty odd.  I presume that there were no compactions 
for that table on 173.203.37.151 around the time of those queries?

 Deleted columns are resurrected after repair in wide rows
 -

 Key: CASSANDRA-9045
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9045
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Roman Tkachenko
Assignee: Marcus Eriksson
Priority: Critical
 Fix For: 2.0.15

 Attachments: cqlsh.txt, inconsistency.txt


 Hey guys,
 After almost a week of researching the issue and trying out multiple things 
 with (almost) no luck I was suggested (on the user@cass list) to file a 
 report here.
 h5. Setup
 Cassandra 2.0.13 (we had the issue with 2.0.10 as well and upgraded to see if 
 it goes away)
 Multi datacenter 12+6 nodes cluster.
 h5. Schema
 {code}
 cqlsh describe keyspace blackbook;
 CREATE KEYSPACE blackbook WITH replication = {
   'class': 'NetworkTopologyStrategy',
   'IAD': '3',
   'ORD': '3'
 };
 USE blackbook;
 CREATE TABLE bounces (
   domainid text,
   address text,
   message text,
   timestamp bigint,
   PRIMARY KEY (domainid, address)
 ) WITH
   bloom_filter_fp_chance=0.10 AND
   caching='KEYS_ONLY' AND
   comment='' AND
   dclocal_read_repair_chance=0.10 AND
   gc_grace_seconds=864000 AND
   index_interval=128 AND
   read_repair_chance=0.00 AND
   populate_io_cache_on_flush='false' AND
   default_time_to_live=0 AND
   speculative_retry='99.0PERCENTILE' AND
   memtable_flush_period_in_ms=0 AND
   compaction={'class': 'LeveledCompactionStrategy'} AND
   compression={'sstable_compression': 'LZ4Compressor'};
 {code}
 h5. Use case
 Each row (defined by a domainid) can have many many columns (bounce entries) 
 so rows can get pretty wide. In practice, most of the rows are not that big 
 but some of them contain hundreds of thousands and even millions of columns.
 Columns are not TTL'ed but can be deleted using the following CQL3 statement:
 {code}
 delete from bounces where domainid = 'domain.com' and address = 
 'al...@example.com';
 {code}
 All queries are performed using LOCAL_QUORUM CL.
 h5. Problem
 We weren't very diligent about running repairs on the cluster initially, but 
 shorty after we started doing it we noticed that some of previously deleted 
 columns (bounce entries) are there again, as if tombstones have disappeared.
 I have run this test multiple times via cqlsh, on the row of the customer who 
 originally reported the issue:
 * delete an entry
 * verify it's not returned even with CL=ALL
 * run repair on nodes that own this row's key
 * the columns reappear and are returned even with CL=ALL
 I tried the same test on another row with much less data and everything was 
 correctly deleted and didn't reappear after repair.
 h5. Other steps I've taken so far
 Made sure NTP is running on all servers and clocks are synchronized.
 Increased gc_grace_seconds to 100 days, ran full repair (on the affected 
 keyspace) on all nodes, then changed it back to the default 10 days again. 
 Didn't help.
 Performed one more test. Updated one of the resurrected columns, then deleted 
 it and ran repair again. This time the updated version of the column 
 reappeared.
 Finally, I noticed these log entries for the row in question:
 {code}
 INFO [ValidationExecutor:77] 2015-03-25 20:27:43,936 
 CompactionController.java (line 192) Compacting large row 
 blackbook/bounces:4ed558feba8a483733001d6a (279067683 bytes) incrementally
 {code}
 Figuring it may be related I bumped in_memory_compaction_limit_in_mb to 
 512MB so the row fits into it, deleted the entry and ran repair once again. 
 The log entry for this row was gone and the columns didn't reappear.
 We have a lot of rows much larger than 512MB so can't increase this 
 parameters forever, if that is the issue.
 Please let me know if you need more information on the case or if I can run 
 more experiments.
 Thanks!
 Roman



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


[jira] [Commented] (CASSANDRA-9045) Deleted columns are resurrected after repair in wide rows

2015-04-02 Thread Tyler Hobbs (JIRA)

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

Tyler Hobbs commented on CASSANDRA-9045:


[~r0mant] we're currently working on reproducing the issue.  Thanks for the 
additional info!  That's pretty odd.  I presume that there were no compactions 
for that table on 173.203.37.151 around the time of those queries?

 Deleted columns are resurrected after repair in wide rows
 -

 Key: CASSANDRA-9045
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9045
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Roman Tkachenko
Assignee: Marcus Eriksson
Priority: Critical
 Fix For: 2.0.15

 Attachments: cqlsh.txt, inconsistency.txt


 Hey guys,
 After almost a week of researching the issue and trying out multiple things 
 with (almost) no luck I was suggested (on the user@cass list) to file a 
 report here.
 h5. Setup
 Cassandra 2.0.13 (we had the issue with 2.0.10 as well and upgraded to see if 
 it goes away)
 Multi datacenter 12+6 nodes cluster.
 h5. Schema
 {code}
 cqlsh describe keyspace blackbook;
 CREATE KEYSPACE blackbook WITH replication = {
   'class': 'NetworkTopologyStrategy',
   'IAD': '3',
   'ORD': '3'
 };
 USE blackbook;
 CREATE TABLE bounces (
   domainid text,
   address text,
   message text,
   timestamp bigint,
   PRIMARY KEY (domainid, address)
 ) WITH
   bloom_filter_fp_chance=0.10 AND
   caching='KEYS_ONLY' AND
   comment='' AND
   dclocal_read_repair_chance=0.10 AND
   gc_grace_seconds=864000 AND
   index_interval=128 AND
   read_repair_chance=0.00 AND
   populate_io_cache_on_flush='false' AND
   default_time_to_live=0 AND
   speculative_retry='99.0PERCENTILE' AND
   memtable_flush_period_in_ms=0 AND
   compaction={'class': 'LeveledCompactionStrategy'} AND
   compression={'sstable_compression': 'LZ4Compressor'};
 {code}
 h5. Use case
 Each row (defined by a domainid) can have many many columns (bounce entries) 
 so rows can get pretty wide. In practice, most of the rows are not that big 
 but some of them contain hundreds of thousands and even millions of columns.
 Columns are not TTL'ed but can be deleted using the following CQL3 statement:
 {code}
 delete from bounces where domainid = 'domain.com' and address = 
 'al...@example.com';
 {code}
 All queries are performed using LOCAL_QUORUM CL.
 h5. Problem
 We weren't very diligent about running repairs on the cluster initially, but 
 shorty after we started doing it we noticed that some of previously deleted 
 columns (bounce entries) are there again, as if tombstones have disappeared.
 I have run this test multiple times via cqlsh, on the row of the customer who 
 originally reported the issue:
 * delete an entry
 * verify it's not returned even with CL=ALL
 * run repair on nodes that own this row's key
 * the columns reappear and are returned even with CL=ALL
 I tried the same test on another row with much less data and everything was 
 correctly deleted and didn't reappear after repair.
 h5. Other steps I've taken so far
 Made sure NTP is running on all servers and clocks are synchronized.
 Increased gc_grace_seconds to 100 days, ran full repair (on the affected 
 keyspace) on all nodes, then changed it back to the default 10 days again. 
 Didn't help.
 Performed one more test. Updated one of the resurrected columns, then deleted 
 it and ran repair again. This time the updated version of the column 
 reappeared.
 Finally, I noticed these log entries for the row in question:
 {code}
 INFO [ValidationExecutor:77] 2015-03-25 20:27:43,936 
 CompactionController.java (line 192) Compacting large row 
 blackbook/bounces:4ed558feba8a483733001d6a (279067683 bytes) incrementally
 {code}
 Figuring it may be related I bumped in_memory_compaction_limit_in_mb to 
 512MB so the row fits into it, deleted the entry and ran repair once again. 
 The log entry for this row was gone and the columns didn't reappear.
 We have a lot of rows much larger than 512MB so can't increase this 
 parameters forever, if that is the issue.
 Please let me know if you need more information on the case or if I can run 
 more experiments.
 Thanks!
 Roman



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


[jira] [Commented] (CASSANDRA-7688) Add data sizing to a system table

2015-04-02 Thread Aleksey Yeschenko (JIRA)

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

Aleksey Yeschenko commented on CASSANDRA-7688:
--

You probably just have schema left from running 2.1-head.

 Add data sizing to a system table
 -

 Key: CASSANDRA-7688
 URL: https://issues.apache.org/jira/browse/CASSANDRA-7688
 Project: Cassandra
  Issue Type: New Feature
Reporter: Jeremiah Jordan
Assignee: Aleksey Yeschenko
 Fix For: 2.1.5

 Attachments: 7688.txt


 Currently you can't implement something similar to describe_splits_ex purely 
 from the a native protocol driver.  
 https://datastax-oss.atlassian.net/browse/JAVA-312 is open to expose easily 
 getting ownership information to a client in the java-driver.  But you still 
 need the data sizing part to get splits of a given size.  We should add the 
 sizing information to a system table so that native clients can get to it.



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


[jira] [Updated] (CASSANDRA-8238) NPE in SizeTieredCompactionStrategy.filterColdSSTables

2015-04-02 Thread Tyler Hobbs (JIRA)

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

Tyler Hobbs updated CASSANDRA-8238:
---
Fix Version/s: 2.0.15

 NPE in SizeTieredCompactionStrategy.filterColdSSTables
 --

 Key: CASSANDRA-8238
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8238
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Tyler Hobbs
Assignee: Marcus Eriksson
 Fix For: 2.0.15, 2.1.5

 Attachments: 0001-assert-that-readMeter-is-not-null.patch, 
 0001-dont-always-set-client-mode-for-sstable-loader.patch


 {noformat}
 ERROR [CompactionExecutor:15] 2014-10-31 15:28:32,318 
 CassandraDaemon.java:153 - Exception in thread 
 Thread[CompactionExecutor:15,1,main]
 java.lang.NullPointerException: null
 at 
 org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.filterColdSSTables(SizeTieredCompactionStrategy.java:181)
  ~[apache-cassandra-2.1.1.jar:2.1.1]
 at 
 org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.getNextBackgroundSSTables(SizeTieredCompactionStrategy.java:83)
  ~[apache-cassandra-2.1.1.jar:2.1.1]
 at 
 org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.getNextBackgroundTask(SizeTieredCompactionStrategy.java:267)
  ~[apache-cassandra-2.1.1.jar:2.1.1]
 at 
 org.apache.cassandra.db.compaction.CompactionManager$BackgroundCompactionTask.run(CompactionManager.java:226)
  ~[apache-cassandra-2.1.1.jar:2.1.1]
 at 
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
 ~[na:1.7.0_72]
 at java.util.concurrent.FutureTask.run(FutureTask.java:262) ~[na:1.7.0_72]
 at 
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
  ~[na:1.7.0_72]
 at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
  [na:1.7.0_72]
 at java.lang.Thread.run(Thread.java:745) [na:1.7.0_72]
 {noformat}



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


[jira] [Commented] (CASSANDRA-9045) Deleted columns are resurrected after repair in wide rows

2015-04-02 Thread Tyler Hobbs (JIRA)

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

Tyler Hobbs commented on CASSANDRA-9045:


[~r0mant] since we're having no luck reproducing the issue, would you be 
willing to deploy a patched version of 2.0.13 with additional tracing entries 
if we create a patch?

 Deleted columns are resurrected after repair in wide rows
 -

 Key: CASSANDRA-9045
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9045
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Roman Tkachenko
Assignee: Marcus Eriksson
Priority: Critical
 Fix For: 2.0.15

 Attachments: cqlsh.txt, inconsistency.txt


 Hey guys,
 After almost a week of researching the issue and trying out multiple things 
 with (almost) no luck I was suggested (on the user@cass list) to file a 
 report here.
 h5. Setup
 Cassandra 2.0.13 (we had the issue with 2.0.10 as well and upgraded to see if 
 it goes away)
 Multi datacenter 12+6 nodes cluster.
 h5. Schema
 {code}
 cqlsh describe keyspace blackbook;
 CREATE KEYSPACE blackbook WITH replication = {
   'class': 'NetworkTopologyStrategy',
   'IAD': '3',
   'ORD': '3'
 };
 USE blackbook;
 CREATE TABLE bounces (
   domainid text,
   address text,
   message text,
   timestamp bigint,
   PRIMARY KEY (domainid, address)
 ) WITH
   bloom_filter_fp_chance=0.10 AND
   caching='KEYS_ONLY' AND
   comment='' AND
   dclocal_read_repair_chance=0.10 AND
   gc_grace_seconds=864000 AND
   index_interval=128 AND
   read_repair_chance=0.00 AND
   populate_io_cache_on_flush='false' AND
   default_time_to_live=0 AND
   speculative_retry='99.0PERCENTILE' AND
   memtable_flush_period_in_ms=0 AND
   compaction={'class': 'LeveledCompactionStrategy'} AND
   compression={'sstable_compression': 'LZ4Compressor'};
 {code}
 h5. Use case
 Each row (defined by a domainid) can have many many columns (bounce entries) 
 so rows can get pretty wide. In practice, most of the rows are not that big 
 but some of them contain hundreds of thousands and even millions of columns.
 Columns are not TTL'ed but can be deleted using the following CQL3 statement:
 {code}
 delete from bounces where domainid = 'domain.com' and address = 
 'al...@example.com';
 {code}
 All queries are performed using LOCAL_QUORUM CL.
 h5. Problem
 We weren't very diligent about running repairs on the cluster initially, but 
 shorty after we started doing it we noticed that some of previously deleted 
 columns (bounce entries) are there again, as if tombstones have disappeared.
 I have run this test multiple times via cqlsh, on the row of the customer who 
 originally reported the issue:
 * delete an entry
 * verify it's not returned even with CL=ALL
 * run repair on nodes that own this row's key
 * the columns reappear and are returned even with CL=ALL
 I tried the same test on another row with much less data and everything was 
 correctly deleted and didn't reappear after repair.
 h5. Other steps I've taken so far
 Made sure NTP is running on all servers and clocks are synchronized.
 Increased gc_grace_seconds to 100 days, ran full repair (on the affected 
 keyspace) on all nodes, then changed it back to the default 10 days again. 
 Didn't help.
 Performed one more test. Updated one of the resurrected columns, then deleted 
 it and ran repair again. This time the updated version of the column 
 reappeared.
 Finally, I noticed these log entries for the row in question:
 {code}
 INFO [ValidationExecutor:77] 2015-03-25 20:27:43,936 
 CompactionController.java (line 192) Compacting large row 
 blackbook/bounces:4ed558feba8a483733001d6a (279067683 bytes) incrementally
 {code}
 Figuring it may be related I bumped in_memory_compaction_limit_in_mb to 
 512MB so the row fits into it, deleted the entry and ran repair once again. 
 The log entry for this row was gone and the columns didn't reappear.
 We have a lot of rows much larger than 512MB so can't increase this 
 parameters forever, if that is the issue.
 Please let me know if you need more information on the case or if I can run 
 more experiments.
 Thanks!
 Roman



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


[jira] [Commented] (CASSANDRA-9045) Deleted columns are resurrected after repair in wide rows

2015-04-02 Thread Roman Tkachenko (JIRA)

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

Roman Tkachenko commented on CASSANDRA-9045:


Also, what is the digest mismatch that I'm getting in some tracing query 
logs? Can it be the reason of this weird behavior?

 Deleted columns are resurrected after repair in wide rows
 -

 Key: CASSANDRA-9045
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9045
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Roman Tkachenko
Assignee: Marcus Eriksson
Priority: Critical
 Fix For: 2.0.15

 Attachments: cqlsh.txt, inconsistency.txt


 Hey guys,
 After almost a week of researching the issue and trying out multiple things 
 with (almost) no luck I was suggested (on the user@cass list) to file a 
 report here.
 h5. Setup
 Cassandra 2.0.13 (we had the issue with 2.0.10 as well and upgraded to see if 
 it goes away)
 Multi datacenter 12+6 nodes cluster.
 h5. Schema
 {code}
 cqlsh describe keyspace blackbook;
 CREATE KEYSPACE blackbook WITH replication = {
   'class': 'NetworkTopologyStrategy',
   'IAD': '3',
   'ORD': '3'
 };
 USE blackbook;
 CREATE TABLE bounces (
   domainid text,
   address text,
   message text,
   timestamp bigint,
   PRIMARY KEY (domainid, address)
 ) WITH
   bloom_filter_fp_chance=0.10 AND
   caching='KEYS_ONLY' AND
   comment='' AND
   dclocal_read_repair_chance=0.10 AND
   gc_grace_seconds=864000 AND
   index_interval=128 AND
   read_repair_chance=0.00 AND
   populate_io_cache_on_flush='false' AND
   default_time_to_live=0 AND
   speculative_retry='99.0PERCENTILE' AND
   memtable_flush_period_in_ms=0 AND
   compaction={'class': 'LeveledCompactionStrategy'} AND
   compression={'sstable_compression': 'LZ4Compressor'};
 {code}
 h5. Use case
 Each row (defined by a domainid) can have many many columns (bounce entries) 
 so rows can get pretty wide. In practice, most of the rows are not that big 
 but some of them contain hundreds of thousands and even millions of columns.
 Columns are not TTL'ed but can be deleted using the following CQL3 statement:
 {code}
 delete from bounces where domainid = 'domain.com' and address = 
 'al...@example.com';
 {code}
 All queries are performed using LOCAL_QUORUM CL.
 h5. Problem
 We weren't very diligent about running repairs on the cluster initially, but 
 shorty after we started doing it we noticed that some of previously deleted 
 columns (bounce entries) are there again, as if tombstones have disappeared.
 I have run this test multiple times via cqlsh, on the row of the customer who 
 originally reported the issue:
 * delete an entry
 * verify it's not returned even with CL=ALL
 * run repair on nodes that own this row's key
 * the columns reappear and are returned even with CL=ALL
 I tried the same test on another row with much less data and everything was 
 correctly deleted and didn't reappear after repair.
 h5. Other steps I've taken so far
 Made sure NTP is running on all servers and clocks are synchronized.
 Increased gc_grace_seconds to 100 days, ran full repair (on the affected 
 keyspace) on all nodes, then changed it back to the default 10 days again. 
 Didn't help.
 Performed one more test. Updated one of the resurrected columns, then deleted 
 it and ran repair again. This time the updated version of the column 
 reappeared.
 Finally, I noticed these log entries for the row in question:
 {code}
 INFO [ValidationExecutor:77] 2015-03-25 20:27:43,936 
 CompactionController.java (line 192) Compacting large row 
 blackbook/bounces:4ed558feba8a483733001d6a (279067683 bytes) incrementally
 {code}
 Figuring it may be related I bumped in_memory_compaction_limit_in_mb to 
 512MB so the row fits into it, deleted the entry and ran repair once again. 
 The log entry for this row was gone and the columns didn't reappear.
 We have a lot of rows much larger than 512MB so can't increase this 
 parameters forever, if that is the issue.
 Please let me know if you need more information on the case or if I can run 
 more experiments.
 Thanks!
 Roman



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


[jira] [Updated] (CASSANDRA-9045) Deleted columns are resurrected after repair in wide rows

2015-04-02 Thread Roman Tkachenko (JIRA)

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

Roman Tkachenko updated CASSANDRA-9045:
---
Attachment: inconsistency.txt

 Deleted columns are resurrected after repair in wide rows
 -

 Key: CASSANDRA-9045
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9045
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Roman Tkachenko
Assignee: Marcus Eriksson
Priority: Critical
 Fix For: 2.0.15

 Attachments: cqlsh.txt, inconsistency.txt


 Hey guys,
 After almost a week of researching the issue and trying out multiple things 
 with (almost) no luck I was suggested (on the user@cass list) to file a 
 report here.
 h5. Setup
 Cassandra 2.0.13 (we had the issue with 2.0.10 as well and upgraded to see if 
 it goes away)
 Multi datacenter 12+6 nodes cluster.
 h5. Schema
 {code}
 cqlsh describe keyspace blackbook;
 CREATE KEYSPACE blackbook WITH replication = {
   'class': 'NetworkTopologyStrategy',
   'IAD': '3',
   'ORD': '3'
 };
 USE blackbook;
 CREATE TABLE bounces (
   domainid text,
   address text,
   message text,
   timestamp bigint,
   PRIMARY KEY (domainid, address)
 ) WITH
   bloom_filter_fp_chance=0.10 AND
   caching='KEYS_ONLY' AND
   comment='' AND
   dclocal_read_repair_chance=0.10 AND
   gc_grace_seconds=864000 AND
   index_interval=128 AND
   read_repair_chance=0.00 AND
   populate_io_cache_on_flush='false' AND
   default_time_to_live=0 AND
   speculative_retry='99.0PERCENTILE' AND
   memtable_flush_period_in_ms=0 AND
   compaction={'class': 'LeveledCompactionStrategy'} AND
   compression={'sstable_compression': 'LZ4Compressor'};
 {code}
 h5. Use case
 Each row (defined by a domainid) can have many many columns (bounce entries) 
 so rows can get pretty wide. In practice, most of the rows are not that big 
 but some of them contain hundreds of thousands and even millions of columns.
 Columns are not TTL'ed but can be deleted using the following CQL3 statement:
 {code}
 delete from bounces where domainid = 'domain.com' and address = 
 'al...@example.com';
 {code}
 All queries are performed using LOCAL_QUORUM CL.
 h5. Problem
 We weren't very diligent about running repairs on the cluster initially, but 
 shorty after we started doing it we noticed that some of previously deleted 
 columns (bounce entries) are there again, as if tombstones have disappeared.
 I have run this test multiple times via cqlsh, on the row of the customer who 
 originally reported the issue:
 * delete an entry
 * verify it's not returned even with CL=ALL
 * run repair on nodes that own this row's key
 * the columns reappear and are returned even with CL=ALL
 I tried the same test on another row with much less data and everything was 
 correctly deleted and didn't reappear after repair.
 h5. Other steps I've taken so far
 Made sure NTP is running on all servers and clocks are synchronized.
 Increased gc_grace_seconds to 100 days, ran full repair (on the affected 
 keyspace) on all nodes, then changed it back to the default 10 days again. 
 Didn't help.
 Performed one more test. Updated one of the resurrected columns, then deleted 
 it and ran repair again. This time the updated version of the column 
 reappeared.
 Finally, I noticed these log entries for the row in question:
 {code}
 INFO [ValidationExecutor:77] 2015-03-25 20:27:43,936 
 CompactionController.java (line 192) Compacting large row 
 blackbook/bounces:4ed558feba8a483733001d6a (279067683 bytes) incrementally
 {code}
 Figuring it may be related I bumped in_memory_compaction_limit_in_mb to 
 512MB so the row fits into it, deleted the entry and ran repair once again. 
 The log entry for this row was gone and the columns didn't reappear.
 We have a lot of rows much larger than 512MB so can't increase this 
 parameters forever, if that is the issue.
 Please let me know if you need more information on the case or if I can run 
 more experiments.
 Thanks!
 Roman



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


[jira] [Created] (CASSANDRA-9105) JMX APIs appear untested

2015-04-02 Thread Ariel Weisberg (JIRA)
Ariel Weisberg created CASSANDRA-9105:
-

 Summary: JMX APIs appear untested
 Key: CASSANDRA-9105
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9105
 Project: Cassandra
  Issue Type: Test
Reporter: Ariel Weisberg


Anything supported via JMX is part of the public API of the database.

Node tool uses JMX but doesn't seem to have its own unit test and the dtest 
nodetool_test.py is pretty sparse.

For values returned by JMX for the purposes of reporting we should test as best 
we can that we are getting real values end to end. Occasionally metrics end 
up with no values, or values in the wrong units.

For commands going the other direction they should be exercised. There is 
probably a lot of coverage of commands since they may be used when testing the 
features those commands are a part of so no need for duplication there.



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


[jira] [Updated] (CASSANDRA-7557) User permissions for UDFs

2015-04-02 Thread Sam Tunnicliffe (JIRA)

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

Sam Tunnicliffe updated CASSANDRA-7557:
---
Reviewer: Tyler Hobbs

 User permissions for UDFs
 -

 Key: CASSANDRA-7557
 URL: https://issues.apache.org/jira/browse/CASSANDRA-7557
 Project: Cassandra
  Issue Type: Sub-task
  Components: Core
Reporter: Tyler Hobbs
Assignee: Sam Tunnicliffe
  Labels: client-impacting, cql, udf
 Fix For: 3.0


 We probably want some new permissions for user defined functions.  Most 
 RDBMSes split function permissions roughly into {{EXECUTE}} and 
 {{CREATE}}/{{ALTER}}/{{DROP}} permissions.



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


[jira] [Updated] (CASSANDRA-9092) Nodes in DC2 die during and after huge write workload

2015-04-02 Thread Philip Thompson (JIRA)

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

Philip Thompson updated CASSANDRA-9092:
---
Assignee: Sam Tunnicliffe

 Nodes in DC2 die during and after huge write workload
 -

 Key: CASSANDRA-9092
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9092
 Project: Cassandra
  Issue Type: Bug
 Environment: CentOS 6.2 64-bit, Cassandra 2.1.2, 
 java version 1.7.0_71
 Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
 Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
Reporter: Sergey Maznichenko
Assignee: Sam Tunnicliffe
 Fix For: 2.1.5

 Attachments: cassandra_crash1.txt


 Hello,
 We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
 Node is VM 8 CPU, 32GB RAM
 During significant workload (loading several millions blobs ~3.5MB each), 1 
 node in DC2 stops and after some time next 2 nodes in DC2 also stops.
 Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. 
 I see many files in system.hints table and error appears in 2-3 minutes after 
 starting system.hints auto compaction.
 Stops, means ERROR [CompactionExecutor:1] 2015-04-01 23:33:44,456 
 CassandraDaemon.java:153 - Exception in thread 
 Thread[CompactionExecutor:1,1,main]
 java.lang.OutOfMemoryError: Java heap space
 ERROR [HintedHandoff:1] 2015-04-01 23:33:44,456 CassandraDaemon.java:153 - 
 Exception in thread Thread[HintedHandoff:1,1,main]
 java.lang.RuntimeException: java.util.concurrent.ExecutionException: 
 java.lang.OutOfMemoryError: Java heap space
 Full errors listing attached in cassandra_crash1.txt
 The problem exists only in DC2. We have 1GbE between DC1 and DC2.



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


[jira] [Issue Comment Deleted] (CASSANDRA-8991) CQL3 DropIndexStatement should expose getColumnFamily like the CQL2 version does.

2015-04-02 Thread Ulises Cervino Beresi (JIRA)

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

Ulises Cervino Beresi updated CASSANDRA-8991:
-
Comment: was deleted

(was: Can this patch be backported to 2.0 please?)

 CQL3 DropIndexStatement should expose getColumnFamily like the CQL2 version 
 does.
 -

 Key: CASSANDRA-8991
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8991
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Ulises Cervino Beresi
Assignee: Ulises Cervino Beresi
Priority: Minor
 Fix For: 2.0.15, 2.1.5

 Attachments: CASSANDRA-2.0.13-8991.txt


 CQL3 DropIndexStatement should expose getColumnFamily like the CQL2 version 
 does.



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


[Cassandra Wiki] Update of ThirdPartySupport by AlekseyYeschenko

2015-04-02 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Cassandra Wiki for 
change notification.

The ThirdPartySupport page has been changed by AlekseyYeschenko:
https://wiki.apache.org/cassandra/ThirdPartySupport?action=diffrev1=44rev2=45

  
  == Companies that employ Apache Cassandra Committers: ==
  
- 
{{http://www.datastax.com/wp-content/themes/datastax-2014-08/images/common/logo.png}}
 [[http://datastax.com|Datastax]], the commercial leader in Apache Cassandra™ 
offers products and services that make it easy for customers to build, deploy 
and operate elastically scalable and cloud-optimized applications and data 
services. [[http://datastax.com|DataStax]] has over 100 customers, including 
leaders such as Netflix, Cisco, Rackspace, HP, Constant Contact and 
[[http://www.datastax.com/cassandrausers|more]], and spanning verticals 
including web, financial services, telecommunications, logistics and government.
+ {{ https://upload.wikimedia.org/wikipedia/en/d/d3/Datastax_Logo.png }} 
[[http://datastax.com|Datastax]], the commercial leader in Apache Cassandra™ 
offers products and services that make it easy for customers to build, deploy 
and operate elastically scalable and cloud-optimized applications and data 
services. [[http://datastax.com|DataStax]] has over 100 customers, including 
leaders such as Netflix, Cisco, Rackspace, HP, Constant Contact and 
[[http://www.datastax.com/cassandrausers|more]], and spanning verticals 
including web, financial services, telecommunications, logistics and government.
  
  == Other companies: ==
  


[jira] [Commented] (CASSANDRA-9045) Deleted columns are resurrected after repair in wide rows

2015-04-02 Thread Roman Tkachenko (JIRA)

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

Roman Tkachenko commented on CASSANDRA-9045:


We can try that. Would you be able to provide a binary that I could use as a 
drop-in replacement? Also, will I need to replace it on all nodes in the 
cluster?

 Deleted columns are resurrected after repair in wide rows
 -

 Key: CASSANDRA-9045
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9045
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Roman Tkachenko
Assignee: Marcus Eriksson
Priority: Critical
 Fix For: 2.0.15

 Attachments: cqlsh.txt, inconsistency.txt


 Hey guys,
 After almost a week of researching the issue and trying out multiple things 
 with (almost) no luck I was suggested (on the user@cass list) to file a 
 report here.
 h5. Setup
 Cassandra 2.0.13 (we had the issue with 2.0.10 as well and upgraded to see if 
 it goes away)
 Multi datacenter 12+6 nodes cluster.
 h5. Schema
 {code}
 cqlsh describe keyspace blackbook;
 CREATE KEYSPACE blackbook WITH replication = {
   'class': 'NetworkTopologyStrategy',
   'IAD': '3',
   'ORD': '3'
 };
 USE blackbook;
 CREATE TABLE bounces (
   domainid text,
   address text,
   message text,
   timestamp bigint,
   PRIMARY KEY (domainid, address)
 ) WITH
   bloom_filter_fp_chance=0.10 AND
   caching='KEYS_ONLY' AND
   comment='' AND
   dclocal_read_repair_chance=0.10 AND
   gc_grace_seconds=864000 AND
   index_interval=128 AND
   read_repair_chance=0.00 AND
   populate_io_cache_on_flush='false' AND
   default_time_to_live=0 AND
   speculative_retry='99.0PERCENTILE' AND
   memtable_flush_period_in_ms=0 AND
   compaction={'class': 'LeveledCompactionStrategy'} AND
   compression={'sstable_compression': 'LZ4Compressor'};
 {code}
 h5. Use case
 Each row (defined by a domainid) can have many many columns (bounce entries) 
 so rows can get pretty wide. In practice, most of the rows are not that big 
 but some of them contain hundreds of thousands and even millions of columns.
 Columns are not TTL'ed but can be deleted using the following CQL3 statement:
 {code}
 delete from bounces where domainid = 'domain.com' and address = 
 'al...@example.com';
 {code}
 All queries are performed using LOCAL_QUORUM CL.
 h5. Problem
 We weren't very diligent about running repairs on the cluster initially, but 
 shorty after we started doing it we noticed that some of previously deleted 
 columns (bounce entries) are there again, as if tombstones have disappeared.
 I have run this test multiple times via cqlsh, on the row of the customer who 
 originally reported the issue:
 * delete an entry
 * verify it's not returned even with CL=ALL
 * run repair on nodes that own this row's key
 * the columns reappear and are returned even with CL=ALL
 I tried the same test on another row with much less data and everything was 
 correctly deleted and didn't reappear after repair.
 h5. Other steps I've taken so far
 Made sure NTP is running on all servers and clocks are synchronized.
 Increased gc_grace_seconds to 100 days, ran full repair (on the affected 
 keyspace) on all nodes, then changed it back to the default 10 days again. 
 Didn't help.
 Performed one more test. Updated one of the resurrected columns, then deleted 
 it and ran repair again. This time the updated version of the column 
 reappeared.
 Finally, I noticed these log entries for the row in question:
 {code}
 INFO [ValidationExecutor:77] 2015-03-25 20:27:43,936 
 CompactionController.java (line 192) Compacting large row 
 blackbook/bounces:4ed558feba8a483733001d6a (279067683 bytes) incrementally
 {code}
 Figuring it may be related I bumped in_memory_compaction_limit_in_mb to 
 512MB so the row fits into it, deleted the entry and ran repair once again. 
 The log entry for this row was gone and the columns didn't reappear.
 We have a lot of rows much larger than 512MB so can't increase this 
 parameters forever, if that is the issue.
 Please let me know if you need more information on the case or if I can run 
 more experiments.
 Thanks!
 Roman



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


[Cassandra Wiki] Update of ThirdPartySupport by AlekseyYeschenko

2015-04-02 Thread Apache Wiki
Dear Wiki user,

You have subscribed to a wiki page or wiki category on Cassandra Wiki for 
change notification.

The ThirdPartySupport page has been changed by AlekseyYeschenko:
https://wiki.apache.org/cassandra/ThirdPartySupport?action=diffrev1=43rev2=44

  
  == Companies that employ Apache Cassandra Committers: ==
  
- {{http://www.datastax.com/wp-content/themes/datastax-custom/images/logo.png}} 
[[http://datastax.com|Datastax]], the commercial leader in Apache Cassandra™ 
offers products and services that make it easy for customers to build, deploy 
and operate elastically scalable and cloud-optimized applications and data 
services. [[http://datastax.com|DataStax]] has over 100 customers, including 
leaders such as Netflix, Cisco, Rackspace, HP, Constant Contact and 
[[http://www.datastax.com/cassandrausers|more]], and spanning verticals 
including web, financial services, telecommunications, logistics and government.
+ 
{{http://www.datastax.com/wp-content/themes/datastax-2014-08/images/common/logo.png}}
 [[http://datastax.com|Datastax]], the commercial leader in Apache Cassandra™ 
offers products and services that make it easy for customers to build, deploy 
and operate elastically scalable and cloud-optimized applications and data 
services. [[http://datastax.com|DataStax]] has over 100 customers, including 
leaders such as Netflix, Cisco, Rackspace, HP, Constant Contact and 
[[http://www.datastax.com/cassandrausers|more]], and spanning verticals 
including web, financial services, telecommunications, logistics and government.
  
  == Other companies: ==
- 
- {{http://www.acunu.com/uploads/1/1/5/5/11559475/1335714080.png}} 
[[http://www.acunu.com|Acunu]] are world experts in Apache Cassandra and 
beyond. Some of the most challenging Cassandra deployments already rely on 
Acunu's technology, training and support. With a focus real time applications, 
Acunu makes it easy to build Cassandra based real-time Big Data solutions that 
derive instant answers from event streams and deliver fresh insight
  
  {{ http://www.urimagnation.com/wp-content/themes/v2.0/images/logo.jpg}}
  [[http://www.urimagnation.com | URimagination]] , a group of peers, highly 
qualified, dedicated and motivated professionals, and with huge passion for 
open source technologies and projects such Apache Hadoop Big Data Platform, 
OpenSuse, Casandra and more, offers services to enhance performance of your 
applications and databases at quite a low cost. Our emphasis is to provide 
remote database services and thereafter-remote database monitoring of your 
business program. We provide competent services in Oracle, PostgreSQL, NoSQL, 
Hbase, MongoDB, DB2, and many more for commercial and government institutions, 
check our services[[http://www.urimagnation.com/services | services]]


[jira] [Commented] (CASSANDRA-7688) Add data sizing to a system table

2015-04-02 Thread Philip Thompson (JIRA)

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

Philip Thompson commented on CASSANDRA-7688:


I'm using ccm, so the data dirs are being created from scratch

 Add data sizing to a system table
 -

 Key: CASSANDRA-7688
 URL: https://issues.apache.org/jira/browse/CASSANDRA-7688
 Project: Cassandra
  Issue Type: New Feature
Reporter: Jeremiah Jordan
Assignee: Aleksey Yeschenko
 Fix For: 2.1.5

 Attachments: 7688.txt


 Currently you can't implement something similar to describe_splits_ex purely 
 from the a native protocol driver.  
 https://datastax-oss.atlassian.net/browse/JAVA-312 is open to expose easily 
 getting ownership information to a client in the java-driver.  But you still 
 need the data sizing part to get splits of a given size.  We should add the 
 sizing information to a system table so that native clients can get to it.



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


[jira] [Created] (CASSANDRA-9106) disable secondary indexes by default

2015-04-02 Thread Jon Haddad (JIRA)
Jon Haddad created CASSANDRA-9106:
-

 Summary: disable secondary indexes by default
 Key: CASSANDRA-9106
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9106
 Project: Cassandra
  Issue Type: Improvement
Reporter: Jon Haddad


This feature is misused constantly.  Can we disable it by default, and provide 
a yaml config to explicitly enable it?  Along with a massive warning about how 
they aren't there for performance, maybe with a link to documentation that 
explains why?  



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


[jira] [Commented] (CASSANDRA-7688) Add data sizing to a system table

2015-04-02 Thread JIRA

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

Piotr Kołaczkowski commented on CASSANDRA-7688:
---

Why is this ticket marked as fixed in 2.1.5, if I can see this working in just 
released 2.1.4?

 Add data sizing to a system table
 -

 Key: CASSANDRA-7688
 URL: https://issues.apache.org/jira/browse/CASSANDRA-7688
 Project: Cassandra
  Issue Type: New Feature
Reporter: Jeremiah Jordan
Assignee: Aleksey Yeschenko
 Fix For: 2.1.5

 Attachments: 7688.txt


 Currently you can't implement something similar to describe_splits_ex purely 
 from the a native protocol driver.  
 https://datastax-oss.atlassian.net/browse/JAVA-312 is open to expose easily 
 getting ownership information to a client in the java-driver.  But you still 
 need the data sizing part to get splits of a given size.  We should add the 
 sizing information to a system table so that native clients can get to it.



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


[jira] [Created] (CASSANDRA-9104) Unit test failures, trunk + Windows

2015-04-02 Thread Joshua McKenzie (JIRA)
Joshua McKenzie created CASSANDRA-9104:
--

 Summary: Unit test failures, trunk + Windows
 Key: CASSANDRA-9104
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9104
 Project: Cassandra
  Issue Type: Test
Reporter: Joshua McKenzie
Assignee: Joshua McKenzie
 Fix For: 3.0


Variety of different test failures have cropped up over the past 2-3 weeks:

h6. org.apache.cassandra.cql3.UFTest FAILED (timeout)
h6. org.apache.cassandra.db.KeyCacheTest FAILED
{noformat}
   expected:4 but was:2
   junit.framework.AssertionFailedError: expected:4 but was:2
   at 
org.apache.cassandra.db.KeyCacheTest.assertKeyCacheSize(KeyCacheTest.java:221)
   at org.apache.cassandra.db.KeyCacheTest.testKeyCache(KeyCacheTest.java:181)
{noformat}

h6. RecoveryManagerTest:
{noformat}
   org.apache.cassandra.db.RecoveryManagerTest FAILED
   org.apache.cassandra.db.RecoveryManager2Test FAILED
   org.apache.cassandra.db.RecoveryManager3Test FAILED
   org.apache.cassandra.db.RecoveryManagerTruncateTest FAILED
   All are the following:
  java.nio.file.AccessDeniedException: 
build\test\cassandra\commitlog;0\CommitLog-5-1427995105229.log
  FSWriteError in 
build\test\cassandra\commitlog;0\CommitLog-5-1427995105229.log
 at 
org.apache.cassandra.io.util.FileUtils.deleteWithConfirm(FileUtils.java:128)
 at 
org.apache.cassandra.db.commitlog.CommitLogSegmentManager.recycleSegment(CommitLogSegmentManager.java:360)
 at 
org.apache.cassandra.db.commitlog.CommitLog.recover(CommitLog.java:156)
 at 
org.apache.cassandra.db.RecoveryManagerTest.testNothingToRecover(RecoveryManagerTest.java:75)
  Caused by: java.nio.file.AccessDeniedException: 
build\test\cassandra\commitlog;0\CommitLog-5-1427995105229.log
 at 
sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:83)
 at 
sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
 at 
sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102)
 at 
sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269)
 at 
sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
 at java.nio.file.Files.delete(Files.java:1079)
 at 
org.apache.cassandra.io.util.FileUtils.deleteWithConfirm(FileUtils.java:124)
{noformat}

h6. testScrubCorruptedCounterRow(org.apache.cassandra.db.ScrubTest):  FAILED
{noformat}
Expecting new size of 1, got 2 while replacing 
[BigTableReader(path='C:\src\refCassandra\build\test\cassandra\data;0\Keyspace1\Counter1-deab62b2d95c11e489c6e117fe147c1d\la-1-big-Data.db')]
 by 
[BigTableReader(path='C:\src\refCassandra\build\test\cassandra\data;0\Keyspace1\Counter1-deab62b2d95c11e489c6e117fe147c1d\la-1-big-Data.db')]
 in View(pending_count=0, 
sstables=[BigTableReader(path='C:\src\refCassandra\build\test\cassandra\data;0\Keyspace1\Counter1-deab62b2d95c11e489c6e117fe147c1d\la-3-big-Data.db')],
 compacting=[])
junit.framework.AssertionFailedError: Expecting new size of 1, got 2 while 
replacing 
[BigTableReader(path='C:\src\refCassandra\build\test\cassandra\data;0\Keyspace1\Counter1-deab62b2d95c11e489c6e117fe147c1d\la-1-big-Data.db')]
 by 
[BigTableReader(path='C:\src\refCassandra\build\test\cassandra\data;0\Keyspace1\Counter1-deab62b2d95c11e489c6e117fe147c1d\la-1-big-Data.db')]
 in View(pending_count=0, 
sstables=[BigTableReader(path='C:\src\refCassandra\build\test\cassandra\data;0\Keyspace1\Counter1-deab62b2d95c11e489c6e117fe147c1d\la-3-big-Data.db')],
 compacting=[])
   at org.apache.cassandra.db.DataTracker$View.replace(DataTracker.java:767)
   at org.apache.cassandra.db.DataTracker.replaceReaders(DataTracker.java:408)
   at 
org.apache.cassandra.db.DataTracker.replaceWithNewInstances(DataTracker.java:312)
   at 
org.apache.cassandra.io.sstable.SSTableRewriter.moveStarts(SSTableRewriter.java:341)
   at 
org.apache.cassandra.io.sstable.SSTableRewriter.abort(SSTableRewriter.java:202)
   at org.apache.cassandra.db.compaction.Scrubber.scrub(Scrubber.java:277)
   at 
org.apache.cassandra.db.ScrubTest.testScrubCorruptedCounterRow(ScrubTest.java:152)
{noformat}



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


[jira] [Commented] (CASSANDRA-9037) Terminal UDFs evaluated at prepare time throw protocol version error

2015-04-02 Thread Tyler Hobbs (JIRA)

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

Tyler Hobbs commented on CASSANDRA-9037:


I don't think we need to defer for collection args, only return types.  The 
get() method for collection Terminals (e.g. {{Lists.Value.get()}}) serializes 
the collection based on the requested protocol version (the highest version 
supported by the driver, in this case).  The function will also execute 
assuming that same protocol version, so it will have no problems deserializing 
the collection.  The reason that the return type specifically is problematic is 
that the function results may need further processing (such as another function 
call) or reserialization (if the protocol version is less than 3).  Basically, 
the serialization format for the results has to match the protocol version in 
use.

Also, don't forget to handle tuple and UDT return types specially.  If they 
contain collections, those collections will be serialized with the format for 
whatever protocol version we execute the function with.

 Terminal UDFs evaluated at prepare time throw protocol version error
 

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


 When a pure function with only terminal arguments (or with no arguments) is 
 used in a where clause, it's executed at prepare time and 
 {{Server.CURRENT_VERSION}} passed as the protocol version for serialization 
 purposes. For native functions, this isn't a problem, but UDFs use classes in 
 the bundled java-driver-core jar for (de)serialization of args and return 
 values. When {{Server.CURRENT_VERSION}} is greater than the highest version 
 supported by the bundled java driver the execution fails with the following 
 exception:
 {noformat}
 ERROR [SharedPool-Worker-1] 2015-03-24 18:10:59,391 QueryMessage.java:132 - 
 Unexpected error during query
 org.apache.cassandra.exceptions.FunctionExecutionException: execution of 
 'ks.overloaded[text]' failed: java.lang.IllegalArgumentException: No protocol 
 version matching integer version 4
 at 
 org.apache.cassandra.exceptions.FunctionExecutionException.create(FunctionExecutionException.java:35)
  ~[main/:na]
 at 
 org.apache.cassandra.cql3.udf.gen.Cksoverloaded_1.execute(Cksoverloaded_1.java)
  ~[na:na]
 at 
 org.apache.cassandra.cql3.functions.FunctionCall.executeInternal(FunctionCall.java:78)
  ~[main/:na]
 at 
 org.apache.cassandra.cql3.functions.FunctionCall.access$200(FunctionCall.java:34)
  ~[main/:na]
 at 
 org.apache.cassandra.cql3.functions.FunctionCall$Raw.execute(FunctionCall.java:176)
  ~[main/:na]
 at 
 org.apache.cassandra.cql3.functions.FunctionCall$Raw.prepare(FunctionCall.java:161)
  ~[main/:na]
 at 
 org.apache.cassandra.cql3.SingleColumnRelation.toTerm(SingleColumnRelation.java:108)
  ~[main/:na]
 at 
 org.apache.cassandra.cql3.SingleColumnRelation.newEQRestriction(SingleColumnRelation.java:143)
  ~[main/:na]
 at org.apache.cassandra.cql3.Relation.toRestriction(Relation.java:127) 
 ~[main/:na]
 at 
 org.apache.cassandra.cql3.restrictions.StatementRestrictions.init(StatementRestrictions.java:126)
  ~[main/:na]
 at 
 org.apache.cassandra.cql3.statements.SelectStatement$RawStatement.prepareRestrictions(SelectStatement.java:787)
  ~[main/:na]
 at 
 org.apache.cassandra.cql3.statements.SelectStatement$RawStatement.prepare(SelectStatement.java:740)
  ~[main/:na]
 at 
 org.apache.cassandra.cql3.QueryProcessor.getStatement(QueryProcessor.java:488)
  ~[main/:na]
 at 
 org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:252) 
 ~[main/:na]
 at 
 org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:246) 
 ~[main/:na]
 at 
 org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:119)
  ~[main/:na]
 at 
 org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:475)
  [main/:na]
 at 
 org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:371)
  [main/:na]
 at 
 io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
  [netty-all-4.0.23.Final.jar:4.0.23.Final]
 at 
 io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
  [netty-all-4.0.23.Final.jar:4.0.23.Final]
 at 
 io.netty.channel.AbstractChannelHandlerContext.access$700(AbstractChannelHandlerContext.java:32)
  [netty-all-4.0.23.Final.jar:4.0.23.Final]
 at 
 io.netty.channel.AbstractChannelHandlerContext$8.run(AbstractChannelHandlerContext.java:324)
  

[jira] [Commented] (CASSANDRA-8991) CQL3 DropIndexStatement should expose getColumnFamily like the CQL2 version does.

2015-04-02 Thread Ulises Cervino Beresi (JIRA)

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

Ulises Cervino Beresi commented on CASSANDRA-8991:
--

Can this patch be backported to 2.0 please?

 CQL3 DropIndexStatement should expose getColumnFamily like the CQL2 version 
 does.
 -

 Key: CASSANDRA-8991
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8991
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Ulises Cervino Beresi
Assignee: Ulises Cervino Beresi
Priority: Minor
 Fix For: 2.0.15, 2.1.5

 Attachments: CASSANDRA-2.0.13-8991.txt


 CQL3 DropIndexStatement should expose getColumnFamily like the CQL2 version 
 does.



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


[jira] [Updated] (CASSANDRA-8991) CQL3 DropIndexStatement should expose getColumnFamily like the CQL2 version does.

2015-04-02 Thread Aleksey Yeschenko (JIRA)

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

Aleksey Yeschenko updated CASSANDRA-8991:
-
Fix Version/s: 2.0.15

 CQL3 DropIndexStatement should expose getColumnFamily like the CQL2 version 
 does.
 -

 Key: CASSANDRA-8991
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8991
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Ulises Cervino Beresi
Assignee: Ulises Cervino Beresi
Priority: Minor
 Fix For: 2.0.15, 2.1.5

 Attachments: CASSANDRA-2.0.13-8991.txt


 CQL3 DropIndexStatement should expose getColumnFamily like the CQL2 version 
 does.



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


[jira] [Commented] (CASSANDRA-7688) Add data sizing to a system table

2015-04-02 Thread Aleksey Yeschenko (JIRA)

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

Aleksey Yeschenko commented on CASSANDRA-7688:
--

Must be magic then.

 Add data sizing to a system table
 -

 Key: CASSANDRA-7688
 URL: https://issues.apache.org/jira/browse/CASSANDRA-7688
 Project: Cassandra
  Issue Type: New Feature
Reporter: Jeremiah Jordan
Assignee: Aleksey Yeschenko
 Fix For: 2.1.5

 Attachments: 7688.txt


 Currently you can't implement something similar to describe_splits_ex purely 
 from the a native protocol driver.  
 https://datastax-oss.atlassian.net/browse/JAVA-312 is open to expose easily 
 getting ownership information to a client in the java-driver.  But you still 
 need the data sizing part to get splits of a given size.  We should add the 
 sizing information to a system table so that native clients can get to it.



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


[jira] [Updated] (CASSANDRA-9107) More accurate row count estimates

2015-04-02 Thread Chris Lohfink (JIRA)

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

Chris Lohfink updated CASSANDRA-9107:
-
Attachment: 9107-cassandra2-1.patch

 More accurate row count estimates
 -

 Key: CASSANDRA-9107
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9107
 Project: Cassandra
  Issue Type: Improvement
Reporter: Chris Lohfink
Assignee: Chris Lohfink
 Attachments: 9107-cassandra2-1.patch


 Currently the estimated row count from cfstats is the sum of the number of 
 rows in all the sstables. This becomes very inaccurate with wide rows or 
 heavily updated datasets since the same partition would exist in many 
 sstables.  In example:
 {code}
 create KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 
 'replication_factor': 1};
 create TABLE wide (key text PRIMARY KEY , value text) WITH compaction = 
 {'class': 'SizeTieredCompactionStrategy', 'min_threshold': 30, 
 'max_threshold': 100} ;
 ---
 insert INTO wide (key, value) VALUES ('key', 'value');
 // flush
 // cfstats output: Number of keys (estimate): 1  (128 in older version from 
 index)
 insert INTO wide (key, value) VALUES ('key', 'value');
 // flush
 // cfstats output: Number of keys (estimate): 2  (256 in older version from 
 index)
 ... etc
 {code}
 previously it used the index but it still did it per sstable and summed them 
 up which became inaccurate as there are more sstables (just by much worse). 
 With new versions of sstables we can merge the cardinalities to resolve this 
 with a slight hit to accuracy in the case of every sstable having completely 
 unique partitions.
 Furthermore I think it would be pretty minimal effort to include the number 
 of rows in the memtables to this count. We wont have the cardinality merging 
 between memtables and sstables but I would consider that a relatively minor 
 negative.



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


[jira] [Commented] (CASSANDRA-9045) Deleted columns are resurrected after repair in wide rows

2015-04-02 Thread Roman Tkachenko (JIRA)

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

Roman Tkachenko commented on CASSANDRA-9045:


Also, check out the attached inconsistency.txt file. A request was issued 
twice with a difference of several seconds and the same server says Read 1 
live and 0 tombstoned cells on the first run and Read 0 live and 3 tombstoned 
cells on the second run. How could that happen? I'm also getting inconsistent 
results (for this record and some others) even with LOCAL_QUORUM, when using 
our production app: one query returns the record, the next one does not.

 Deleted columns are resurrected after repair in wide rows
 -

 Key: CASSANDRA-9045
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9045
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Roman Tkachenko
Assignee: Marcus Eriksson
Priority: Critical
 Fix For: 2.0.15

 Attachments: cqlsh.txt, inconsistency.txt


 Hey guys,
 After almost a week of researching the issue and trying out multiple things 
 with (almost) no luck I was suggested (on the user@cass list) to file a 
 report here.
 h5. Setup
 Cassandra 2.0.13 (we had the issue with 2.0.10 as well and upgraded to see if 
 it goes away)
 Multi datacenter 12+6 nodes cluster.
 h5. Schema
 {code}
 cqlsh describe keyspace blackbook;
 CREATE KEYSPACE blackbook WITH replication = {
   'class': 'NetworkTopologyStrategy',
   'IAD': '3',
   'ORD': '3'
 };
 USE blackbook;
 CREATE TABLE bounces (
   domainid text,
   address text,
   message text,
   timestamp bigint,
   PRIMARY KEY (domainid, address)
 ) WITH
   bloom_filter_fp_chance=0.10 AND
   caching='KEYS_ONLY' AND
   comment='' AND
   dclocal_read_repair_chance=0.10 AND
   gc_grace_seconds=864000 AND
   index_interval=128 AND
   read_repair_chance=0.00 AND
   populate_io_cache_on_flush='false' AND
   default_time_to_live=0 AND
   speculative_retry='99.0PERCENTILE' AND
   memtable_flush_period_in_ms=0 AND
   compaction={'class': 'LeveledCompactionStrategy'} AND
   compression={'sstable_compression': 'LZ4Compressor'};
 {code}
 h5. Use case
 Each row (defined by a domainid) can have many many columns (bounce entries) 
 so rows can get pretty wide. In practice, most of the rows are not that big 
 but some of them contain hundreds of thousands and even millions of columns.
 Columns are not TTL'ed but can be deleted using the following CQL3 statement:
 {code}
 delete from bounces where domainid = 'domain.com' and address = 
 'al...@example.com';
 {code}
 All queries are performed using LOCAL_QUORUM CL.
 h5. Problem
 We weren't very diligent about running repairs on the cluster initially, but 
 shorty after we started doing it we noticed that some of previously deleted 
 columns (bounce entries) are there again, as if tombstones have disappeared.
 I have run this test multiple times via cqlsh, on the row of the customer who 
 originally reported the issue:
 * delete an entry
 * verify it's not returned even with CL=ALL
 * run repair on nodes that own this row's key
 * the columns reappear and are returned even with CL=ALL
 I tried the same test on another row with much less data and everything was 
 correctly deleted and didn't reappear after repair.
 h5. Other steps I've taken so far
 Made sure NTP is running on all servers and clocks are synchronized.
 Increased gc_grace_seconds to 100 days, ran full repair (on the affected 
 keyspace) on all nodes, then changed it back to the default 10 days again. 
 Didn't help.
 Performed one more test. Updated one of the resurrected columns, then deleted 
 it and ran repair again. This time the updated version of the column 
 reappeared.
 Finally, I noticed these log entries for the row in question:
 {code}
 INFO [ValidationExecutor:77] 2015-03-25 20:27:43,936 
 CompactionController.java (line 192) Compacting large row 
 blackbook/bounces:4ed558feba8a483733001d6a (279067683 bytes) incrementally
 {code}
 Figuring it may be related I bumped in_memory_compaction_limit_in_mb to 
 512MB so the row fits into it, deleted the entry and ran repair once again. 
 The log entry for this row was gone and the columns didn't reappear.
 We have a lot of rows much larger than 512MB so can't increase this 
 parameters forever, if that is the issue.
 Please let me know if you need more information on the case or if I can run 
 more experiments.
 Thanks!
 Roman



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


[jira] [Commented] (CASSANDRA-9105) JMX APIs appear untested

2015-04-02 Thread Tyler Hobbs (JIRA)

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

Tyler Hobbs commented on CASSANDRA-9105:


I recently added a JMX utility module to the dtests that should make this 
easier to cover: 
https://github.com/riptano/cassandra-dtest/blob/master/jmxutils.py

 JMX APIs appear untested
 

 Key: CASSANDRA-9105
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9105
 Project: Cassandra
  Issue Type: Test
Reporter: Ariel Weisberg

 Anything supported via JMX is part of the public API of the database.
 Node tool uses JMX but doesn't seem to have its own unit test and the dtest 
 nodetool_test.py is pretty sparse.
 For values returned by JMX for the purposes of reporting we should test as 
 best we can that we are getting real values end to end. Occasionally 
 metrics end up with no values, or values in the wrong units.
 For commands going the other direction they should be exercised. There is 
 probably a lot of coverage of commands since they may be used when testing 
 the features those commands are a part of so no need for duplication there.



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


[jira] [Commented] (CASSANDRA-7688) Add data sizing to a system table

2015-04-02 Thread Philip Thompson (JIRA)

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

Philip Thompson commented on CASSANDRA-7688:


I see the system.size_estimates table in 2.1.4, but I don't see it being 
populated. Are you?

 Add data sizing to a system table
 -

 Key: CASSANDRA-7688
 URL: https://issues.apache.org/jira/browse/CASSANDRA-7688
 Project: Cassandra
  Issue Type: New Feature
Reporter: Jeremiah Jordan
Assignee: Aleksey Yeschenko
 Fix For: 2.1.5

 Attachments: 7688.txt


 Currently you can't implement something similar to describe_splits_ex purely 
 from the a native protocol driver.  
 https://datastax-oss.atlassian.net/browse/JAVA-312 is open to expose easily 
 getting ownership information to a client in the java-driver.  But you still 
 need the data sizing part to get splits of a given size.  We should add the 
 sizing information to a system table so that native clients can get to it.



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


[jira] [Commented] (CASSANDRA-7017) allow per-partition LIMIT clause in cql

2015-04-02 Thread William Price (JIRA)

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

William Price commented on CASSANDRA-7017:
--

Going for symmetry with the existing {{CREATE TABLE ... WITH CLUSTERING ORDER 
BY ...}} syntax, what about:

{code}
SELECT * FROM scores (WITH)? CLUSTERING LIMIT 3
{code}

 allow per-partition LIMIT clause in cql
 ---

 Key: CASSANDRA-7017
 URL: https://issues.apache.org/jira/browse/CASSANDRA-7017
 Project: Cassandra
  Issue Type: Improvement
Reporter: Jonathan Halliday
Assignee: Dan Burkert
  Labels: cql
 Fix For: 3.0

 Attachments: 0001-CASSANDRA-7017.patch


 somewhat related to static columns (#6561) and slicing (#4851), it is 
 desirable to apply a LIMIT on a per-partition rather than per-query basis, 
 such as to retrieve the top (most recent, etc) N clustered values for each 
 partition key, e.g.
 -- for each league, keep a ranked list of users
 create table scores (league text, score int, player text, primary key(league, 
 score, player) );
 -- get the top 3 teams in each league:
 select * from scores staticlimit 3;
 this currently requires issuing one query per partition key, which is tedious 
 if all the key partition key values are known and impossible if they aren't.



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


[jira] [Commented] (CASSANDRA-9045) Deleted columns are resurrected after repair in wide rows

2015-04-02 Thread Roman Tkachenko (JIRA)

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

Roman Tkachenko commented on CASSANDRA-9045:


Yeah, I understand 1 vs 3. What I'm confused about is live vs tombstoned 
because there were no deletes for this record within this 20 seconds interval.

 Deleted columns are resurrected after repair in wide rows
 -

 Key: CASSANDRA-9045
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9045
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Roman Tkachenko
Assignee: Marcus Eriksson
Priority: Critical
 Fix For: 2.0.15

 Attachments: cqlsh.txt, inconsistency.txt


 Hey guys,
 After almost a week of researching the issue and trying out multiple things 
 with (almost) no luck I was suggested (on the user@cass list) to file a 
 report here.
 h5. Setup
 Cassandra 2.0.13 (we had the issue with 2.0.10 as well and upgraded to see if 
 it goes away)
 Multi datacenter 12+6 nodes cluster.
 h5. Schema
 {code}
 cqlsh describe keyspace blackbook;
 CREATE KEYSPACE blackbook WITH replication = {
   'class': 'NetworkTopologyStrategy',
   'IAD': '3',
   'ORD': '3'
 };
 USE blackbook;
 CREATE TABLE bounces (
   domainid text,
   address text,
   message text,
   timestamp bigint,
   PRIMARY KEY (domainid, address)
 ) WITH
   bloom_filter_fp_chance=0.10 AND
   caching='KEYS_ONLY' AND
   comment='' AND
   dclocal_read_repair_chance=0.10 AND
   gc_grace_seconds=864000 AND
   index_interval=128 AND
   read_repair_chance=0.00 AND
   populate_io_cache_on_flush='false' AND
   default_time_to_live=0 AND
   speculative_retry='99.0PERCENTILE' AND
   memtable_flush_period_in_ms=0 AND
   compaction={'class': 'LeveledCompactionStrategy'} AND
   compression={'sstable_compression': 'LZ4Compressor'};
 {code}
 h5. Use case
 Each row (defined by a domainid) can have many many columns (bounce entries) 
 so rows can get pretty wide. In practice, most of the rows are not that big 
 but some of them contain hundreds of thousands and even millions of columns.
 Columns are not TTL'ed but can be deleted using the following CQL3 statement:
 {code}
 delete from bounces where domainid = 'domain.com' and address = 
 'al...@example.com';
 {code}
 All queries are performed using LOCAL_QUORUM CL.
 h5. Problem
 We weren't very diligent about running repairs on the cluster initially, but 
 shorty after we started doing it we noticed that some of previously deleted 
 columns (bounce entries) are there again, as if tombstones have disappeared.
 I have run this test multiple times via cqlsh, on the row of the customer who 
 originally reported the issue:
 * delete an entry
 * verify it's not returned even with CL=ALL
 * run repair on nodes that own this row's key
 * the columns reappear and are returned even with CL=ALL
 I tried the same test on another row with much less data and everything was 
 correctly deleted and didn't reappear after repair.
 h5. Other steps I've taken so far
 Made sure NTP is running on all servers and clocks are synchronized.
 Increased gc_grace_seconds to 100 days, ran full repair (on the affected 
 keyspace) on all nodes, then changed it back to the default 10 days again. 
 Didn't help.
 Performed one more test. Updated one of the resurrected columns, then deleted 
 it and ran repair again. This time the updated version of the column 
 reappeared.
 Finally, I noticed these log entries for the row in question:
 {code}
 INFO [ValidationExecutor:77] 2015-03-25 20:27:43,936 
 CompactionController.java (line 192) Compacting large row 
 blackbook/bounces:4ed558feba8a483733001d6a (279067683 bytes) incrementally
 {code}
 Figuring it may be related I bumped in_memory_compaction_limit_in_mb to 
 512MB so the row fits into it, deleted the entry and ran repair once again. 
 The log entry for this row was gone and the columns didn't reappear.
 We have a lot of rows much larger than 512MB so can't increase this 
 parameters forever, if that is the issue.
 Please let me know if you need more information on the case or if I can run 
 more experiments.
 Thanks!
 Roman



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


[jira] [Created] (CASSANDRA-9108) SSL appears to be untested

2015-04-02 Thread Ariel Weisberg (JIRA)
Ariel Weisberg created CASSANDRA-9108:
-

 Summary: SSL appears to be untested
 Key: CASSANDRA-9108
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9108
 Project: Cassandra
  Issue Type: Test
Reporter: Ariel Weisberg


Need to test that you can set up a cluster with SSL node - node and client - 
node. A dtest for this would be really useful to make sure it's always working 
at a basic level.



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


[jira] [Updated] (CASSANDRA-9109) Repair appears to have some of untested behaviors

2015-04-02 Thread Ariel Weisberg (JIRA)

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

Ariel Weisberg updated CASSANDRA-9109:
--
Description: 
There is AntiCompactionTest and a few single process unit tests, but they 
aren't very convincing. Looking at the docs to nodetool it looks like there are 
a few different ways that repair could operate that aren't explored. dtest wise 
there is repair_test and incremental_repair test which do give some useful 
coverage, but don't do everything.

It's also the kind of thing you might like to see tested with some concurrent 
load to catch interactions with everything else moving about, but a dtest may 
not be the right place to do that.

  was:
There is AntiCompactionTest and a few single process unit tests, but they 
aren't very convincing. Looking at the docs to nodetool it looks like there are 
a few different ways that repair could operate that aren't explored.

It's also the kind of thing you might like to see tested with some concurrent 
load to catch interactions with everything else moving about, but a dtest may 
not be the right place to do that.


 Repair appears to have some of untested behaviors
 -

 Key: CASSANDRA-9109
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9109
 Project: Cassandra
  Issue Type: Test
Reporter: Ariel Weisberg

 There is AntiCompactionTest and a few single process unit tests, but they 
 aren't very convincing. Looking at the docs to nodetool it looks like there 
 are a few different ways that repair could operate that aren't explored. 
 dtest wise there is repair_test and incremental_repair test which do give 
 some useful coverage, but don't do everything.
 It's also the kind of thing you might like to see tested with some concurrent 
 load to catch interactions with everything else moving about, but a dtest may 
 not be the right place to do that.



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


[jira] [Created] (CASSANDRA-9110) Bounded/RingBuffer CQL Collections

2015-04-02 Thread Jim Plush (JIRA)
Jim Plush created CASSANDRA-9110:


 Summary: Bounded/RingBuffer CQL Collections
 Key: CASSANDRA-9110
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9110
 Project: Cassandra
  Issue Type: New Feature
  Components: Core
Reporter: Jim Plush
Priority: Minor


Feature Request:
I've had frequent use cases for bounded and RingBuffer based collections. 

For example: 
I want to store the first 100 times I've see this thing.
I want to store the last 100 times I've seen this thing.

Currently that means having to do application level READ/WRITE operations and 
we like to keep some of our high scale apps to write only where possible. 

While probably expensive for exactly N items an approximation should be good 
enough for most applications. Where N in our example could be 100 or 102, or 
even make that tunable on the type or table. 

For the RingBuffer example, consider I only want to store the last N login 
attempts for a user. Once N+1 comes in it issues a delete for the oldest one in 
the collection. 

A potential implementation idea, given the rowkey would live on a single node 
would be to have an LRU based counter cache (tunable in the yaml settings in 
MB) that keeps a current count of how many items are already in the collection 
for that rowkey. If  than bound, toss.


something akin to:
CREATE TABLE users (
  user_id text PRIMARY KEY,
  first_name text,
  first_logins settext, 100, oldest
  last_logins settext, 100, newest
);





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


[jira] [Updated] (CASSANDRA-9110) Bounded/RingBuffer CQL Collections

2015-04-02 Thread Jim Plush (JIRA)

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

Jim Plush updated CASSANDRA-9110:
-
Description: 
Feature Request:
I've had frequent use cases for bounded and RingBuffer based collections. 

For example: 
I want to store the first 100 times I've see this thing.
I want to store the last 100 times I've seen this thing.

Currently that means having to do application level READ/WRITE operations and 
we like to keep some of our high scale apps to write only where possible. 

While probably expensive for exactly N items an approximation should be good 
enough for most applications. Where N in our example could be 100 or 102, or 
even make that tunable on the type or table. 

For the RingBuffer example, consider I only want to store the last N login 
attempts for a user. Once N+1 comes in it issues a delete for the oldest one in 
the collection. 

A potential implementation idea, given the rowkey would live on a single node 
would be to have an LRU based counter cache (tunable in the yaml settings in 
MB) that keeps a current count of how many items are already in the collection 
for that rowkey. If  than bound, toss. It could also be a compaction type 
thing where it stores all the data then at compaction time it filters out the 
data that's out of bounds as long as the CQL returns the right bounds.


something akin to:
CREATE TABLE users (
  user_id text PRIMARY KEY,
  first_name text,
  first_logins settext, 100, oldest
  last_logins settext, 100, newest
);



  was:
Feature Request:
I've had frequent use cases for bounded and RingBuffer based collections. 

For example: 
I want to store the first 100 times I've see this thing.
I want to store the last 100 times I've seen this thing.

Currently that means having to do application level READ/WRITE operations and 
we like to keep some of our high scale apps to write only where possible. 

While probably expensive for exactly N items an approximation should be good 
enough for most applications. Where N in our example could be 100 or 102, or 
even make that tunable on the type or table. 

For the RingBuffer example, consider I only want to store the last N login 
attempts for a user. Once N+1 comes in it issues a delete for the oldest one in 
the collection. 

A potential implementation idea, given the rowkey would live on a single node 
would be to have an LRU based counter cache (tunable in the yaml settings in 
MB) that keeps a current count of how many items are already in the collection 
for that rowkey. If  than bound, toss. It could also be a compaction type 
thing where it stores all the data then at compaction time it filters out the 
data that's out of bounds. 


something akin to:
CREATE TABLE users (
  user_id text PRIMARY KEY,
  first_name text,
  first_logins settext, 100, oldest
  last_logins settext, 100, newest
);




 Bounded/RingBuffer CQL Collections
 --

 Key: CASSANDRA-9110
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9110
 Project: Cassandra
  Issue Type: New Feature
  Components: Core
Reporter: Jim Plush
Priority: Minor

 Feature Request:
 I've had frequent use cases for bounded and RingBuffer based collections. 
 For example: 
 I want to store the first 100 times I've see this thing.
 I want to store the last 100 times I've seen this thing.
 Currently that means having to do application level READ/WRITE operations and 
 we like to keep some of our high scale apps to write only where possible. 
 While probably expensive for exactly N items an approximation should be good 
 enough for most applications. Where N in our example could be 100 or 102, or 
 even make that tunable on the type or table. 
 For the RingBuffer example, consider I only want to store the last N login 
 attempts for a user. Once N+1 comes in it issues a delete for the oldest one 
 in the collection. 
 A potential implementation idea, given the rowkey would live on a single node 
 would be to have an LRU based counter cache (tunable in the yaml settings in 
 MB) that keeps a current count of how many items are already in the 
 collection for that rowkey. If  than bound, toss. It could also be a 
 compaction type thing where it stores all the data then at compaction time it 
 filters out the data that's out of bounds as long as the CQL returns the 
 right bounds.
 something akin to:
 CREATE TABLE users (
   user_id text PRIMARY KEY,
   first_name text,
   first_logins settext, 100, oldest
   last_logins settext, 100, newest
 );



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


[jira] [Updated] (CASSANDRA-9045) Deleted columns are resurrected after repair in wide rows

2015-04-02 Thread Roman Tkachenko (JIRA)

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

Roman Tkachenko updated CASSANDRA-9045:
---
Attachment: debug.txt

 Deleted columns are resurrected after repair in wide rows
 -

 Key: CASSANDRA-9045
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9045
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Roman Tkachenko
Assignee: Marcus Eriksson
Priority: Critical
 Fix For: 2.0.15

 Attachments: 9045-debug-tracing.txt, 
 apache-cassandra-2.0.13-SNAPSHOT.jar, cqlsh.txt, debug.txt, inconsistency.txt


 Hey guys,
 After almost a week of researching the issue and trying out multiple things 
 with (almost) no luck I was suggested (on the user@cass list) to file a 
 report here.
 h5. Setup
 Cassandra 2.0.13 (we had the issue with 2.0.10 as well and upgraded to see if 
 it goes away)
 Multi datacenter 12+6 nodes cluster.
 h5. Schema
 {code}
 cqlsh describe keyspace blackbook;
 CREATE KEYSPACE blackbook WITH replication = {
   'class': 'NetworkTopologyStrategy',
   'IAD': '3',
   'ORD': '3'
 };
 USE blackbook;
 CREATE TABLE bounces (
   domainid text,
   address text,
   message text,
   timestamp bigint,
   PRIMARY KEY (domainid, address)
 ) WITH
   bloom_filter_fp_chance=0.10 AND
   caching='KEYS_ONLY' AND
   comment='' AND
   dclocal_read_repair_chance=0.10 AND
   gc_grace_seconds=864000 AND
   index_interval=128 AND
   read_repair_chance=0.00 AND
   populate_io_cache_on_flush='false' AND
   default_time_to_live=0 AND
   speculative_retry='99.0PERCENTILE' AND
   memtable_flush_period_in_ms=0 AND
   compaction={'class': 'LeveledCompactionStrategy'} AND
   compression={'sstable_compression': 'LZ4Compressor'};
 {code}
 h5. Use case
 Each row (defined by a domainid) can have many many columns (bounce entries) 
 so rows can get pretty wide. In practice, most of the rows are not that big 
 but some of them contain hundreds of thousands and even millions of columns.
 Columns are not TTL'ed but can be deleted using the following CQL3 statement:
 {code}
 delete from bounces where domainid = 'domain.com' and address = 
 'al...@example.com';
 {code}
 All queries are performed using LOCAL_QUORUM CL.
 h5. Problem
 We weren't very diligent about running repairs on the cluster initially, but 
 shorty after we started doing it we noticed that some of previously deleted 
 columns (bounce entries) are there again, as if tombstones have disappeared.
 I have run this test multiple times via cqlsh, on the row of the customer who 
 originally reported the issue:
 * delete an entry
 * verify it's not returned even with CL=ALL
 * run repair on nodes that own this row's key
 * the columns reappear and are returned even with CL=ALL
 I tried the same test on another row with much less data and everything was 
 correctly deleted and didn't reappear after repair.
 h5. Other steps I've taken so far
 Made sure NTP is running on all servers and clocks are synchronized.
 Increased gc_grace_seconds to 100 days, ran full repair (on the affected 
 keyspace) on all nodes, then changed it back to the default 10 days again. 
 Didn't help.
 Performed one more test. Updated one of the resurrected columns, then deleted 
 it and ran repair again. This time the updated version of the column 
 reappeared.
 Finally, I noticed these log entries for the row in question:
 {code}
 INFO [ValidationExecutor:77] 2015-03-25 20:27:43,936 
 CompactionController.java (line 192) Compacting large row 
 blackbook/bounces:4ed558feba8a483733001d6a (279067683 bytes) incrementally
 {code}
 Figuring it may be related I bumped in_memory_compaction_limit_in_mb to 
 512MB so the row fits into it, deleted the entry and ran repair once again. 
 The log entry for this row was gone and the columns didn't reappear.
 We have a lot of rows much larger than 512MB so can't increase this 
 parameters forever, if that is the issue.
 Please let me know if you need more information on the case or if I can run 
 more experiments.
 Thanks!
 Roman



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


[jira] [Commented] (CASSANDRA-9097) Repeated incremental nodetool repair results in failed repairs due to running anticompaction

2015-04-02 Thread Yuki Morishita (JIRA)

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

Yuki Morishita commented on CASSANDRA-9097:
---

The problem is that the repair coordinator does not wait anticompaction to 
finish on other nodes.
We can change the behavior to wait until coordinator receives notification from 
other replica, but doing so can be a problem between the nodes in different 
minor version.

We definitely need to fix this in 3.0, though let me see what would be the 
right solution for 2.1.x.

 Repeated incremental nodetool repair results in failed repairs due to running 
 anticompaction
 

 Key: CASSANDRA-9097
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9097
 Project: Cassandra
  Issue Type: Bug
Reporter: Gustav Munkby
Assignee: Yuki Morishita
Priority: Minor
 Fix For: 2.1.5


 I'm trying to synchronize incremental repairs over multiple nodes in a 
 Cassandra cluster, and it does not seem to easily achievable.
 In principle, the process iterates through the nodes of the cluster and 
 performs `nodetool -h $NODE repair --incremental`, but that sometimes fails 
 on subsequent nodes. The reason for failing seems to be that the repair 
 returns as soon as the repair and the _local_ anticompaction has completed, 
 but does not guarantee that remote anticompactions are complete. If I 
 subsequently try to issue another repair command, they fail to start (and 
 terminate with failure after about one minute). It usually isn't a problem, 
 as the local anticompaction typically involves as much (or more) data as the 
 remote ones, but sometimes not.



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


[jira] [Created] (CASSANDRA-9109) Repair appears to have a lot of untested behaviors

2015-04-02 Thread Ariel Weisberg (JIRA)
Ariel Weisberg created CASSANDRA-9109:
-

 Summary: Repair appears to have a lot of untested behaviors
 Key: CASSANDRA-9109
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9109
 Project: Cassandra
  Issue Type: Test
Reporter: Ariel Weisberg


There is AntiCompactionTest and a few single process unit tests, but they 
aren't very convincing. Looking at the docs to nodetool it looks like there are 
a few different ways that repair could operate that aren't explored.

It's also the kind of thing you might like to see tested with some concurrent 
load to catch interactions with everything else moving about, but a dtest may 
not be the right place to do that.



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


[jira] [Updated] (CASSANDRA-9110) Bounded/RingBuffer CQL Collections

2015-04-02 Thread Jim Plush (JIRA)

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

Jim Plush updated CASSANDRA-9110:
-
Description: 
Feature Request:
I've had frequent use cases for bounded and RingBuffer based collections. 

For example: 
I want to store the first 100 times I've see this thing.
I want to store the last 100 times I've seen this thing.

Currently that means having to do application level READ/WRITE operations and 
we like to keep some of our high scale apps to write only where possible. 

While probably expensive for exactly N items an approximation should be good 
enough for most applications. Where N in our example could be 100 or 102, or 
even make that tunable on the type or table. 

For the RingBuffer example, consider I only want to store the last N login 
attempts for a user. Once N+1 comes in it issues a delete for the oldest one in 
the collection, or waits until compaction to drop the overflow data as long as 
the CQL returns the right bounds.

A potential implementation idea, given the rowkey would live on a single node 
would be to have an LRU based counter cache (tunable in the yaml settings in 
MB) that keeps a current count of how many items are already in the collection 
for that rowkey. If  than bound, toss. 


something akin to:
CREATE TABLE users (
  user_id text PRIMARY KEY,
  first_name text,
  first_logins settext, 100, oldest
  last_logins settext, 100, newest
);



  was:
Feature Request:
I've had frequent use cases for bounded and RingBuffer based collections. 

For example: 
I want to store the first 100 times I've see this thing.
I want to store the last 100 times I've seen this thing.

Currently that means having to do application level READ/WRITE operations and 
we like to keep some of our high scale apps to write only where possible. 

While probably expensive for exactly N items an approximation should be good 
enough for most applications. Where N in our example could be 100 or 102, or 
even make that tunable on the type or table. 

For the RingBuffer example, consider I only want to store the last N login 
attempts for a user. Once N+1 comes in it issues a delete for the oldest one in 
the collection. 

A potential implementation idea, given the rowkey would live on a single node 
would be to have an LRU based counter cache (tunable in the yaml settings in 
MB) that keeps a current count of how many items are already in the collection 
for that rowkey. If  than bound, toss. It could also be a compaction type 
thing where it stores all the data then at compaction time it filters out the 
data that's out of bounds as long as the CQL returns the right bounds.


something akin to:
CREATE TABLE users (
  user_id text PRIMARY KEY,
  first_name text,
  first_logins settext, 100, oldest
  last_logins settext, 100, newest
);




 Bounded/RingBuffer CQL Collections
 --

 Key: CASSANDRA-9110
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9110
 Project: Cassandra
  Issue Type: New Feature
  Components: Core
Reporter: Jim Plush
Priority: Minor

 Feature Request:
 I've had frequent use cases for bounded and RingBuffer based collections. 
 For example: 
 I want to store the first 100 times I've see this thing.
 I want to store the last 100 times I've seen this thing.
 Currently that means having to do application level READ/WRITE operations and 
 we like to keep some of our high scale apps to write only where possible. 
 While probably expensive for exactly N items an approximation should be good 
 enough for most applications. Where N in our example could be 100 or 102, or 
 even make that tunable on the type or table. 
 For the RingBuffer example, consider I only want to store the last N login 
 attempts for a user. Once N+1 comes in it issues a delete for the oldest one 
 in the collection, or waits until compaction to drop the overflow data as 
 long as the CQL returns the right bounds.
 A potential implementation idea, given the rowkey would live on a single node 
 would be to have an LRU based counter cache (tunable in the yaml settings in 
 MB) that keeps a current count of how many items are already in the 
 collection for that rowkey. If  than bound, toss. 
 something akin to:
 CREATE TABLE users (
   user_id text PRIMARY KEY,
   first_name text,
   first_logins settext, 100, oldest
   last_logins settext, 100, newest
 );



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


[jira] [Assigned] (CASSANDRA-9053) Convert dtests that use cassandra-cli to Thrift API

2015-04-02 Thread Tyler Hobbs (JIRA)

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

Tyler Hobbs reassigned CASSANDRA-9053:
--

Assignee: Tyler Hobbs

 Convert dtests that use cassandra-cli to Thrift API
 ---

 Key: CASSANDRA-9053
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9053
 Project: Cassandra
  Issue Type: Test
  Components: Tests
Reporter: Tyler Hobbs
Assignee: Tyler Hobbs
 Fix For: 3.0


 The following dtests need to be changed to use the Thrift API directly 
 instead of going through cassandra-cli:
 * {{cql_tests.TestCQL.cql3_insert_thrift_test}}
 * {{cql_tests.TestCQL.rename_test}}
 * {{super_column_cache_test.TestSCCache.sc_with_row_cache_test}}
 * {{upgrade_supercolumns_test.TestSCUpgrade.upgrade_with_index_creation_test}}



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


[jira] [Resolved] (CASSANDRA-9053) Convert dtests that use cassandra-cli to Thrift API

2015-04-02 Thread Tyler Hobbs (JIRA)

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

Tyler Hobbs resolved CASSANDRA-9053.

Resolution: Fixed

All of the dtests that used the CLI now go through the Thrift API directly.

 Convert dtests that use cassandra-cli to Thrift API
 ---

 Key: CASSANDRA-9053
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9053
 Project: Cassandra
  Issue Type: Test
  Components: Tests
Reporter: Tyler Hobbs
Assignee: Tyler Hobbs
 Fix For: 3.0


 The following dtests need to be changed to use the Thrift API directly 
 instead of going through cassandra-cli:
 * {{cql_tests.TestCQL.cql3_insert_thrift_test}}
 * {{cql_tests.TestCQL.rename_test}}
 * {{super_column_cache_test.TestSCCache.sc_with_row_cache_test}}
 * {{upgrade_supercolumns_test.TestSCUpgrade.upgrade_with_index_creation_test}}



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


[jira] [Updated] (CASSANDRA-9053) Convert dtests that use cassandra-cli to Thrift API

2015-04-02 Thread Tyler Hobbs (JIRA)

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

Tyler Hobbs updated CASSANDRA-9053:
---
Description: 
The following dtests need to be changed to use the Thrift API directly instead 
of going through cassandra-cli:
* {{cql_tests.TestCQL.cql3_insert_thrift_test}}
* {{cql_tests.TestCQL.rename_test}}
* {{super_column_cache_test.TestSCCache.sc_with_row_cache_test}}
* {{upgrade_supercolumns_test.TestSCUpgrade.upgrade_with_index_creation_test}}

  was:
The following dtests need to be changed to use the Thrift API directly instead 
of going through cassandra-cli:
* {{global_row_key_cache_test.TestGlobalRowKeyCache.functional_test}}
* {{cql_tests.TestCQL.cql3_insert_thrift_test}}
* {{cql_tests.TestCQL.rename_test}}
* {{super_column_cache_test.TestSCCache.sc_with_row_cache_test}}
* {{upgrade_supercolumns_test.TestSCUpgrade.upgrade_with_index_creation_test}}


 Convert dtests that use cassandra-cli to Thrift API
 ---

 Key: CASSANDRA-9053
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9053
 Project: Cassandra
  Issue Type: Test
  Components: Tests
Reporter: Tyler Hobbs
 Fix For: 3.0


 The following dtests need to be changed to use the Thrift API directly 
 instead of going through cassandra-cli:
 * {{cql_tests.TestCQL.cql3_insert_thrift_test}}
 * {{cql_tests.TestCQL.rename_test}}
 * {{super_column_cache_test.TestSCCache.sc_with_row_cache_test}}
 * {{upgrade_supercolumns_test.TestSCUpgrade.upgrade_with_index_creation_test}}



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


[jira] [Commented] (CASSANDRA-9082) sstableloader error on trunk due to loading read meter

2015-04-02 Thread Tyler Hobbs (JIRA)

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

Tyler Hobbs commented on CASSANDRA-9082:


+1

 sstableloader error on trunk due to loading read meter
 --

 Key: CASSANDRA-9082
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9082
 Project: Cassandra
  Issue Type: Bug
  Components: Tools
Reporter: Tyler Hobbs
Assignee: Benedict
 Fix For: 3.0, 2.1.5


 If you try to run sstableloader on trunk, you'll get an error like the 
 following:
 {noformat}
 Exception: sstableloader command 
 '/tmp/dtest-p5eSr3/test/node1/bin/sstableloader -d 127.0.0.1 
 /tmp/tmpzd5CCh/ks/cf' failed; exit status: 1'; stdout: Established connection 
 to initial hosts
 Opening sstables and calculating sections to stream
 ; stderr: null
 java.lang.AssertionError
 org.apache.cassandra.exceptions.ConfigurationException
   at 
 org.apache.cassandra.locator.AbstractReplicationStrategy.createInternal(AbstractReplicationStrategy.java:249)
   at 
 org.apache.cassandra.locator.AbstractReplicationStrategy.createReplicationStrategy(AbstractReplicationStrategy.java:264)
   at 
 org.apache.cassandra.db.Keyspace.createReplicationStrategy(Keyspace.java:279)
   at org.apache.cassandra.db.Keyspace.init(Keyspace.java:267)
   at org.apache.cassandra.db.Keyspace.open(Keyspace.java:115)
   at org.apache.cassandra.db.Keyspace.open(Keyspace.java:92)
   at 
 org.apache.cassandra.cql3.restrictions.StatementRestrictions.init(StatementRestrictions.java:128)
   at 
 org.apache.cassandra.cql3.statements.SelectStatement$RawStatement.prepareRestrictions(SelectStatement.java:788)
   at 
 org.apache.cassandra.cql3.statements.SelectStatement$RawStatement.prepare(SelectStatement.java:741)
   at 
 org.apache.cassandra.cql3.QueryProcessor.getStatement(QueryProcessor.java:488)
   at 
 org.apache.cassandra.cql3.QueryProcessor.parseStatement(QueryProcessor.java:266)
   at 
 org.apache.cassandra.cql3.QueryProcessor.prepareInternal(QueryProcessor.java:300)
   at 
 org.apache.cassandra.cql3.QueryProcessor.executeInternal(QueryProcessor.java:308)
   at 
 org.apache.cassandra.db.SystemKeyspace.getSSTableReadMeter(SystemKeyspace.java:899)
   at 
 org.apache.cassandra.io.sstable.format.SSTableReader$GlobalTidy.init(SSTableReader.java:1973)
   at 
 org.apache.cassandra.io.sstable.format.SSTableReader$GlobalTidy.get(SSTableReader.java:2012)
   at 
 org.apache.cassandra.io.sstable.format.SSTableReader$DescriptorTypeTidy.init(SSTableReader.java:1890)
   at 
 org.apache.cassandra.io.sstable.format.SSTableReader$DescriptorTypeTidy.get(SSTableReader.java:1926)
   at 
 org.apache.cassandra.io.sstable.format.SSTableReader$InstanceTidier.setup(SSTableReader.java:1809)
   at 
 org.apache.cassandra.io.sstable.format.SSTableReader.setup(SSTableReader.java:1754)
   at 
 org.apache.cassandra.io.sstable.format.SSTableReader.openForBatch(SSTableReader.java:398)
   at 
 org.apache.cassandra.io.sstable.SSTableLoader$1.accept(SSTableLoader.java:117)
   at java.io.File.list(File.java:1155)
   at 
 org.apache.cassandra.io.sstable.SSTableLoader.openSSTables(SSTableLoader.java:78)
   at 
 org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:162)
   at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:106)
 Caused by: java.lang.AssertionError
   at 
 org.apache.cassandra.locator.AbstractReplicationStrategy.init(AbstractReplicationStrategy.java:66)
   at 
 org.apache.cassandra.locator.LocalStrategy.init(LocalStrategy.java:36)
   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
   at 
 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
   at 
 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
   at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
   at 
 org.apache.cassandra.locator.AbstractReplicationStrategy.createInternal(AbstractReplicationStrategy.java:244)
   ... 25 more
 {noformat}
 At first glance, it looks like the SSTableReader is trying to load the read 
 meter even though it shouldn't (or doesn't need to).  Assigning to Benedict 
 since this seems to be most related to SSTableReader management.



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


[jira] [Commented] (CASSANDRA-9045) Deleted columns are resurrected after repair in wide rows

2015-04-02 Thread Tyler Hobbs (JIRA)

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

Tyler Hobbs commented on CASSANDRA-9045:


Thanks! What repair operation did you run in between the queries?

 Deleted columns are resurrected after repair in wide rows
 -

 Key: CASSANDRA-9045
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9045
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Roman Tkachenko
Assignee: Marcus Eriksson
Priority: Critical
 Fix For: 2.0.15

 Attachments: 9045-debug-tracing.txt, 
 apache-cassandra-2.0.13-SNAPSHOT.jar, cqlsh.txt, debug.txt, inconsistency.txt


 Hey guys,
 After almost a week of researching the issue and trying out multiple things 
 with (almost) no luck I was suggested (on the user@cass list) to file a 
 report here.
 h5. Setup
 Cassandra 2.0.13 (we had the issue with 2.0.10 as well and upgraded to see if 
 it goes away)
 Multi datacenter 12+6 nodes cluster.
 h5. Schema
 {code}
 cqlsh describe keyspace blackbook;
 CREATE KEYSPACE blackbook WITH replication = {
   'class': 'NetworkTopologyStrategy',
   'IAD': '3',
   'ORD': '3'
 };
 USE blackbook;
 CREATE TABLE bounces (
   domainid text,
   address text,
   message text,
   timestamp bigint,
   PRIMARY KEY (domainid, address)
 ) WITH
   bloom_filter_fp_chance=0.10 AND
   caching='KEYS_ONLY' AND
   comment='' AND
   dclocal_read_repair_chance=0.10 AND
   gc_grace_seconds=864000 AND
   index_interval=128 AND
   read_repair_chance=0.00 AND
   populate_io_cache_on_flush='false' AND
   default_time_to_live=0 AND
   speculative_retry='99.0PERCENTILE' AND
   memtable_flush_period_in_ms=0 AND
   compaction={'class': 'LeveledCompactionStrategy'} AND
   compression={'sstable_compression': 'LZ4Compressor'};
 {code}
 h5. Use case
 Each row (defined by a domainid) can have many many columns (bounce entries) 
 so rows can get pretty wide. In practice, most of the rows are not that big 
 but some of them contain hundreds of thousands and even millions of columns.
 Columns are not TTL'ed but can be deleted using the following CQL3 statement:
 {code}
 delete from bounces where domainid = 'domain.com' and address = 
 'al...@example.com';
 {code}
 All queries are performed using LOCAL_QUORUM CL.
 h5. Problem
 We weren't very diligent about running repairs on the cluster initially, but 
 shorty after we started doing it we noticed that some of previously deleted 
 columns (bounce entries) are there again, as if tombstones have disappeared.
 I have run this test multiple times via cqlsh, on the row of the customer who 
 originally reported the issue:
 * delete an entry
 * verify it's not returned even with CL=ALL
 * run repair on nodes that own this row's key
 * the columns reappear and are returned even with CL=ALL
 I tried the same test on another row with much less data and everything was 
 correctly deleted and didn't reappear after repair.
 h5. Other steps I've taken so far
 Made sure NTP is running on all servers and clocks are synchronized.
 Increased gc_grace_seconds to 100 days, ran full repair (on the affected 
 keyspace) on all nodes, then changed it back to the default 10 days again. 
 Didn't help.
 Performed one more test. Updated one of the resurrected columns, then deleted 
 it and ran repair again. This time the updated version of the column 
 reappeared.
 Finally, I noticed these log entries for the row in question:
 {code}
 INFO [ValidationExecutor:77] 2015-03-25 20:27:43,936 
 CompactionController.java (line 192) Compacting large row 
 blackbook/bounces:4ed558feba8a483733001d6a (279067683 bytes) incrementally
 {code}
 Figuring it may be related I bumped in_memory_compaction_limit_in_mb to 
 512MB so the row fits into it, deleted the entry and ran repair once again. 
 The log entry for this row was gone and the columns didn't reappear.
 We have a lot of rows much larger than 512MB so can't increase this 
 parameters forever, if that is the issue.
 Please let me know if you need more information on the case or if I can run 
 more experiments.
 Thanks!
 Roman



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


[jira] [Commented] (CASSANDRA-9045) Deleted columns are resurrected after repair in wide rows

2015-04-02 Thread Roman Tkachenko (JIRA)

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

Roman Tkachenko commented on CASSANDRA-9045:


I ran nodetool repair -pr blackbook bounces on a couple of nodes.

 Deleted columns are resurrected after repair in wide rows
 -

 Key: CASSANDRA-9045
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9045
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Roman Tkachenko
Assignee: Marcus Eriksson
Priority: Critical
 Fix For: 2.0.15

 Attachments: 9045-debug-tracing.txt, 
 apache-cassandra-2.0.13-SNAPSHOT.jar, cqlsh.txt, debug.txt, inconsistency.txt


 Hey guys,
 After almost a week of researching the issue and trying out multiple things 
 with (almost) no luck I was suggested (on the user@cass list) to file a 
 report here.
 h5. Setup
 Cassandra 2.0.13 (we had the issue with 2.0.10 as well and upgraded to see if 
 it goes away)
 Multi datacenter 12+6 nodes cluster.
 h5. Schema
 {code}
 cqlsh describe keyspace blackbook;
 CREATE KEYSPACE blackbook WITH replication = {
   'class': 'NetworkTopologyStrategy',
   'IAD': '3',
   'ORD': '3'
 };
 USE blackbook;
 CREATE TABLE bounces (
   domainid text,
   address text,
   message text,
   timestamp bigint,
   PRIMARY KEY (domainid, address)
 ) WITH
   bloom_filter_fp_chance=0.10 AND
   caching='KEYS_ONLY' AND
   comment='' AND
   dclocal_read_repair_chance=0.10 AND
   gc_grace_seconds=864000 AND
   index_interval=128 AND
   read_repair_chance=0.00 AND
   populate_io_cache_on_flush='false' AND
   default_time_to_live=0 AND
   speculative_retry='99.0PERCENTILE' AND
   memtable_flush_period_in_ms=0 AND
   compaction={'class': 'LeveledCompactionStrategy'} AND
   compression={'sstable_compression': 'LZ4Compressor'};
 {code}
 h5. Use case
 Each row (defined by a domainid) can have many many columns (bounce entries) 
 so rows can get pretty wide. In practice, most of the rows are not that big 
 but some of them contain hundreds of thousands and even millions of columns.
 Columns are not TTL'ed but can be deleted using the following CQL3 statement:
 {code}
 delete from bounces where domainid = 'domain.com' and address = 
 'al...@example.com';
 {code}
 All queries are performed using LOCAL_QUORUM CL.
 h5. Problem
 We weren't very diligent about running repairs on the cluster initially, but 
 shorty after we started doing it we noticed that some of previously deleted 
 columns (bounce entries) are there again, as if tombstones have disappeared.
 I have run this test multiple times via cqlsh, on the row of the customer who 
 originally reported the issue:
 * delete an entry
 * verify it's not returned even with CL=ALL
 * run repair on nodes that own this row's key
 * the columns reappear and are returned even with CL=ALL
 I tried the same test on another row with much less data and everything was 
 correctly deleted and didn't reappear after repair.
 h5. Other steps I've taken so far
 Made sure NTP is running on all servers and clocks are synchronized.
 Increased gc_grace_seconds to 100 days, ran full repair (on the affected 
 keyspace) on all nodes, then changed it back to the default 10 days again. 
 Didn't help.
 Performed one more test. Updated one of the resurrected columns, then deleted 
 it and ran repair again. This time the updated version of the column 
 reappeared.
 Finally, I noticed these log entries for the row in question:
 {code}
 INFO [ValidationExecutor:77] 2015-03-25 20:27:43,936 
 CompactionController.java (line 192) Compacting large row 
 blackbook/bounces:4ed558feba8a483733001d6a (279067683 bytes) incrementally
 {code}
 Figuring it may be related I bumped in_memory_compaction_limit_in_mb to 
 512MB so the row fits into it, deleted the entry and ran repair once again. 
 The log entry for this row was gone and the columns didn't reappear.
 We have a lot of rows much larger than 512MB so can't increase this 
 parameters forever, if that is the issue.
 Please let me know if you need more information on the case or if I can run 
 more experiments.
 Thanks!
 Roman



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


[jira] [Commented] (CASSANDRA-9045) Deleted columns are resurrected after repair in wide rows

2015-04-02 Thread Tyler Hobbs (JIRA)

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

Tyler Hobbs commented on CASSANDRA-9045:


bq. Would you be able to provide a binary that I could use as a drop-in 
replacement?

I can do that if you need me to, although I can also provide simple 
instructions for building the jar.

bq. Also, will I need to replace it on all nodes in the cluster?

One node would be enough if you can reproduce the behavior like 
{{inconsistency.txt}} on a key that it's a replica for.

 Deleted columns are resurrected after repair in wide rows
 -

 Key: CASSANDRA-9045
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9045
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Roman Tkachenko
Assignee: Marcus Eriksson
Priority: Critical
 Fix For: 2.0.15

 Attachments: cqlsh.txt, inconsistency.txt


 Hey guys,
 After almost a week of researching the issue and trying out multiple things 
 with (almost) no luck I was suggested (on the user@cass list) to file a 
 report here.
 h5. Setup
 Cassandra 2.0.13 (we had the issue with 2.0.10 as well and upgraded to see if 
 it goes away)
 Multi datacenter 12+6 nodes cluster.
 h5. Schema
 {code}
 cqlsh describe keyspace blackbook;
 CREATE KEYSPACE blackbook WITH replication = {
   'class': 'NetworkTopologyStrategy',
   'IAD': '3',
   'ORD': '3'
 };
 USE blackbook;
 CREATE TABLE bounces (
   domainid text,
   address text,
   message text,
   timestamp bigint,
   PRIMARY KEY (domainid, address)
 ) WITH
   bloom_filter_fp_chance=0.10 AND
   caching='KEYS_ONLY' AND
   comment='' AND
   dclocal_read_repair_chance=0.10 AND
   gc_grace_seconds=864000 AND
   index_interval=128 AND
   read_repair_chance=0.00 AND
   populate_io_cache_on_flush='false' AND
   default_time_to_live=0 AND
   speculative_retry='99.0PERCENTILE' AND
   memtable_flush_period_in_ms=0 AND
   compaction={'class': 'LeveledCompactionStrategy'} AND
   compression={'sstable_compression': 'LZ4Compressor'};
 {code}
 h5. Use case
 Each row (defined by a domainid) can have many many columns (bounce entries) 
 so rows can get pretty wide. In practice, most of the rows are not that big 
 but some of them contain hundreds of thousands and even millions of columns.
 Columns are not TTL'ed but can be deleted using the following CQL3 statement:
 {code}
 delete from bounces where domainid = 'domain.com' and address = 
 'al...@example.com';
 {code}
 All queries are performed using LOCAL_QUORUM CL.
 h5. Problem
 We weren't very diligent about running repairs on the cluster initially, but 
 shorty after we started doing it we noticed that some of previously deleted 
 columns (bounce entries) are there again, as if tombstones have disappeared.
 I have run this test multiple times via cqlsh, on the row of the customer who 
 originally reported the issue:
 * delete an entry
 * verify it's not returned even with CL=ALL
 * run repair on nodes that own this row's key
 * the columns reappear and are returned even with CL=ALL
 I tried the same test on another row with much less data and everything was 
 correctly deleted and didn't reappear after repair.
 h5. Other steps I've taken so far
 Made sure NTP is running on all servers and clocks are synchronized.
 Increased gc_grace_seconds to 100 days, ran full repair (on the affected 
 keyspace) on all nodes, then changed it back to the default 10 days again. 
 Didn't help.
 Performed one more test. Updated one of the resurrected columns, then deleted 
 it and ran repair again. This time the updated version of the column 
 reappeared.
 Finally, I noticed these log entries for the row in question:
 {code}
 INFO [ValidationExecutor:77] 2015-03-25 20:27:43,936 
 CompactionController.java (line 192) Compacting large row 
 blackbook/bounces:4ed558feba8a483733001d6a (279067683 bytes) incrementally
 {code}
 Figuring it may be related I bumped in_memory_compaction_limit_in_mb to 
 512MB so the row fits into it, deleted the entry and ran repair once again. 
 The log entry for this row was gone and the columns didn't reappear.
 We have a lot of rows much larger than 512MB so can't increase this 
 parameters forever, if that is the issue.
 Please let me know if you need more information on the case or if I can run 
 more experiments.
 Thanks!
 Roman



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


[jira] [Updated] (CASSANDRA-9109) Repair appears to have some of untested behaviors

2015-04-02 Thread Ariel Weisberg (JIRA)

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

Ariel Weisberg updated CASSANDRA-9109:
--
Summary: Repair appears to have some of untested behaviors  (was: Repair 
appears to have a lot of untested behaviors)

 Repair appears to have some of untested behaviors
 -

 Key: CASSANDRA-9109
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9109
 Project: Cassandra
  Issue Type: Test
Reporter: Ariel Weisberg

 There is AntiCompactionTest and a few single process unit tests, but they 
 aren't very convincing. Looking at the docs to nodetool it looks like there 
 are a few different ways that repair could operate that aren't explored.
 It's also the kind of thing you might like to see tested with some concurrent 
 load to catch interactions with everything else moving about, but a dtest may 
 not be the right place to do that.



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


[jira] [Updated] (CASSANDRA-9110) Bounded/RingBuffer CQL Collections

2015-04-02 Thread Jim Plush (JIRA)

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

Jim Plush updated CASSANDRA-9110:
-
Description: 
Feature Request:
I've had frequent use cases for bounded and RingBuffer based collections. 

For example: 
I want to store the first 100 times I've see this thing.
I want to store the last 100 times I've seen this thing.

Currently that means having to do application level READ/WRITE operations and 
we like to keep some of our high scale apps to write only where possible. 

While probably expensive for exactly N items an approximation should be good 
enough for most applications. Where N in our example could be 100 or 102, or 
even make that tunable on the type or table. 

For the RingBuffer example, consider I only want to store the last N login 
attempts for a user. Once N+1 comes in it issues a delete for the oldest one in 
the collection. 

A potential implementation idea, given the rowkey would live on a single node 
would be to have an LRU based counter cache (tunable in the yaml settings in 
MB) that keeps a current count of how many items are already in the collection 
for that rowkey. If  than bound, toss. It could also be a compaction type 
thing where it stores all the data then at compaction time it filters out the 
data that's out of bounds. 


something akin to:
CREATE TABLE users (
  user_id text PRIMARY KEY,
  first_name text,
  first_logins settext, 100, oldest
  last_logins settext, 100, newest
);



  was:
Feature Request:
I've had frequent use cases for bounded and RingBuffer based collections. 

For example: 
I want to store the first 100 times I've see this thing.
I want to store the last 100 times I've seen this thing.

Currently that means having to do application level READ/WRITE operations and 
we like to keep some of our high scale apps to write only where possible. 

While probably expensive for exactly N items an approximation should be good 
enough for most applications. Where N in our example could be 100 or 102, or 
even make that tunable on the type or table. 

For the RingBuffer example, consider I only want to store the last N login 
attempts for a user. Once N+1 comes in it issues a delete for the oldest one in 
the collection. 

A potential implementation idea, given the rowkey would live on a single node 
would be to have an LRU based counter cache (tunable in the yaml settings in 
MB) that keeps a current count of how many items are already in the collection 
for that rowkey. If  than bound, toss.


something akin to:
CREATE TABLE users (
  user_id text PRIMARY KEY,
  first_name text,
  first_logins settext, 100, oldest
  last_logins settext, 100, newest
);




 Bounded/RingBuffer CQL Collections
 --

 Key: CASSANDRA-9110
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9110
 Project: Cassandra
  Issue Type: New Feature
  Components: Core
Reporter: Jim Plush
Priority: Minor

 Feature Request:
 I've had frequent use cases for bounded and RingBuffer based collections. 
 For example: 
 I want to store the first 100 times I've see this thing.
 I want to store the last 100 times I've seen this thing.
 Currently that means having to do application level READ/WRITE operations and 
 we like to keep some of our high scale apps to write only where possible. 
 While probably expensive for exactly N items an approximation should be good 
 enough for most applications. Where N in our example could be 100 or 102, or 
 even make that tunable on the type or table. 
 For the RingBuffer example, consider I only want to store the last N login 
 attempts for a user. Once N+1 comes in it issues a delete for the oldest one 
 in the collection. 
 A potential implementation idea, given the rowkey would live on a single node 
 would be to have an LRU based counter cache (tunable in the yaml settings in 
 MB) that keeps a current count of how many items are already in the 
 collection for that rowkey. If  than bound, toss. It could also be a 
 compaction type thing where it stores all the data then at compaction time it 
 filters out the data that's out of bounds. 
 something akin to:
 CREATE TABLE users (
   user_id text PRIMARY KEY,
   first_name text,
   first_logins settext, 100, oldest
   last_logins settext, 100, newest
 );



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


[jira] [Updated] (CASSANDRA-9082) sstableloader error on trunk due to loading read meter

2015-04-02 Thread Tyler Hobbs (JIRA)

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

Tyler Hobbs updated CASSANDRA-9082:
---
Reviewer: Tyler Hobbs

 sstableloader error on trunk due to loading read meter
 --

 Key: CASSANDRA-9082
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9082
 Project: Cassandra
  Issue Type: Bug
  Components: Tools
Reporter: Tyler Hobbs
Assignee: Benedict
 Fix For: 3.0, 2.1.5


 If you try to run sstableloader on trunk, you'll get an error like the 
 following:
 {noformat}
 Exception: sstableloader command 
 '/tmp/dtest-p5eSr3/test/node1/bin/sstableloader -d 127.0.0.1 
 /tmp/tmpzd5CCh/ks/cf' failed; exit status: 1'; stdout: Established connection 
 to initial hosts
 Opening sstables and calculating sections to stream
 ; stderr: null
 java.lang.AssertionError
 org.apache.cassandra.exceptions.ConfigurationException
   at 
 org.apache.cassandra.locator.AbstractReplicationStrategy.createInternal(AbstractReplicationStrategy.java:249)
   at 
 org.apache.cassandra.locator.AbstractReplicationStrategy.createReplicationStrategy(AbstractReplicationStrategy.java:264)
   at 
 org.apache.cassandra.db.Keyspace.createReplicationStrategy(Keyspace.java:279)
   at org.apache.cassandra.db.Keyspace.init(Keyspace.java:267)
   at org.apache.cassandra.db.Keyspace.open(Keyspace.java:115)
   at org.apache.cassandra.db.Keyspace.open(Keyspace.java:92)
   at 
 org.apache.cassandra.cql3.restrictions.StatementRestrictions.init(StatementRestrictions.java:128)
   at 
 org.apache.cassandra.cql3.statements.SelectStatement$RawStatement.prepareRestrictions(SelectStatement.java:788)
   at 
 org.apache.cassandra.cql3.statements.SelectStatement$RawStatement.prepare(SelectStatement.java:741)
   at 
 org.apache.cassandra.cql3.QueryProcessor.getStatement(QueryProcessor.java:488)
   at 
 org.apache.cassandra.cql3.QueryProcessor.parseStatement(QueryProcessor.java:266)
   at 
 org.apache.cassandra.cql3.QueryProcessor.prepareInternal(QueryProcessor.java:300)
   at 
 org.apache.cassandra.cql3.QueryProcessor.executeInternal(QueryProcessor.java:308)
   at 
 org.apache.cassandra.db.SystemKeyspace.getSSTableReadMeter(SystemKeyspace.java:899)
   at 
 org.apache.cassandra.io.sstable.format.SSTableReader$GlobalTidy.init(SSTableReader.java:1973)
   at 
 org.apache.cassandra.io.sstable.format.SSTableReader$GlobalTidy.get(SSTableReader.java:2012)
   at 
 org.apache.cassandra.io.sstable.format.SSTableReader$DescriptorTypeTidy.init(SSTableReader.java:1890)
   at 
 org.apache.cassandra.io.sstable.format.SSTableReader$DescriptorTypeTidy.get(SSTableReader.java:1926)
   at 
 org.apache.cassandra.io.sstable.format.SSTableReader$InstanceTidier.setup(SSTableReader.java:1809)
   at 
 org.apache.cassandra.io.sstable.format.SSTableReader.setup(SSTableReader.java:1754)
   at 
 org.apache.cassandra.io.sstable.format.SSTableReader.openForBatch(SSTableReader.java:398)
   at 
 org.apache.cassandra.io.sstable.SSTableLoader$1.accept(SSTableLoader.java:117)
   at java.io.File.list(File.java:1155)
   at 
 org.apache.cassandra.io.sstable.SSTableLoader.openSSTables(SSTableLoader.java:78)
   at 
 org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:162)
   at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:106)
 Caused by: java.lang.AssertionError
   at 
 org.apache.cassandra.locator.AbstractReplicationStrategy.init(AbstractReplicationStrategy.java:66)
   at 
 org.apache.cassandra.locator.LocalStrategy.init(LocalStrategy.java:36)
   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
   at 
 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
   at 
 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
   at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
   at 
 org.apache.cassandra.locator.AbstractReplicationStrategy.createInternal(AbstractReplicationStrategy.java:244)
   ... 25 more
 {noformat}
 At first glance, it looks like the SSTableReader is trying to load the read 
 meter even though it shouldn't (or doesn't need to).  Assigning to Benedict 
 since this seems to be most related to SSTableReader management.



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


[jira] [Commented] (CASSANDRA-9045) Deleted columns are resurrected after repair in wide rows

2015-04-02 Thread Roman Tkachenko (JIRA)

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

Roman Tkachenko commented on CASSANDRA-9045:


I couldn't reproduce the inconsistency.txt issue but reproduced the original 
reported one. Take a look at the debug.txt - after repair the tombstone on 
173.203.37.77 is gone.

 Deleted columns are resurrected after repair in wide rows
 -

 Key: CASSANDRA-9045
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9045
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Roman Tkachenko
Assignee: Marcus Eriksson
Priority: Critical
 Fix For: 2.0.15

 Attachments: 9045-debug-tracing.txt, 
 apache-cassandra-2.0.13-SNAPSHOT.jar, cqlsh.txt, debug.txt, inconsistency.txt


 Hey guys,
 After almost a week of researching the issue and trying out multiple things 
 with (almost) no luck I was suggested (on the user@cass list) to file a 
 report here.
 h5. Setup
 Cassandra 2.0.13 (we had the issue with 2.0.10 as well and upgraded to see if 
 it goes away)
 Multi datacenter 12+6 nodes cluster.
 h5. Schema
 {code}
 cqlsh describe keyspace blackbook;
 CREATE KEYSPACE blackbook WITH replication = {
   'class': 'NetworkTopologyStrategy',
   'IAD': '3',
   'ORD': '3'
 };
 USE blackbook;
 CREATE TABLE bounces (
   domainid text,
   address text,
   message text,
   timestamp bigint,
   PRIMARY KEY (domainid, address)
 ) WITH
   bloom_filter_fp_chance=0.10 AND
   caching='KEYS_ONLY' AND
   comment='' AND
   dclocal_read_repair_chance=0.10 AND
   gc_grace_seconds=864000 AND
   index_interval=128 AND
   read_repair_chance=0.00 AND
   populate_io_cache_on_flush='false' AND
   default_time_to_live=0 AND
   speculative_retry='99.0PERCENTILE' AND
   memtable_flush_period_in_ms=0 AND
   compaction={'class': 'LeveledCompactionStrategy'} AND
   compression={'sstable_compression': 'LZ4Compressor'};
 {code}
 h5. Use case
 Each row (defined by a domainid) can have many many columns (bounce entries) 
 so rows can get pretty wide. In practice, most of the rows are not that big 
 but some of them contain hundreds of thousands and even millions of columns.
 Columns are not TTL'ed but can be deleted using the following CQL3 statement:
 {code}
 delete from bounces where domainid = 'domain.com' and address = 
 'al...@example.com';
 {code}
 All queries are performed using LOCAL_QUORUM CL.
 h5. Problem
 We weren't very diligent about running repairs on the cluster initially, but 
 shorty after we started doing it we noticed that some of previously deleted 
 columns (bounce entries) are there again, as if tombstones have disappeared.
 I have run this test multiple times via cqlsh, on the row of the customer who 
 originally reported the issue:
 * delete an entry
 * verify it's not returned even with CL=ALL
 * run repair on nodes that own this row's key
 * the columns reappear and are returned even with CL=ALL
 I tried the same test on another row with much less data and everything was 
 correctly deleted and didn't reappear after repair.
 h5. Other steps I've taken so far
 Made sure NTP is running on all servers and clocks are synchronized.
 Increased gc_grace_seconds to 100 days, ran full repair (on the affected 
 keyspace) on all nodes, then changed it back to the default 10 days again. 
 Didn't help.
 Performed one more test. Updated one of the resurrected columns, then deleted 
 it and ran repair again. This time the updated version of the column 
 reappeared.
 Finally, I noticed these log entries for the row in question:
 {code}
 INFO [ValidationExecutor:77] 2015-03-25 20:27:43,936 
 CompactionController.java (line 192) Compacting large row 
 blackbook/bounces:4ed558feba8a483733001d6a (279067683 bytes) incrementally
 {code}
 Figuring it may be related I bumped in_memory_compaction_limit_in_mb to 
 512MB so the row fits into it, deleted the entry and ran repair once again. 
 The log entry for this row was gone and the columns didn't reappear.
 We have a lot of rows much larger than 512MB so can't increase this 
 parameters forever, if that is the issue.
 Please let me know if you need more information on the case or if I can run 
 more experiments.
 Thanks!
 Roman



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


[jira] [Created] (CASSANDRA-9111) SSTables originated from the same incremental repair session have different repairedAt timestamps

2015-04-02 Thread prmg (JIRA)
prmg created CASSANDRA-9111:
---

 Summary: SSTables originated from the same incremental repair 
session have different repairedAt timestamps
 Key: CASSANDRA-9111
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9111
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: prmg


CASSANDRA-7168 optimizes QUORUM reads by skipping incrementally repaired 
SSTables on other replicas that were repaired on or before the maximum 
repairedAt timestamp of the coordinating replica's SSTables for the query 
partition.

One assumption of that optimization is that SSTables originated from the same 
repair session in different nodes will have the same repairedAt timestamp, 
since the objective is to skip reading SSTables originated in the same repair 
session (or before).

However, currently, each node timestamps independently SSTables originated from 
the same repair session, so they almost never have the same timestamp.

Steps to reproduce the problem:
{code}
ccm create test
ccm populate -n 3
ccm start
ccm node1 cqlsh;
{code}

{code:sql}
CREATE KEYSPACE foo WITH replication = {'class': 'SimpleStrategy', 
'replication_factor': 3};
CREATE TABLE foo.bar ( key int, col int, PRIMARY KEY (key) ) ;
INSERT INTO foo.bar (key, col) VALUES (1, 1);
exit;
{code}

{code}
ccm node1 flush;
ccm node2 flush;
ccm node3 flush;

nodetool -h 127.0.0.1 -p 7100 repair -par -inc foo bar

[2015-04-02 21:56:07,726] Starting repair command #1, repairing 3 ranges for 
keyspace foo (parallelism=PARALLEL, full=false)
[2015-04-02 21:56:07,816] Repair session 3655b670-d99c-11e4-b250-9107aba35569 
for range (3074457345618258602,-9223372036854775808] finished
[2015-04-02 21:56:07,816] Repair session 365a4a50-d99c-11e4-b250-9107aba35569 
for range (-9223372036854775808,-3074457345618258603] finished
[2015-04-02 21:56:07,818] Repair session 365bf800-d99c-11e4-b250-9107aba35569 
for range (-3074457345618258603,3074457345618258602] finished
[2015-04-02 21:56:07,995] Repair command #1 finished

sstablemetadata 
~/.ccm/test/node1/data/foo/bar-377b5540d99d11e49cc09107aba35569/foo-bar-ka-1-Statistics.db
 
~/.ccm/test/node2/data/foo/bar-377b5540d99d11e49cc09107aba35569/foo-bar-ka-1-Statistics.db
 
~/.ccm/test/node3/data/foo/bar-377b5540d99d11e49cc09107aba35569/foo-bar-ka-1-Statistics.db
 | grep Repaired

Repaired at: 1428023050318
Repaired at: 1428023050322
Repaired at: 1428023050340
{code}



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


[jira] [Updated] (CASSANDRA-9107) More accurate row count estimates

2015-04-02 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis updated CASSANDRA-9107:
--
Reviewer: Sam Tunnicliffe

[~beobal] to review

 More accurate row count estimates
 -

 Key: CASSANDRA-9107
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9107
 Project: Cassandra
  Issue Type: Improvement
Reporter: Chris Lohfink
Assignee: Chris Lohfink
 Attachments: 9107-cassandra2-1.patch


 Currently the estimated row count from cfstats is the sum of the number of 
 rows in all the sstables. This becomes very inaccurate with wide rows or 
 heavily updated datasets since the same partition would exist in many 
 sstables.  In example:
 {code}
 create KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 
 'replication_factor': 1};
 create TABLE wide (key text PRIMARY KEY , value text) WITH compaction = 
 {'class': 'SizeTieredCompactionStrategy', 'min_threshold': 30, 
 'max_threshold': 100} ;
 ---
 insert INTO wide (key, value) VALUES ('key', 'value');
 // flush
 // cfstats output: Number of keys (estimate): 1  (128 in older version from 
 index)
 insert INTO wide (key, value) VALUES ('key', 'value');
 // flush
 // cfstats output: Number of keys (estimate): 2  (256 in older version from 
 index)
 ... etc
 {code}
 previously it used the index but it still did it per sstable and summed them 
 up which became inaccurate as there are more sstables (just by much worse). 
 With new versions of sstables we can merge the cardinalities to resolve this 
 with a slight hit to accuracy in the case of every sstable having completely 
 unique partitions.
 Furthermore I think it would be pretty minimal effort to include the number 
 of rows in the memtables to this count. We wont have the cardinality merging 
 between memtables and sstables but I would consider that a relatively minor 
 negative.



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


[jira] [Updated] (CASSANDRA-9111) SSTables originated from the same incremental repair session have different repairedAt timestamps

2015-04-02 Thread prmg (JIRA)

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

prmg updated CASSANDRA-9111:

Attachment: CASSANDRA-9111-v0.txt

The proposed solution involves passing the initiator timestamp in the repair's 
PrepareMessage. This timestamp is then used to create the ParentRepairSession 
with the initiator timestamp in all replicas. Finally, the 
ParentRepairSession's repairedAt field is used to populate the repairedAt field 
on the SSTable metadata after anticompation.

After performing the test described in the ticket description after this patch, 
the SSTables originated from the same incremental repair session now share the 
same timestamp:

{code}
sstablemetadata 
~/.ccm/test/node1/data/foo/bar-104e25c0d99c11e4b2509107aba35569/foo-bar-ka-1-Statistics.db
 
~/.ccm/test/node2/data/foo/bar-104e25c0d99c11e4b2509107aba35569/foo-bar-ka-1-Statistics.db
 
~/.ccm/test/node3/data/foo/bar-104e25c0d99c11e4b2509107aba35569/foo-bar-ka-1-Statistics.db
 | grep Repaired

Repaired at: 1428022567736
Repaired at: 1428022567736
Repaired at: 1428022567736
{code}

 SSTables originated from the same incremental repair session have different 
 repairedAt timestamps
 -

 Key: CASSANDRA-9111
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9111
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: prmg
 Attachments: CASSANDRA-9111-v0.txt


 CASSANDRA-7168 optimizes QUORUM reads by skipping incrementally repaired 
 SSTables on other replicas that were repaired on or before the maximum 
 repairedAt timestamp of the coordinating replica's SSTables for the query 
 partition.
 One assumption of that optimization is that SSTables originated from the same 
 repair session in different nodes will have the same repairedAt timestamp, 
 since the objective is to skip reading SSTables originated in the same repair 
 session (or before).
 However, currently, each node timestamps independently SSTables originated 
 from the same repair session, so they almost never have the same timestamp.
 Steps to reproduce the problem:
 {code}
 ccm create test
 ccm populate -n 3
 ccm start
 ccm node1 cqlsh;
 {code}
 {code:sql}
 CREATE KEYSPACE foo WITH replication = {'class': 'SimpleStrategy', 
 'replication_factor': 3};
 CREATE TABLE foo.bar ( key int, col int, PRIMARY KEY (key) ) ;
 INSERT INTO foo.bar (key, col) VALUES (1, 1);
 exit;
 {code}
 {code}
 ccm node1 flush;
 ccm node2 flush;
 ccm node3 flush;
 nodetool -h 127.0.0.1 -p 7100 repair -par -inc foo bar
 [2015-04-02 21:56:07,726] Starting repair command #1, repairing 3 ranges for 
 keyspace foo (parallelism=PARALLEL, full=false)
 [2015-04-02 21:56:07,816] Repair session 3655b670-d99c-11e4-b250-9107aba35569 
 for range (3074457345618258602,-9223372036854775808] finished
 [2015-04-02 21:56:07,816] Repair session 365a4a50-d99c-11e4-b250-9107aba35569 
 for range (-9223372036854775808,-3074457345618258603] finished
 [2015-04-02 21:56:07,818] Repair session 365bf800-d99c-11e4-b250-9107aba35569 
 for range (-3074457345618258603,3074457345618258602] finished
 [2015-04-02 21:56:07,995] Repair command #1 finished
 sstablemetadata 
 ~/.ccm/test/node1/data/foo/bar-377b5540d99d11e49cc09107aba35569/foo-bar-ka-1-Statistics.db
  
 ~/.ccm/test/node2/data/foo/bar-377b5540d99d11e49cc09107aba35569/foo-bar-ka-1-Statistics.db
  
 ~/.ccm/test/node3/data/foo/bar-377b5540d99d11e49cc09107aba35569/foo-bar-ka-1-Statistics.db
  | grep Repaired
 Repaired at: 1428023050318
 Repaired at: 1428023050322
 Repaired at: 1428023050340
 {code}



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


[jira] [Updated] (CASSANDRA-9045) Deleted columns are resurrected after repair in wide rows

2015-04-02 Thread Tyler Hobbs (JIRA)

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

Tyler Hobbs updated CASSANDRA-9045:
---
Attachment: apache-cassandra-2.0.13-SNAPSHOT.jar
9045-debug-tracing.txt

[~r0mant] I've attached a patch and jar that include more details in the 
tracing info.  You can try deploying the jar to a single node and attempt to 
reproduce an issue like {{inconsistency.txt}} with tracing enabled against it.  
If that doesn't work, you may need to deploy the jar to multiple nodes.

 Deleted columns are resurrected after repair in wide rows
 -

 Key: CASSANDRA-9045
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9045
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Roman Tkachenko
Assignee: Marcus Eriksson
Priority: Critical
 Fix For: 2.0.15

 Attachments: 9045-debug-tracing.txt, 
 apache-cassandra-2.0.13-SNAPSHOT.jar, cqlsh.txt, inconsistency.txt


 Hey guys,
 After almost a week of researching the issue and trying out multiple things 
 with (almost) no luck I was suggested (on the user@cass list) to file a 
 report here.
 h5. Setup
 Cassandra 2.0.13 (we had the issue with 2.0.10 as well and upgraded to see if 
 it goes away)
 Multi datacenter 12+6 nodes cluster.
 h5. Schema
 {code}
 cqlsh describe keyspace blackbook;
 CREATE KEYSPACE blackbook WITH replication = {
   'class': 'NetworkTopologyStrategy',
   'IAD': '3',
   'ORD': '3'
 };
 USE blackbook;
 CREATE TABLE bounces (
   domainid text,
   address text,
   message text,
   timestamp bigint,
   PRIMARY KEY (domainid, address)
 ) WITH
   bloom_filter_fp_chance=0.10 AND
   caching='KEYS_ONLY' AND
   comment='' AND
   dclocal_read_repair_chance=0.10 AND
   gc_grace_seconds=864000 AND
   index_interval=128 AND
   read_repair_chance=0.00 AND
   populate_io_cache_on_flush='false' AND
   default_time_to_live=0 AND
   speculative_retry='99.0PERCENTILE' AND
   memtable_flush_period_in_ms=0 AND
   compaction={'class': 'LeveledCompactionStrategy'} AND
   compression={'sstable_compression': 'LZ4Compressor'};
 {code}
 h5. Use case
 Each row (defined by a domainid) can have many many columns (bounce entries) 
 so rows can get pretty wide. In practice, most of the rows are not that big 
 but some of them contain hundreds of thousands and even millions of columns.
 Columns are not TTL'ed but can be deleted using the following CQL3 statement:
 {code}
 delete from bounces where domainid = 'domain.com' and address = 
 'al...@example.com';
 {code}
 All queries are performed using LOCAL_QUORUM CL.
 h5. Problem
 We weren't very diligent about running repairs on the cluster initially, but 
 shorty after we started doing it we noticed that some of previously deleted 
 columns (bounce entries) are there again, as if tombstones have disappeared.
 I have run this test multiple times via cqlsh, on the row of the customer who 
 originally reported the issue:
 * delete an entry
 * verify it's not returned even with CL=ALL
 * run repair on nodes that own this row's key
 * the columns reappear and are returned even with CL=ALL
 I tried the same test on another row with much less data and everything was 
 correctly deleted and didn't reappear after repair.
 h5. Other steps I've taken so far
 Made sure NTP is running on all servers and clocks are synchronized.
 Increased gc_grace_seconds to 100 days, ran full repair (on the affected 
 keyspace) on all nodes, then changed it back to the default 10 days again. 
 Didn't help.
 Performed one more test. Updated one of the resurrected columns, then deleted 
 it and ran repair again. This time the updated version of the column 
 reappeared.
 Finally, I noticed these log entries for the row in question:
 {code}
 INFO [ValidationExecutor:77] 2015-03-25 20:27:43,936 
 CompactionController.java (line 192) Compacting large row 
 blackbook/bounces:4ed558feba8a483733001d6a (279067683 bytes) incrementally
 {code}
 Figuring it may be related I bumped in_memory_compaction_limit_in_mb to 
 512MB so the row fits into it, deleted the entry and ran repair once again. 
 The log entry for this row was gone and the columns didn't reappear.
 We have a lot of rows much larger than 512MB so can't increase this 
 parameters forever, if that is the issue.
 Please let me know if you need more information on the case or if I can run 
 more experiments.
 Thanks!
 Roman



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


[jira] [Resolved] (CASSANDRA-8091) Stress tool creates too large batches

2015-04-02 Thread Benedict (JIRA)

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

Benedict resolved CASSANDRA-8091.
-
Resolution: Not a Problem

No, it was ninja-fixed by [~tjake] a few days before this ticket was filed

 Stress tool creates too large batches
 -

 Key: CASSANDRA-8091
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8091
 Project: Cassandra
  Issue Type: Bug
Reporter: Carl Yeksigian
  Labels: stress

 With CASSANDRA-8011, the stress tool now gets exceptions because its batches 
 are too large. We should change the default behaviour to not create batches 
 so large, probably using individual inserts instead of an unlogged batch.



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


[jira] [Created] (CASSANDRA-9096) Improve ByteBuffer compression interface

2015-04-02 Thread Branimir Lambov (JIRA)
Branimir Lambov created CASSANDRA-9096:
--

 Summary: Improve ByteBuffer compression interface
 Key: CASSANDRA-9096
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9096
 Project: Cassandra
  Issue Type: Improvement
Reporter: Branimir Lambov
 Fix For: 3.0


Now that we have a few uses of compression/decompression on ByteBuffers it is 
time to finalize the interface before it becomes set in stone with 3.0. The 
current code has some shortcomings:
- The interface uses the buffers' positions and limits instead of accepting 
offset and length as parameters. This necessitates that the buffers be 
duplicated before they can be compressed for thread-safety, something that adds 
burden to the caller, is prone to being forgotten, and we could generally do 
without for performance.
- The direct/non-direct buffer support needs to be more clearly defined. The 
current {{useDirectOutputByteBuffers}} is not named well.
- If we don't want to support non-direct buffers everywhere as a fallback, we 
should clearly state the decision and rationale.
- How should {{WrappedByteBuffer}} treat direct/indirect buffers?
- More testing is necessary as e.g. errors in {{DeflateCompressor}} were only 
caught in CASSANDRA-6809.




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


[jira] [Commented] (CASSANDRA-8828) Counter of ALLOW FILTERING queries

2015-04-02 Thread Chris Lohfink (JIRA)

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

Chris Lohfink commented on CASSANDRA-8828:
--

If the limiting usage is sufficient I can (or anyone else can) mark this as a 
duplicate. I guess the only advantage to having this is in the case of 
debugging a slow system that isn't necessarily under their control.

Having the ability to disallow the filtering would be good for admins trying to 
control their devs, but for people going into a new situation (ie 
consultants/support folks) theres no way to check if someone is doing any 
filtering other than walking through codebase or disallowing it and seeing if 
the production environment starts failing. 

A bonus here is we can include in the counter the number of results that were 
filtered (or a ratio of filtered vs kept) through to see how effective or 
ineffective the ALLOW FILTERING queries are in the particular use case.

 Counter of ALLOW FILTERING queries
 --

 Key: CASSANDRA-8828
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8828
 Project: Cassandra
  Issue Type: New Feature
  Components: Core
Reporter: Chris Lohfink
Priority: Trivial

 Having a counter of requests that use allow filtering could be something to 
 check to make sure a cluster is not using dangerous queries in production.



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


cassandra git commit: use long math for long results

2015-04-02 Thread dbrosius
Repository: cassandra
Updated Branches:
  refs/heads/trunk 910170c9d - 2bf60356c


use long math for long results


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

Branch: refs/heads/trunk
Commit: 2bf60356c61f87891b021b2f6ba3f8e46f135f13
Parents: 910170c
Author: Dave Brosius dbros...@mebigfatguy.com
Authored: Fri Apr 3 00:25:06 2015 -0400
Committer: Dave Brosius dbros...@mebigfatguy.com
Committed: Fri Apr 3 00:25:06 2015 -0400

--
 src/java/org/apache/cassandra/db/compaction/SSTableSplitter.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/2bf60356/src/java/org/apache/cassandra/db/compaction/SSTableSplitter.java
--
diff --git a/src/java/org/apache/cassandra/db/compaction/SSTableSplitter.java 
b/src/java/org/apache/cassandra/db/compaction/SSTableSplitter.java
index 4b48462..8d7b0e9 100644
--- a/src/java/org/apache/cassandra/db/compaction/SSTableSplitter.java
+++ b/src/java/org/apache/cassandra/db/compaction/SSTableSplitter.java
@@ -75,7 +75,7 @@ public class SSTableSplitter {
 @Override
 public CompactionAwareWriter 
getCompactionAwareWriter(ColumnFamilyStore cfs, SetSSTableReader allSSTables, 
SetSSTableReader nonExpiredSSTables)
 {
-return new MaxSSTableSizeWriter(cfs, sstables, nonExpiredSSTables, 
sstableSizeInMB * 1024 * 1024, 0, true, compactionType);
+return new MaxSSTableSizeWriter(cfs, sstables, nonExpiredSSTables, 
sstableSizeInMB * 1024L * 1024L, 0, true, compactionType);
 }
 
 @Override



cassandra git commit: make inner SplittingCompactionTask static

2015-04-02 Thread dbrosius
Repository: cassandra
Updated Branches:
  refs/heads/trunk 2bf60356c - 868457de2


make inner SplittingCompactionTask static


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

Branch: refs/heads/trunk
Commit: 868457de21388f224f7c0e871f1fa4aa7a9f7146
Parents: 2bf6035
Author: Dave Brosius dbros...@mebigfatguy.com
Authored: Fri Apr 3 00:30:56 2015 -0400
Committer: Dave Brosius dbros...@mebigfatguy.com
Committed: Fri Apr 3 00:30:56 2015 -0400

--
 .../cassandra/db/compaction/SizeTieredCompactionStrategy.java  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/868457de/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java
--
diff --git 
a/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java 
b/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java
index 7113c65..288133b 100644
--- 
a/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java
+++ 
b/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java
@@ -336,7 +336,7 @@ public class SizeTieredCompactionStrategy extends 
AbstractCompactionStrategy
 cfs.getMaximumCompactionThreshold());
 }
 
-private class SplittingCompactionTask extends CompactionTask
+private static class SplittingCompactionTask extends CompactionTask
 {
 public SplittingCompactionTask(ColumnFamilyStore cfs, 
IterableSSTableReader sstables, int gcBefore, boolean offline)
 {



[jira] [Commented] (CASSANDRA-7557) User permissions for UDFs

2015-04-02 Thread Sam Tunnicliffe (JIRA)

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

Sam Tunnicliffe commented on CASSANDRA-7557:


I've pushed a preliminary version 
[here|https://github.com/beobal/cassandra/tree/7557] which depends on 
CASSANDRA-9037 (and so transitively on 
https://datastax-oss.atlassian.net/browse/JAVA-700).

These changes touch a lot of classes, but in most cases they're rather trivial. 
Aside from the basic machinery around the {{IResource}} hierarchy and 
granting/revoking of permissions, the bulk of the changes pertain to two things:

* Identifying all of the functions involved in the execution of a CQL statement
* Passing some context information into the preparation step which transforms 
raw terms into their prepared equivalents

The former is to enable us to check at execution time that the logged in user 
has sufficient permissions to execute a given statement. As there are many 
places in the class hierarchy of {{SelectStatement}} and 
{{ModificationStatement}} where a {{FunctionCall}} might be, I added a method 
{{IterableFunction getFunctions()}} to a number of classes  interfaces. The 
result is that at the top level, in {{checkAccess()}}, we can extract a list of 
all the functions involved in the execution and check the user's permissions on 
each of them. I took guidance from the existing {{usesFunction}} method, which 
determines prepared statements that need to be removed from cache when a 
function is dropped. Also, I used the code coverage check to verify that I'd 
hit all the places where a function might be used, but it is possible that I 
missed some.

Not all functions get evaluated at execution time however. A pure function with 
only terminal arguments is executed at prepare time, hence the addition of the 
{{PreparationContext}} argument to {{Term.Raw#prepare}}. This is (currently) 
just a wrapper around a {{ClientState}} instance which enables us to do the 
permissions check before executing terminal functions (in 
{{FunctionCall.Raw#execute}}). The unfortunate effect of this is that it 
cascades down to every {{Term.Raw}} implementation, most of which currently do 
nothing with it. The only alternative I could come up with was to defer 
execution of terminal functions depending on the configured {{IAuthorizer}}, 
but tbh that seemed worse.

h4.Permissions

This introduces a new {{EXECUTE}} permission, which is fairly self explanatory. 
Aside from the obvious though, {{EXECUTE}} is also required on a scalar 
function when defining it as either the state or final function in an 
aggregate. So to run 
{code}
CREATE AGGREGATE ks.aggregate_func(int)
SFUNC state_func
STYPE int
FINALFUNCTION final_func
INITCOND 0
{code}
would require {{EXECUTE}} on both {{state_func}} and {{final_func}}. 

In addition, any user who actually run a statement using {{aggregate_func}} 
will require {{EXECUTE}} on {{state_func}}, {{final_func}} and 
{{aggregate_func}}.

The exception to this is that native functions, those in the {{system}} 
keyspace do not require {{EXECUTE}}. So {{token()}}, {{now()}}, {{uuid}} and 
{{timeuuid}} functions, plus the various type conversion functions 
{{Xasblob()}} and {{blobasX()}} remain available by all users.

h4.FunctionResource

In order to apply permissions to UDFs and Aggregates, I've added a new 
{{IResource}} implementation, {{FunctionResource}}

The hierarchy for {{FunctionResource}} looks like:
{code}
 all functions   - root level resource representing all 
functions defined across every keyspace
 all functions in ks - keyspace level resource to apply 
permissions to all functions within a keyspace
 function ks.function(arg_types) - a specific function, scoped to a specific 
keyspace
{code}

The Collection types support {{CREATE}}, {{ALTER}}, {{DROP}}, {{AUTHORIZE}} and 
{{EXECUTE}} permissions, while individual functions support
{{ALTER}}, {{DROP}}, {{AUTHORIZE}} and {{EXECUTE}} (i.e. it doesn't make sense 
to grant {{CREATE}} on an existing function).

The fact that we use a distinct resource hierarchy makes it possible seperate 
{{CREATE TABLE|INDEX}} privileges from {{CREATE FUNCTION|AGGREGATE}}. In turn, 
this has a couple of effects.

* {{CREATE}} on a keyspace (or {{ALL KEYSPACES}}) is no longer sufficient to 
create new functions/aggregates.
* The perms automatically granted to creators of db objects (CASSANDRA-7216) 
have been extended to include the new {{FunctionResource}} representing all 
functions in that keyspace. The upshot is that if you create a keyspace, you 
have rights to create functions in it (and/or grant those rights to other 
roles).

h4.Syntax
{code:title=Grant/Revoke permissions on a specific function}
GRANT EXECUTE ON test_ks.some_func(int, int, text) TO my_role
REVOKE EXECUTE ON test_ks.some_func(int, int, text) FROM my_role
{code}


[jira] [Commented] (CASSANDRA-9097) Repeated incremental nodetool repair results in failed repairs due to running anticompaction

2015-04-02 Thread Gustav Munkby (JIRA)

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

Gustav Munkby commented on CASSANDRA-9097:
--

Sorry, I'm on Cassandra 2.1.3

 Repeated incremental nodetool repair results in failed repairs due to running 
 anticompaction
 

 Key: CASSANDRA-9097
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9097
 Project: Cassandra
  Issue Type: Bug
Reporter: Gustav Munkby
Assignee: Yuki Morishita
Priority: Minor
 Fix For: 2.1.5


 I'm trying to synchronize incremental repairs over multiple nodes in a 
 Cassandra cluster, and it does not seem to easily achievable.
 In principle, the process iterates through the nodes of the cluster and 
 performs `nodetool -h $NODE repair --incremental`, but that sometimes fails 
 on subsequent nodes. The reason for failing seems to be that the repair 
 returns as soon as the repair and the _local_ anticompaction has completed, 
 but does not guarantee that remote anticompactions are complete. If I 
 subsequently try to issue another repair command, they fail to start (and 
 terminate with failure after about one minute). It usually isn't a problem, 
 as the local anticompaction typically involves as much (or more) data as the 
 remote ones, but sometimes not.



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


[jira] [Updated] (CASSANDRA-9056) Tombstoned SSTables are not removed past max_sstable_age_days when using DTCS

2015-04-02 Thread Jim Plush (JIRA)

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

Jim Plush updated CASSANDRA-9056:
-
Attachment: Screenshot 2015-04-02 08.23.41.png

attaching screenshot, with patch applied to one box of 3 test boxes it 
immediately cleaned up expired data
works!

 Tombstoned SSTables are not removed past max_sstable_age_days when using DTCS
 -

 Key: CASSANDRA-9056
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9056
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Shawn Kumar
Assignee: Marcus Eriksson
  Labels: compaction, dtcs
 Fix For: 3.0, 2.0.15, 2.1.5

 Attachments: Screenshot 2015-04-02 08.23.41.png


 When using DTCS, tombstoned sstables past max_sstable_age_days are not 
 removed by minor compactions. I was able to reproduce this manually and also 
 wrote a dtest (currently failing) which reproduces this issue: 
 [dtcs_deletion_test|https://github.com/riptano/cassandra-dtest/blob/master/compaction_test.py#L115]
  in compaction_test.py. I tried applying the patch in CASSANDRA-8359 but 
 found that the test still fails with the same issue.



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


[jira] [Updated] (CASSANDRA-8348) allow takeColumnFamilySnapshot to take a list of ColumnFamilies

2015-04-02 Thread Sachin Janani (JIRA)

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

Sachin Janani updated CASSANDRA-8348:
-
Attachment: 8348_v2.patch

Updated Patch

 allow takeColumnFamilySnapshot to take a list of ColumnFamilies
 ---

 Key: CASSANDRA-8348
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8348
 Project: Cassandra
  Issue Type: Improvement
Reporter: Peter Halliday
Priority: Minor
 Fix For: 2.1.5

 Attachments: 8348_v2.patch, Patch-8348.patch


 Within StorageServiceMBean.java the function takeSnapshot allows for a list 
 of keyspaces to snapshot.  However, the function takeColumnFamilySnapshot 
 only allows for a single ColumnFamily to snapshot.  This should allow for 
 multiple ColumnFamilies within the same Keyspace.



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


[jira] [Updated] (CASSANDRA-9092) Nodes in DC2 die during and after huge write workload

2015-04-02 Thread Sergey Maznichenko (JIRA)

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

Sergey Maznichenko updated CASSANDRA-9092:
--
Description: 
Hello,

We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
Node is VM 8 CPU, 32GB RAM
During significant workload (loading several millions blobs ~3.5MB each), 1 
node in DC2 stops and after some time next 2 nodes in DC2 also stops.
Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. I 
see many files in system.hints table and error appears in 2-3 minutes after 
starting system.hints auto compaction.

Stops, means ERROR [CompactionExecutor:1] 2015-04-01 23:33:44,456 
CassandraDaemon.java:153 - Exception in thread 
Thread[CompactionExecutor:1,1,main]
java.lang.OutOfMemoryError: Java heap space

ERROR [HintedHandoff:1] 2015-04-01 23:33:44,456 CassandraDaemon.java:153 - 
Exception in thread Thread[HintedHandoff:1,1,main]
java.lang.RuntimeException: java.util.concurrent.ExecutionException: 
java.lang.OutOfMemoryError: Java heap space


Full errors listing attached in cassandra_crash1.txt

The problem exists only in DC2. We have 1GbE between DC1 and DC2.




  was:
Hello,

We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
Node is VM 8 CPU, 32GB RAM
During significant workload (loading several millions blobs ~3.5MB each), 1 
node in DC2 stops and after some time next 2 nodes in DC2 also stops.
Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. I 
see many files in system.hints table and error appears in 2-3 minutes after 
starting system.hints auto compaction.

Stops, means ERROR [CompactionExecutor:1] 2015-04-01 23:33:44,456 
CassandraDaemon.java:153 - Exception in thread 
Thread[CompactionExecutor:1,1,main]
java.lang.OutOfMemoryError: Java heap space

Full errors listing attached in cassandra_crash1.txt

The problem exists only in DC2. We have 1GbE between DC1 and DC2.





 Nodes in DC2 die during and after huge write workload
 -

 Key: CASSANDRA-9092
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9092
 Project: Cassandra
  Issue Type: Bug
 Environment: CentOS 6.2 64-bit, Cassandra 2.1.2, 
 java version 1.7.0_71
 Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
 Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
Reporter: Sergey Maznichenko
 Fix For: 2.1.5

 Attachments: cassandra_crash1.txt


 Hello,
 We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
 Node is VM 8 CPU, 32GB RAM
 During significant workload (loading several millions blobs ~3.5MB each), 1 
 node in DC2 stops and after some time next 2 nodes in DC2 also stops.
 Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. 
 I see many files in system.hints table and error appears in 2-3 minutes after 
 starting system.hints auto compaction.
 Stops, means ERROR [CompactionExecutor:1] 2015-04-01 23:33:44,456 
 CassandraDaemon.java:153 - Exception in thread 
 Thread[CompactionExecutor:1,1,main]
 java.lang.OutOfMemoryError: Java heap space
 ERROR [HintedHandoff:1] 2015-04-01 23:33:44,456 CassandraDaemon.java:153 - 
 Exception in thread Thread[HintedHandoff:1,1,main]
 java.lang.RuntimeException: java.util.concurrent.ExecutionException: 
 java.lang.OutOfMemoryError: Java heap space
 Full errors listing attached in cassandra_crash1.txt
 The problem exists only in DC2. We have 1GbE between DC1 and DC2.



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


[jira] [Created] (CASSANDRA-9099) Validation compaction not working for parallel repair

2015-04-02 Thread Yuki Morishita (JIRA)
Yuki Morishita created CASSANDRA-9099:
-

 Summary: Validation compaction not working for parallel repair
 Key: CASSANDRA-9099
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9099
 Project: Cassandra
  Issue Type: Bug
Reporter: Yuki Morishita
Assignee: Yuki Morishita
 Fix For: 3.0
 Attachments: 0001-Fix-wrong-check-when-validating-in-parallel.patch

Because boundary check is inverse, we are validating wrong SSTables.
This is only for trunk.



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


[jira] [Updated] (CASSANDRA-9097) Repeated incremental nodetool repair results in failed repairs due to running anticompaction

2015-04-02 Thread Philip Thompson (JIRA)

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

Philip Thompson updated CASSANDRA-9097:
---
Reproduced In: 2.1.3

 Repeated incremental nodetool repair results in failed repairs due to running 
 anticompaction
 

 Key: CASSANDRA-9097
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9097
 Project: Cassandra
  Issue Type: Bug
Reporter: Gustav Munkby
Assignee: Yuki Morishita
Priority: Minor
 Fix For: 2.1.5


 I'm trying to synchronize incremental repairs over multiple nodes in a 
 Cassandra cluster, and it does not seem to easily achievable.
 In principle, the process iterates through the nodes of the cluster and 
 performs `nodetool -h $NODE repair --incremental`, but that sometimes fails 
 on subsequent nodes. The reason for failing seems to be that the repair 
 returns as soon as the repair and the _local_ anticompaction has completed, 
 but does not guarantee that remote anticompactions are complete. If I 
 subsequently try to issue another repair command, they fail to start (and 
 terminate with failure after about one minute). It usually isn't a problem, 
 as the local anticompaction typically involves as much (or more) data as the 
 remote ones, but sometimes not.



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


[jira] [Commented] (CASSANDRA-9098) Anticompactions not visible in nodetool compactionstats

2015-04-02 Thread Gustav Munkby (JIRA)

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

Gustav Munkby commented on CASSANDRA-9098:
--

This is on Cassandra 2.1.3, by the way.

 Anticompactions not visible in nodetool compactionstats
 ---

 Key: CASSANDRA-9098
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9098
 Project: Cassandra
  Issue Type: Bug
Reporter: Gustav Munkby
Assignee: Marcus Eriksson
Priority: Minor
 Fix For: 2.1.5


 There seems to be no way to monitor the progress of anticompactions except 
 parsing the logs (which incidentally is quite complicated).



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


[jira] [Commented] (CASSANDRA-8348) allow takeColumnFamilySnapshot to take a list of ColumnFamilies

2015-04-02 Thread Sachin Janani (JIRA)

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

Sachin Janani commented on CASSANDRA-8348:
--

[~nickmbailey] I have created the new patch using latest code from trunk and 
also removed the redundant calls to *getValidKeySpace*. Also I think the 
imports should be managed properly and unnecessary imports should be avoided.Do 
you want me to remove it? Whats your opinion?

 allow takeColumnFamilySnapshot to take a list of ColumnFamilies
 ---

 Key: CASSANDRA-8348
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8348
 Project: Cassandra
  Issue Type: Improvement
Reporter: Peter Halliday
Priority: Minor
 Fix For: 2.1.5

 Attachments: 8348_v2.patch, Patch-8348.patch


 Within StorageServiceMBean.java the function takeSnapshot allows for a list 
 of keyspaces to snapshot.  However, the function takeColumnFamilySnapshot 
 only allows for a single ColumnFamily to snapshot.  This should allow for 
 multiple ColumnFamilies within the same Keyspace.



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


[jira] [Updated] (CASSANDRA-9056) Tombstoned SSTables are not removed past max_sstable_age_days when using DTCS

2015-04-02 Thread Brandon Williams (JIRA)

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

Brandon Williams updated CASSANDRA-9056:

Fix Version/s: (was: 2.0.14)
   (was: 2.1.4)
   2.1.5
   2.0.15

 Tombstoned SSTables are not removed past max_sstable_age_days when using DTCS
 -

 Key: CASSANDRA-9056
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9056
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Shawn Kumar
Assignee: Marcus Eriksson
  Labels: compaction, dtcs
 Fix For: 3.0, 2.0.15, 2.1.5


 When using DTCS, tombstoned sstables past max_sstable_age_days are not 
 removed by minor compactions. I was able to reproduce this manually and also 
 wrote a dtest (currently failing) which reproduces this issue: 
 [dtcs_deletion_test|https://github.com/riptano/cassandra-dtest/blob/master/compaction_test.py#L115]
  in compaction_test.py. I tried applying the patch in CASSANDRA-8359 but 
 found that the test still fails with the same issue.



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


[jira] [Comment Edited] (CASSANDRA-8336) Quarantine nodes after receiving the gossip shutdown message

2015-04-02 Thread Brandon Williams (JIRA)

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

Brandon Williams edited comment on CASSANDRA-8336 at 4/2/15 1:12 PM:
-

After wrestling with exceptions for a bit, I came up with a simpler solution.  
Gossiper's stop() can examine the local state itself, and skip shutdown 
announcement if it doesn't exist.  We still need stopSilently (which I renamed 
in this patch from stopForLeaving) for cases like decom, where we aren't coming 
back and don't want to mutate our state on shutdown.


was (Author: brandon.williams):
After wrestling with exceptions for a bit, I came up with a simpler solution.  
Gossiper's stop() can examine the local state itself, and skip shutdown 
announcement if it doesn't exist.  We still need stopSilently (which I renamed 
in this patch from stopForLeaving) for cases like decom, where we aren't coming 
back and don't wait to mutate our state on shutdown.

 Quarantine nodes after receiving the gossip shutdown message
 

 Key: CASSANDRA-8336
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8336
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Brandon Williams
Assignee: Brandon Williams
 Fix For: 2.0.15

 Attachments: 8336-v2.txt, 8336-v3.txt, 8336-v4.txt, 8336.txt


 In CASSANDRA-3936 we added a gossip shutdown announcement.  The problem here 
 is that this isn't sufficient; you can still get TOEs and have to wait on the 
 FD to figure things out.  This happens due to gossip propagation time and 
 variance; if node X shuts down and sends the message to Y, but Z has a 
 greater gossip version than Y for X and has not yet received the message, it 
 can initiate gossip with Y and thus mark X alive again.  I propose 
 quarantining to solve this, however I feel it should be a -D parameter you 
 have to specify, so as not to destroy current dev and test practices, since 
 this will mean a node that shuts down will not be able to restart until the 
 quarantine expires.



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


[jira] [Updated] (CASSANDRA-9092) Nodes in DC2 die during and after huge write workload

2015-04-02 Thread Sergey Maznichenko (JIRA)

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

Sergey Maznichenko updated CASSANDRA-9092:
--
Description: 
Hello,

We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
Node is VM 8 CPU, 32GB RAM
During significant workload (loading several millions blobs ~3.5MB each), 1 
node in DC2 stops and after some time next 2 nodes in DC2 also stops.
Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. I 
see many files in system.hints table and error appears in 2-3 minutes after 
starting system.hints auto compaction.

Stops, means ERROR [CompactionExecutor:1] 2015-04-01 23:33:44,456 
CassandraDaemon.java:153 - Exception in thread 
Thread[CompactionExecutor:1,1,main]
java.lang.OutOfMemoryError: Java heap space

The problem exists only in DC2. We have 1GbE between DC1 and DC2.




  was:
Hello,

We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
Node is VM 8 CPU, 32GB RAM
During significant workload (loading several millions blobs ~3.5MB each), 1 
node in DC2 stops and after some time next 2 nodes in DC2 also stops.
Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. I 
see many files in system.hints table and error appears in 2-3 minutes after 
starting system.hints auto compaction.

The problem exists only in DC2. We have 1GbE between DC1 and DC2.





 Nodes in DC2 die during and after huge write workload
 -

 Key: CASSANDRA-9092
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9092
 Project: Cassandra
  Issue Type: Bug
 Environment: CentOS 6.2 64-bit, Cassandra 2.1.2, 
 java version 1.7.0_71
 Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
 Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
Reporter: Sergey Maznichenko
 Fix For: 2.1.5

 Attachments: cassandra_crash1.txt


 Hello,
 We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
 Node is VM 8 CPU, 32GB RAM
 During significant workload (loading several millions blobs ~3.5MB each), 1 
 node in DC2 stops and after some time next 2 nodes in DC2 also stops.
 Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. 
 I see many files in system.hints table and error appears in 2-3 minutes after 
 starting system.hints auto compaction.
 Stops, means ERROR [CompactionExecutor:1] 2015-04-01 23:33:44,456 
 CassandraDaemon.java:153 - Exception in thread 
 Thread[CompactionExecutor:1,1,main]
 java.lang.OutOfMemoryError: Java heap space
 The problem exists only in DC2. We have 1GbE between DC1 and DC2.



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


[jira] [Updated] (CASSANDRA-9092) Nodes in DC2 die during and after huge write workload

2015-04-02 Thread Sergey Maznichenko (JIRA)

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

Sergey Maznichenko updated CASSANDRA-9092:
--
Description: 
Hello,

We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
Node is VM 8 CPU, 32GB RAM
During significant workload (loading several millions blobs ~3.5MB each), 1 
node in DC2 stops and after some time next 2 nodes in DC2 also stops.
Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. I 
see many files in system.hints table and error appears in 2-3 minutes after 
starting system.hints auto compaction.

Stops, means ERROR [CompactionExecutor:1] 2015-04-01 23:33:44,456 
CassandraDaemon.java:153 - Exception in thread 
Thread[CompactionExecutor:1,1,main]
java.lang.OutOfMemoryError: Java heap space

Full errors listing attached in cassandra_crash1.txt

The problem exists only in DC2. We have 1GbE between DC1 and DC2.




  was:
Hello,

We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
Node is VM 8 CPU, 32GB RAM
During significant workload (loading several millions blobs ~3.5MB each), 1 
node in DC2 stops and after some time next 2 nodes in DC2 also stops.
Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. I 
see many files in system.hints table and error appears in 2-3 minutes after 
starting system.hints auto compaction.

Stops, means ERROR [CompactionExecutor:1] 2015-04-01 23:33:44,456 
CassandraDaemon.java:153 - Exception in thread 
Thread[CompactionExecutor:1,1,main]
java.lang.OutOfMemoryError: Java heap space

Full errors listing attached in 

The problem exists only in DC2. We have 1GbE between DC1 and DC2.





 Nodes in DC2 die during and after huge write workload
 -

 Key: CASSANDRA-9092
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9092
 Project: Cassandra
  Issue Type: Bug
 Environment: CentOS 6.2 64-bit, Cassandra 2.1.2, 
 java version 1.7.0_71
 Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
 Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
Reporter: Sergey Maznichenko
 Fix For: 2.1.5

 Attachments: cassandra_crash1.txt


 Hello,
 We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
 Node is VM 8 CPU, 32GB RAM
 During significant workload (loading several millions blobs ~3.5MB each), 1 
 node in DC2 stops and after some time next 2 nodes in DC2 also stops.
 Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. 
 I see many files in system.hints table and error appears in 2-3 minutes after 
 starting system.hints auto compaction.
 Stops, means ERROR [CompactionExecutor:1] 2015-04-01 23:33:44,456 
 CassandraDaemon.java:153 - Exception in thread 
 Thread[CompactionExecutor:1,1,main]
 java.lang.OutOfMemoryError: Java heap space
 Full errors listing attached in cassandra_crash1.txt
 The problem exists only in DC2. We have 1GbE between DC1 and DC2.



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


[jira] [Updated] (CASSANDRA-9092) Nodes in DC2 die during and after huge write workload

2015-04-02 Thread Sergey Maznichenko (JIRA)

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

Sergey Maznichenko updated CASSANDRA-9092:
--
Description: 
Hello,

We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
Node is VM 8 CPU, 32GB RAM
During significant workload (loading several millions blobs ~3.5MB each), 1 
node in DC2 stops and after some time next 2 nodes in DC2 also stops.
Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. I 
see many files in system.hints table and error appears in 2-3 minutes after 
starting system.hints auto compaction.

Stops, means ERROR [CompactionExecutor:1] 2015-04-01 23:33:44,456 
CassandraDaemon.java:153 - Exception in thread 
Thread[CompactionExecutor:1,1,main]
java.lang.OutOfMemoryError: Java heap space

Full errors listing attached in 

The problem exists only in DC2. We have 1GbE between DC1 and DC2.




  was:
Hello,

We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
Node is VM 8 CPU, 32GB RAM
During significant workload (loading several millions blobs ~3.5MB each), 1 
node in DC2 stops and after some time next 2 nodes in DC2 also stops.
Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. I 
see many files in system.hints table and error appears in 2-3 minutes after 
starting system.hints auto compaction.

Stops, means ERROR [CompactionExecutor:1] 2015-04-01 23:33:44,456 
CassandraDaemon.java:153 - Exception in thread 
Thread[CompactionExecutor:1,1,main]
java.lang.OutOfMemoryError: Java heap space

The problem exists only in DC2. We have 1GbE between DC1 and DC2.





 Nodes in DC2 die during and after huge write workload
 -

 Key: CASSANDRA-9092
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9092
 Project: Cassandra
  Issue Type: Bug
 Environment: CentOS 6.2 64-bit, Cassandra 2.1.2, 
 java version 1.7.0_71
 Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
 Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
Reporter: Sergey Maznichenko
 Fix For: 2.1.5

 Attachments: cassandra_crash1.txt


 Hello,
 We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
 Node is VM 8 CPU, 32GB RAM
 During significant workload (loading several millions blobs ~3.5MB each), 1 
 node in DC2 stops and after some time next 2 nodes in DC2 also stops.
 Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. 
 I see many files in system.hints table and error appears in 2-3 minutes after 
 starting system.hints auto compaction.
 Stops, means ERROR [CompactionExecutor:1] 2015-04-01 23:33:44,456 
 CassandraDaemon.java:153 - Exception in thread 
 Thread[CompactionExecutor:1,1,main]
 java.lang.OutOfMemoryError: Java heap space
 Full errors listing attached in 
 The problem exists only in DC2. We have 1GbE between DC1 and DC2.



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


[jira] [Updated] (CASSANDRA-8979) MerkleTree mismatch for deleted and non-existing rows

2015-04-02 Thread Stefan Podkowinski (JIRA)

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

Stefan Podkowinski updated CASSANDRA-8979:
--
Attachment: 8979-RevertPrecompactedRow-2.0.txt
8979-LazilyCompactedRow-2.0.txt

 MerkleTree mismatch for deleted and non-existing rows
 -

 Key: CASSANDRA-8979
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8979
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Stefan Podkowinski
Assignee: Stefan Podkowinski
 Fix For: 2.1.5

 Attachments: 8979-AvoidBufferAllocation-2.0_patch.txt, 
 8979-LazilyCompactedRow-2.0.txt, 8979-RevertPrecompactedRow-2.0.txt, 
 cassandra-2.0-8979-lazyrow_patch.txt, cassandra-2.0-8979-validator_patch.txt, 
 cassandra-2.0-8979-validatortest_patch.txt, 
 cassandra-2.1-8979-lazyrow_patch.txt, cassandra-2.1-8979-validator_patch.txt


 Validation compaction will currently create different hashes for rows that 
 have been deleted compared to nodes that have not seen the rows at all or 
 have already compacted them away. 
 In case this sounds familiar to you, see CASSANDRA-4905 which was supposed to 
 prevent hashing of expired tombstones. This still seems to be in place, but 
 does not address the issue completely. Or there was a change in 2.0 that 
 rendered the patch ineffective. 
 The problem is that rowHash() in the Validator will return a new hash in any 
 case, whether the PrecompactedRow did actually update the digest or not. This 
 will lead to the case that a purged, PrecompactedRow will not change the 
 digest, but we end up with a different tree compared to not having rowHash 
 called at all (such as in case the row already doesn't exist).
 As an implication, repair jobs will constantly detect mismatches between 
 older sstables containing purgable rows and nodes that have already compacted 
 these rows. After transfering the reported ranges, the newly created sstables 
 will immediately get deleted again during the following compaction. This will 
 happen for each repair run over again until the sstable with the purgable row 
 finally gets compacted. 



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


[jira] [Commented] (CASSANDRA-8979) MerkleTree mismatch for deleted and non-existing rows

2015-04-02 Thread Stefan Podkowinski (JIRA)

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

Stefan Podkowinski commented on CASSANDRA-8979:
---

Yes, I guess the implications for clusters running mixed versions haven't been 
really considered. I've added a new patch which makes sure the digest 
calculation for non-empty rows will stay the same after the patch.

Changes in detail:

PrecompactedRow

Would be reverted to exact same code as before the patch. 
The issue described in the ticket would still be solved by the patched 
Validator, which now only creates a new RowHash in case the digest has been 
updated. The PrecompactRow never updated the digest in case of empty rows. 


LazilyCompactedRow

I've changed the digest update call condition to: nonEmpty || !DeletionTime.LIVE
this makes sure that digest update is called in any case for non-empty rows 
(and will thus be backwards compatible) but still skips update for empty rows 
with LIVE deletes.

As for backwards compatability it still should be clear that after the patch 
empty/purged rows will now not create a digest in the MT anymore compared to 
versions before the patch. In this case those rows would still be streamed 
after repairs. This applies to both Precompacted and Lazy. One node with the 
new version would create the same mismatch as a node with the old version and a 
missing row.


 MerkleTree mismatch for deleted and non-existing rows
 -

 Key: CASSANDRA-8979
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8979
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Stefan Podkowinski
Assignee: Stefan Podkowinski
 Fix For: 2.1.5

 Attachments: 8979-AvoidBufferAllocation-2.0_patch.txt, 
 8979-LazilyCompactedRow-2.0.txt, 8979-RevertPrecompactedRow-2.0.txt, 
 cassandra-2.0-8979-lazyrow_patch.txt, cassandra-2.0-8979-validator_patch.txt, 
 cassandra-2.0-8979-validatortest_patch.txt, 
 cassandra-2.1-8979-lazyrow_patch.txt, cassandra-2.1-8979-validator_patch.txt


 Validation compaction will currently create different hashes for rows that 
 have been deleted compared to nodes that have not seen the rows at all or 
 have already compacted them away. 
 In case this sounds familiar to you, see CASSANDRA-4905 which was supposed to 
 prevent hashing of expired tombstones. This still seems to be in place, but 
 does not address the issue completely. Or there was a change in 2.0 that 
 rendered the patch ineffective. 
 The problem is that rowHash() in the Validator will return a new hash in any 
 case, whether the PrecompactedRow did actually update the digest or not. This 
 will lead to the case that a purged, PrecompactedRow will not change the 
 digest, but we end up with a different tree compared to not having rowHash 
 called at all (such as in case the row already doesn't exist).
 As an implication, repair jobs will constantly detect mismatches between 
 older sstables containing purgable rows and nodes that have already compacted 
 these rows. After transfering the reported ranges, the newly created sstables 
 will immediately get deleted again during the following compaction. This will 
 happen for each repair run over again until the sstable with the purgable row 
 finally gets compacted. 



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


[jira] [Created] (CASSANDRA-9097) Repeated incremental nodetool repair results in failed repairs due to running anticompaction

2015-04-02 Thread Gustav Munkby (JIRA)
Gustav Munkby created CASSANDRA-9097:


 Summary: Repeated incremental nodetool repair results in failed 
repairs due to running anticompaction
 Key: CASSANDRA-9097
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9097
 Project: Cassandra
  Issue Type: Bug
Reporter: Gustav Munkby
Priority: Minor


I'm trying to synchronize incremental repairs over multiple nodes in a 
Cassandra cluster, and it does not seem to easily achievable.

In principle, the process iterates through the nodes of the cluster and 
performs `nodetool -h $NODE repair --incremental`, but that sometimes fails on 
subsequent nodes. The reason for failing seems to be that the repair returns as 
soon as the repair and the _local_ anticompaction has completed, but does not 
guarantee that remote anticompactions are complete. If I subsequently try to 
issue another repair command, they fail to start (and terminate with failure 
after about one minute). It usually isn't a problem, as the local 
anticompaction typically involves as much (or more) data as the remote ones, 
but sometimes not.



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


[jira] [Updated] (CASSANDRA-9098) Anticompactions not visible in nodetool compactionstats

2015-04-02 Thread Philip Thompson (JIRA)

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

Philip Thompson updated CASSANDRA-9098:
---
Fix Version/s: 2.1.5
 Assignee: Marcus Eriksson

 Anticompactions not visible in nodetool compactionstats
 ---

 Key: CASSANDRA-9098
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9098
 Project: Cassandra
  Issue Type: Bug
Reporter: Gustav Munkby
Assignee: Marcus Eriksson
Priority: Minor
 Fix For: 2.1.5


 There seems to be no way to monitor the progress of anticompactions except 
 parsing the logs (which incidentally is quite complicated).



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


[jira] [Commented] (CASSANDRA-9097) Repeated incremental nodetool repair results in failed repairs due to running anticompaction

2015-04-02 Thread Philip Thompson (JIRA)

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

Philip Thompson commented on CASSANDRA-9097:


What Cassandra version are you using?

 Repeated incremental nodetool repair results in failed repairs due to running 
 anticompaction
 

 Key: CASSANDRA-9097
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9097
 Project: Cassandra
  Issue Type: Bug
Reporter: Gustav Munkby
Priority: Minor
 Fix For: 2.1.5


 I'm trying to synchronize incremental repairs over multiple nodes in a 
 Cassandra cluster, and it does not seem to easily achievable.
 In principle, the process iterates through the nodes of the cluster and 
 performs `nodetool -h $NODE repair --incremental`, but that sometimes fails 
 on subsequent nodes. The reason for failing seems to be that the repair 
 returns as soon as the repair and the _local_ anticompaction has completed, 
 but does not guarantee that remote anticompactions are complete. If I 
 subsequently try to issue another repair command, they fail to start (and 
 terminate with failure after about one minute). It usually isn't a problem, 
 as the local anticompaction typically involves as much (or more) data as the 
 remote ones, but sometimes not.



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


[jira] [Commented] (CASSANDRA-9092) Nodes in DC2 die during and after huge write workload

2015-04-02 Thread Brandon Williams (JIRA)

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

Brandon Williams commented on CASSANDRA-9092:
-

Define stops because there should be some sort of error message, it won't 
just exit.

 Nodes in DC2 die during and after huge write workload
 -

 Key: CASSANDRA-9092
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9092
 Project: Cassandra
  Issue Type: Bug
 Environment: CentOS 6.2 64-bit, Cassandra 2.1.2, 
 java version 1.7.0_71
 Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
 Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
Reporter: Sergey Maznichenko
 Fix For: 2.1.5

 Attachments: cassandra_crash1.txt


 Hello,
 We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
 Node is VM 8 CPU, 32GB RAM
 During significant workload (loading several millions blobs ~3.5MB each), 1 
 node in DC2 stops and after some time next 2 nodes in DC2 also stops.
 Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. 
 I see many files in system.hints table and error appears in 2-3 minutes after 
 starting system.hints auto compaction.
 The problem exists only in DC2. We have 1GbE between DC1 and DC2.



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


[jira] [Comment Edited] (CASSANDRA-9092) Nodes in DC2 die during and after huge write workload

2015-04-02 Thread Sergey Maznichenko (JIRA)

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

Sergey Maznichenko edited comment on CASSANDRA-9092 at 4/2/15 10:19 AM:


Java heap is selected automatically in cassandra-env.sh. I tried to set 
MAX_HEAP_SIZE=8G, NEW_HEAP_SIZE=800M, but it didn't help.

nodetool disableautocompaction - didn't help, compactions continue after 
restart node.
nodetool truncatehints - didn't help, it showed message like 'cannot stop 
running hint compaction'.

One of nodes had ~24000 files in system\hints-..., I stepped node and deleted 
them, it helps and node is running about 10 hours. Other node has 18154 files 
in system\hints-... (~1.1TB) and has the same problem, I leave it for 
experiments.

Workload: 20-40 processes on application servers, each one performs loading 
files in blobs (one big table), size of each file is about 3.5MB, key - UUID.

CREATE KEYSPACE filespace WITH replication = {'class': 
'NetworkTopologyStrategy', 'DC1': '1', 'DC2': '1'}  AND durable_writes = true;

CREATE TABLE filespace.filestorage (
key text,
filename text,
value blob,
PRIMARY KEY (key, chunk)
) WITH COMPACT STORAGE
AND CLUSTERING ORDER BY (chunk ASC)
AND bloom_filter_fp_chance = 0.01
AND caching = '{keys:ALL, rows_per_partition:NONE}'
AND comment = ''
AND compaction = {'min_threshold': '4', 'class': 
'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 
'max_threshold': '32'}
AND compression = {'sstable_compression': 
'org.apache.cassandra.io.compress.LZ4Compressor'}
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99.0PERCENTILE';

nodetool status filespace
Datacenter: DC1
===
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address   Load   Tokens  Owns (effective)  Host ID  
 Rack
UN  10.X.X.12   4.82 TB256 28.0% 
25cefe6a-a9b1-4b30-839d-46ed5f4736cc  RAC1
UN  10.X.X.13   3.98 TB256 22.9% 
ef439686-1e8f-4b31-9c42-f49ff7a8b537  RAC1
UN  10.X.X.10   4.52 TB256 26.1% 
a11f52a6-1bff-4b47-bfa9-628a55a058dc  RAC1
UN  10.X.X.11   4.01 TB256 23.1% 
0f454fa7-5cdf-45b3-bf2d-729ab7bd9e52  RAC1
Datacenter: DC2
===
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address   Load   Tokens  Owns (effective)  Host ID  
 Rack
UN  10.X.X.137  4.64 TB256 22.6% 
e184cc42-7cd9-4e2e-bd0d-55a6a62f69dd  RAC1
UN  10.X.X.136  1.25 TB256 27.2% 
c8360341-83e0-4778-b2d4-3966f083151b  RAC1
DN  10.X.X.139  4.81 TB256 25.8% 
1f434cfe-6952-4d41-8fc5-780a18e64963  RAC1
UN  10.X.X.138  3.69 TB256 24.4% 
b7467041-05d9-409f-a59a-438d0a29f6a7  RAC1

I need some workaround to prevent this situation with hints. 

How we use default values for:

hinted_handoff_enabled: 'true'
max_hints_delivery_threads: 2
max_hint_window_in_ms: 1080
hinted_handoff_throttle_in_kb: 1024

Should I disable hints or increase number of threads and throughput?

For example:

hinted_handoff_enabled: 'true'
max_hints_delivery_threads: 20
max_hint_window_in_ms: 10800
hinted_handoff_throttle_in_kb: 10240



was (Author: msb):
Java heap is selected automatically in cassandra-env.sh. I tried to set 
MAX_HEAP_SIZE=8G, NEW_HEAP_SIZE=800M, but it didn't help.

nodetool disableautocompaction - didn't help, compactions continue after 
restart node.
nodetool truncatehints - didn't help, it showed message like 'cannot stop 
running hint compaction'.

One of nodes had ~24000 files in system\hints-..., I stepped node and deleted 
them, it helps and node is running about 10 hours. Other node has 18154 files 
in system\hints-... (~1.1TB) and has the same problem, I leave it for 
experiments.

Workload: 20-40 processes on application servers, each one performs loading 
files in blobs (one big table), size of each file is about 3.5MB, key - UUID.

CREATE KEYSPACE filespace WITH replication = {'class': 
'NetworkTopologyStrategy', 'DC1': '1', 'DC2': '1'}  AND durable_writes = true;

CREATE TABLE filespace.filestorage (
key text,
filename text,
value blob,
PRIMARY KEY (key, chunk)
) WITH COMPACT STORAGE
AND CLUSTERING ORDER BY (chunk ASC)
AND bloom_filter_fp_chance = 0.01
AND caching = '{keys:ALL, rows_per_partition:NONE}'
AND comment = ''
AND compaction = {'min_threshold': '4', 'class': 
'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 
'max_threshold': '32'}
AND compression = {'sstable_compression': 

[jira] [Commented] (CASSANDRA-9092) Nodes in DC2 die during and after huge write workload

2015-04-02 Thread Sergey Maznichenko (JIRA)

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

Sergey Maznichenko commented on CASSANDRA-9092:
---

The node reproduces this error every time after attempt of compacting 
system.hints. I tried MAX_HEAP_SIZE=16G, it didn't help. 
Workaround is manually deleting system.hint files and restart node, but we have 
a chance to investigate this error in order to fix it in future releases.
Any suggestions?


 Nodes in DC2 die during and after huge write workload
 -

 Key: CASSANDRA-9092
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9092
 Project: Cassandra
  Issue Type: Bug
 Environment: CentOS 6.2 64-bit, Cassandra 2.1.2, 
 java version 1.7.0_71
 Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
 Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
Reporter: Sergey Maznichenko
 Fix For: 2.1.5

 Attachments: cassandra_crash1.txt


 Hello,
 We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
 Node is VM 8 CPU, 32GB RAM
 During significant workload (loading several millions blobs ~3.5MB each), 1 
 node in DC2 stops and after some time next 2 nodes in DC2 also stops.
 Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. 
 I see many files in system.hints table and error appears in 2-3 minutes after 
 starting system.hints auto compaction.
 Stops, means ERROR [CompactionExecutor:1] 2015-04-01 23:33:44,456 
 CassandraDaemon.java:153 - Exception in thread 
 Thread[CompactionExecutor:1,1,main]
 java.lang.OutOfMemoryError: Java heap space
 Full errors listing attached in cassandra_crash1.txt
 The problem exists only in DC2. We have 1GbE between DC1 and DC2.



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


[jira] [Issue Comment Deleted] (CASSANDRA-9092) Nodes in DC2 die during and after huge write workload

2015-04-02 Thread Philip Thompson (JIRA)

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

Philip Thompson updated CASSANDRA-9092:
---
Comment: was deleted

(was: The error message is attached as a .txt file. It's running out of heap 
space.)

 Nodes in DC2 die during and after huge write workload
 -

 Key: CASSANDRA-9092
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9092
 Project: Cassandra
  Issue Type: Bug
 Environment: CentOS 6.2 64-bit, Cassandra 2.1.2, 
 java version 1.7.0_71
 Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
 Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
Reporter: Sergey Maznichenko
 Fix For: 2.1.5

 Attachments: cassandra_crash1.txt


 Hello,
 We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
 Node is VM 8 CPU, 32GB RAM
 During significant workload (loading several millions blobs ~3.5MB each), 1 
 node in DC2 stops and after some time next 2 nodes in DC2 also stops.
 Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. 
 I see many files in system.hints table and error appears in 2-3 minutes after 
 starting system.hints auto compaction.
 The problem exists only in DC2. We have 1GbE between DC1 and DC2.



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


[jira] [Created] (CASSANDRA-9098) Anticompactions not visible in nodetool compactionstats

2015-04-02 Thread Gustav Munkby (JIRA)
Gustav Munkby created CASSANDRA-9098:


 Summary: Anticompactions not visible in nodetool compactionstats
 Key: CASSANDRA-9098
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9098
 Project: Cassandra
  Issue Type: Bug
Reporter: Gustav Munkby
Priority: Minor


There seems to be no way to monitor the progress of anticompactions except 
parsing the logs (which incidentally is quite complicated).



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


[jira] [Updated] (CASSANDRA-9097) Repeated incremental nodetool repair results in failed repairs due to running anticompaction

2015-04-02 Thread Philip Thompson (JIRA)

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

Philip Thompson updated CASSANDRA-9097:
---
Fix Version/s: 2.1.5

 Repeated incremental nodetool repair results in failed repairs due to running 
 anticompaction
 

 Key: CASSANDRA-9097
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9097
 Project: Cassandra
  Issue Type: Bug
Reporter: Gustav Munkby
Priority: Minor
 Fix For: 2.1.5


 I'm trying to synchronize incremental repairs over multiple nodes in a 
 Cassandra cluster, and it does not seem to easily achievable.
 In principle, the process iterates through the nodes of the cluster and 
 performs `nodetool -h $NODE repair --incremental`, but that sometimes fails 
 on subsequent nodes. The reason for failing seems to be that the repair 
 returns as soon as the repair and the _local_ anticompaction has completed, 
 but does not guarantee that remote anticompactions are complete. If I 
 subsequently try to issue another repair command, they fail to start (and 
 terminate with failure after about one minute). It usually isn't a problem, 
 as the local anticompaction typically involves as much (or more) data as the 
 remote ones, but sometimes not.



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


[jira] [Updated] (CASSANDRA-9097) Repeated incremental nodetool repair results in failed repairs due to running anticompaction

2015-04-02 Thread Philip Thompson (JIRA)

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

Philip Thompson updated CASSANDRA-9097:
---
Assignee: Yuki Morishita

 Repeated incremental nodetool repair results in failed repairs due to running 
 anticompaction
 

 Key: CASSANDRA-9097
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9097
 Project: Cassandra
  Issue Type: Bug
Reporter: Gustav Munkby
Assignee: Yuki Morishita
Priority: Minor
 Fix For: 2.1.5


 I'm trying to synchronize incremental repairs over multiple nodes in a 
 Cassandra cluster, and it does not seem to easily achievable.
 In principle, the process iterates through the nodes of the cluster and 
 performs `nodetool -h $NODE repair --incremental`, but that sometimes fails 
 on subsequent nodes. The reason for failing seems to be that the repair 
 returns as soon as the repair and the _local_ anticompaction has completed, 
 but does not guarantee that remote anticompactions are complete. If I 
 subsequently try to issue another repair command, they fail to start (and 
 terminate with failure after about one minute). It usually isn't a problem, 
 as the local anticompaction typically involves as much (or more) data as the 
 remote ones, but sometimes not.



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


[jira] [Commented] (CASSANDRA-9092) Nodes in DC2 die during and after huge write workload

2015-04-02 Thread Philip Thompson (JIRA)

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

Philip Thompson commented on CASSANDRA-9092:


The error message is attached as a .txt file. It's running out of heap space.

 Nodes in DC2 die during and after huge write workload
 -

 Key: CASSANDRA-9092
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9092
 Project: Cassandra
  Issue Type: Bug
 Environment: CentOS 6.2 64-bit, Cassandra 2.1.2, 
 java version 1.7.0_71
 Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
 Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
Reporter: Sergey Maznichenko
 Fix For: 2.1.5

 Attachments: cassandra_crash1.txt


 Hello,
 We have Cassandra 2.1.2 with 8 nodes, 4 in DC1 and 4 in DC2.
 Node is VM 8 CPU, 32GB RAM
 During significant workload (loading several millions blobs ~3.5MB each), 1 
 node in DC2 stops and after some time next 2 nodes in DC2 also stops.
 Now, 2 of nodes in DC2 do not work and stops after 5-10 minutes after start. 
 I see many files in system.hints table and error appears in 2-3 minutes after 
 starting system.hints auto compaction.
 The problem exists only in DC2. We have 1GbE between DC1 and DC2.



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


[jira] [Commented] (CASSANDRA-9088) Don't include tmp files in SSTableOfflineRelevel

2015-04-02 Thread Carl Yeksigian (JIRA)

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

Carl Yeksigian commented on CASSANDRA-9088:
---

+1

 Don't include tmp files in SSTableOfflineRelevel
 

 Key: CASSANDRA-9088
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9088
 Project: Cassandra
  Issue Type: Bug
Reporter: Marcus Eriksson
Assignee: Marcus Eriksson
 Fix For: 2.0.15

 Attachments: 0001-dont-include-tmp-files-in-offline-relevel.patch


 Avoid including tmp files in offline relevel



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


  1   2   >