[jira] [Commented] (CASSANDRA-4750) Add jmx/nodetool methods to enable/disable hinted handoff

2012-10-22 Thread Alexey Zotov (JIRA)

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

Alexey Zotov commented on CASSANDRA-4750:
-

I think that would be good to save current methods and add methods for 
pause/resume hints delivery processes. So we will have separate methods to 
disable/enable the future hints storing and for pause/resume hints delivery 
processes. It will be implemented in HHOM as boolean flag that could be changed 
through JMX and nodetool. Also that flag should be save own state in 
system.local CF (patch will be creaed only for 1.2 version).

What do you think about it? 

 Add jmx/nodetool methods to enable/disable hinted handoff
 -

 Key: CASSANDRA-4750
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4750
 Project: Cassandra
  Issue Type: Improvement
Reporter: Brandon Williams
Assignee: Alexey Zotov
  Labels: hintedhandoff, nodetool
 Fix For: 1.1.7, 1.2.0 beta 2

 Attachments: cassandra-1.1-4750-enable_disable_hh.txt, 
 cassandra-1.2-4750-enable_disable_hh.txt


 Title says it all.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4832) AssertionError: keys must not be empty

2012-10-22 Thread Joe Fox (JIRA)

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

Joe Fox commented on CASSANDRA-4832:


I've run into the same symptoms as Chris, but while attempting to migrate data 
between a 1.1.1 cluster and 1.1.6.

Whilst using sstableloader to import the data, nodes would hit certain column 
indexes and stop processing further requests once the assertion was thrown - 
restarting the node would almost immediately throw the assertion again, and the 
node would just fail to rejoin the ring.

tpstats would show active flushwriter tasks but no further node activity.

We had to work around the issue by:

1. Removing all indexes from our target cluster schema
2. Importing the data via sstableloader
3. Scanning through relevant column families and inserting data into any empty 
indexed columns
4. Re-applying the indexes to the target cluster schema

Only then was the migration successful.

I'll also note that attempting to apply an index to a column which has null 
data will also throw the cluster out of sync as the nodes which throw the 
assertion fail to migrate their schemas properly

 INFO [Creating index: Transactions.TransactionsCountryCode] 2012-10-21 
07:45:25,978 ColumnFamilyStore.java (line 659) Enqueuing flush of 
Memtable-Transactions.TransactionsCountryCode@1802367190(38862/169512 
serialized/live bytes, 762 ops)
 INFO [Creating index: Transactions.TransactionsStatus] 2012-10-21 07:45:25,980 
ColumnFamilyStore.java (line 659) Enqueuing flush of 
Memtable-Transactions.TransactionsStatus@673679943(38862/125966 serialized/live 
bytes, 762 ops)
 INFO [FlushWriter:1] 2012-10-21 07:45:25,987 Memtable.java (line 264) Writing 
Memtable-Transactions.TransactionsCountryCode@1802367190(38862/169512 
serialized/live bytes, 762 ops)
 INFO [FlushWriter:2] 2012-10-21 07:45:26,004 Memtable.java (line 264) Writing 
Memtable-Transactions.TransactionsStatus@673679943(38862/125966 serialized/live 
bytes, 762 ops)
ERROR [FlushWriter:1] 2012-10-21 07:45:26,004 AbstractCassandraDaemon.java 
(line 135) Exception in thread Thread[FlushWriter:1,5,main]
java.lang.AssertionError: Keys must not be empty
at 
org.apache.cassandra.io.sstable.SSTableWriter.beforeAppend(SSTableWriter.java:133)
at 
org.apache.cassandra.io.sstable.SSTableWriter.append(SSTableWriter.java:176)
at 
org.apache.cassandra.db.Memtable.writeSortedContents(Memtable.java:295)
at org.apache.cassandra.db.Memtable.access$600(Memtable.java:48)
at org.apache.cassandra.db.Memtable$5.runMayThrow(Memtable.java:316)
at 
org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:30)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
 INFO [FlushWriter:2] 2012-10-21 07:45:26,049 Memtable.java (line 305) 
Completed flushing 
/var/lib/cassandra/data/***/Transactions/***-Transactions.TransactionsStatus-hf-2-Data.db
 (35259 bytes) for commitlog position ReplayPosition(segmentId=1350805525722, 
position=0)
 INFO [Creating index: Transactions.TransactionsLastUpdateDate] 2012-10-21 
07:45:26,313 ColumnFamilyStore.java (line 659) Enqueuing flush of 
Memtable-Transactions.TransactionsLastUpdateDate@1912098049(38862/240277 
serialized/live bytes, 762 ops)
 INFO [FlushWriter:2] 2012-10-21 07:45:26,314 Memtable.java (line 264) Writing 
Memtable-Transactions.TransactionsLastUpdateDate@1912098049(38862/240277 
serialized/live bytes, 762 ops)
 INFO [FlushWriter:2] 2012-10-21 07:45:26,743 Memtable.java (line 305) 
Completed flushing 
/var/lib/cassandra/data/***/Transactions/***-Transactions.TransactionsLastUpdateDate-hf-2-Data.db
 (37024 bytes) for commitlog position ReplayPosition(segmentId=1350805525722, 
position=0)
 INFO [main] 2012-10-21 07:45:27,052 CommitLogReplayer.java (line 272) Finished 
reading /var/lib/cassandra/commitlog/CommitLog-1350768744805.log
 INFO [main] 2012-10-21 07:45:27,054 ColumnFamilyStore.java (line 659) 
Enqueuing flush of Memtable-Versions@1851630436(83/103 serialized/live bytes, 3 
ops)
 INFO [FlushWriter:2] 2012-10-21 07:45:27,054 Memtable.java (line 264) Writing 
Memtable-Versions@1851630436(83/103 serialized/live bytes, 3 ops)
 INFO [FlushWriter:2] 2012-10-21 07:45:27,061 Memtable.java (line 305) 
Completed flushing 
/var/lib/cassandra/data/system/Versions/system-Versions-hf-1-Data.db (247 
bytes) for commitlog position ReplayPosition(segmentId=1350805525722, 
position=0)

 AssertionError: keys must not be empty
 --

 Key: CASSANDRA-4832
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4832
 Project: Cassandra
  Issue Type: Bug
  

git commit: Fix Subcolumn slice ends not respected

2012-10-22 Thread slebresne
Updated Branches:
  refs/heads/trunk 81209f1c8 - f02928f88


Fix Subcolumn slice ends not respected

patch by vijay; reviewed by thobbs  slebresne for CASSANDRA-4826


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

Branch: refs/heads/trunk
Commit: f02928f887ce58e317b87341a837c61068510bae
Parents: 81209f1
Author: Sylvain Lebresne sylv...@datastax.com
Authored: Mon Oct 22 09:19:06 2012 +0200
Committer: Sylvain Lebresne sylv...@datastax.com
Committed: Mon Oct 22 09:19:06 2012 +0200

--
 CHANGES.txt|1 +
 .../cassandra/db/filter/SliceQueryFilter.java  |   30 +-
 2 files changed, 20 insertions(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f02928f8/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 9fbccb0..e14ffa7 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -31,6 +31,7 @@
  * Fix potential NPE during CFS reload (CASSANDRA-4786)
  * Composite indexes may miss results (CASSANDRA-4796)
  * Move consistency level to the protocol level (CASSANDRA-4734, 4824)
+ * Fix Subcolumn slice ends not respected (CASSANDRA-4826)
 Merged from 1.1:
  * fix indexing empty column values (CASSANDRA-4832)
  * allow JdbcDate to compose null Date objects (CASSANDRA-4830)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f02928f8/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
--
diff --git a/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java 
b/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
index 2de284a..af63fa0 100644
--- a/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
+++ b/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
@@ -25,6 +25,7 @@ import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 
+import com.google.common.collect.AbstractIterator;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Lists;
 import org.slf4j.Logger;
@@ -104,7 +105,7 @@ public class SliceQueryFilter implements IFilter
 // we clone shallow, then add, under the theory that generally we're 
interested in a relatively small number of subcolumns.
 // this may be a poor assumption.
 SuperColumn scFiltered = superColumn.cloneMeShallow();
-IteratorIColumn subcolumns;
+final IteratorIColumn subcolumns;
 if (reversed)
 {
 ListIColumn columnsAsList = new 
ArrayListIColumn(superColumn.getSubColumns());
@@ -114,20 +115,27 @@ public class SliceQueryFilter implements IFilter
 {
 subcolumns = superColumn.getSubColumns().iterator();
 }
-
-// iterate until we get to the real start column
-ComparatorByteBuffer comparator = reversed ? 
superColumn.getComparator().reverseComparator : superColumn.getComparator();
-while (subcolumns.hasNext())
+final ComparatorByteBuffer comparator = reversed ? 
superColumn.getComparator().reverseComparator : superColumn.getComparator();
+IteratorIColumn results = new AbstractIteratorIColumn()
 {
-IColumn column = subcolumns.next();
-if (comparator.compare(column.name(), start()) = 0)
+protected IColumn computeNext()
 {
-subcolumns = 
Iterators.concat(Iterators.singletonIterator(column), subcolumns);
-break;
+while (subcolumns.hasNext())
+{
+IColumn subcolumn = subcolumns.next();
+// iterate until we get to the real start column
+if (comparator.compare(subcolumn.name(), start())  0)
+continue;
+// exit loop when columns are out of the range.
+if (finish().remaining()  0  
comparator.compare(subcolumn.name(), finish())  0)
+break;
+return subcolumn;
+}
+return endOfData();
 }
-}
+};
 // subcolumns is either empty now, or has been redefined in the loop 
above. either is ok.
-collectReducedColumns(scFiltered, subcolumns, gcBefore);
+collectReducedColumns(scFiltered, results, gcBefore);
 return scFiltered;
 }
 



[jira] [Updated] (CASSANDRA-4843) When upgrading from 1.1.6 to 1.20 change in partitioner causes nodes not to start

2012-10-22 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne updated CASSANDRA-4843:


Fix Version/s: 1.2.0 beta 2

 When upgrading from 1.1.6 to 1.20 change in partitioner causes nodes not to 
 start
 -

 Key: CASSANDRA-4843
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4843
 Project: Cassandra
  Issue Type: Bug
Reporter: Edward Capriolo
 Fix For: 1.2.0 beta 2


 ERROR 10:17:20,341 Cannot open 
 /home/edward/cassandra/data/system/schema_keyspaces/system-schema_keyspaces-hf-1
  because partitioner does not match 
 org.apache.cassandra.dht.RandomPartitioner != 
 org.apache.cassandra.dht.Murmur3Partitioner
 This is because 1.2 has a new default partitioner, why are we changing the 
 default? Is this wise? The current partitioner has been rock solid for years. 
 Should the previously known partition be stored in the schema like the 
 previously know seed nodes, and schema?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4843) When upgrading from 1.1.6 to 1.20 change in partitioner causes nodes not to start

2012-10-22 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne commented on CASSANDRA-4843:
-

bq. why are we changing the default?

The reason is that md5 is a bit cpu intensive and in some 2ndary index requests 
(that does a token computation for each key on disk it scans for internal 
reason that can't be changed easily) this was a bottleneck. The new default is 
the Murmur3Partitioner that is much cheaper to compute. Besides, for every 
query we do compute a bunch of token and vnodes will probably not reduce that, 
so it's a generic improvement.

That being said, I fully agree that the current upgrade experience is pretty 
harsh (even the NEWS file don't clearly explain the action to take to avoid 
this error). And since we save the partitonner and don't start if the user 
change it in the yaml, maybe it's time to change the behavior so that if a 
partitioner is saved in the system table, we use that (and log a warning if it 
differs from the yaml configured one).



 When upgrading from 1.1.6 to 1.20 change in partitioner causes nodes not to 
 start
 -

 Key: CASSANDRA-4843
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4843
 Project: Cassandra
  Issue Type: Bug
Reporter: Edward Capriolo
 Fix For: 1.2.0 beta 2


 ERROR 10:17:20,341 Cannot open 
 /home/edward/cassandra/data/system/schema_keyspaces/system-schema_keyspaces-hf-1
  because partitioner does not match 
 org.apache.cassandra.dht.RandomPartitioner != 
 org.apache.cassandra.dht.Murmur3Partitioner
 This is because 1.2 has a new default partitioner, why are we changing the 
 default? Is this wise? The current partitioner has been rock solid for years. 
 Should the previously known partition be stored in the schema like the 
 previously know seed nodes, and schema?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Resolved] (CASSANDRA-4844) CQL3 Create keyspace statement not compatible with older versions.

2012-10-22 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne resolved CASSANDRA-4844.
-

Resolution: Won't Fix

Yes, the syntax has changed in a breaking way. In fact, that's not even the 
biggest breaking change in that we've also removed the consistency level from 
the language (to move it to the protocol level). This is unfortunate *but* 
we've bee clear that CQL3 was beta in 1.1 (I admit the datastax doc isn't that 
clear and I'll ask them to do something about it, but the official CQL3 doc for 
1.1 is: http://cassandra.apache.org/doc/cql3/CQL.html). I note that this is 
indicated in the NEWS file. 

 CQL3 Create keyspace statement not compatible with older versions.
 --

 Key: CASSANDRA-4844
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4844
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.2.0 beta 1
Reporter: Edward Capriolo

 Following the advice here.
 http://www.datastax.com/docs/1.1/dml/using_cql
 {noformat}
 [edward@tablitha apache-cassandra-1.2.0-beta1]$ bin/cqlsh -3
 Connected to Test Cluster at localhost:9160.
 [cqlsh 2.2.0 | Cassandra 1.2.0-beta1 | CQL spec 3.0.0 | Thrift protocol 
 19.34.0]
 Use HELP for help.
 cqlsh CREATE KEYSPACE demodb  WITH strategy_class = 
 'org.apache.cassandra.locator.SimpleStrategy'  AND 
 strategy_options:replication_factor='1' ;
 Bad Request: line 1:129 mismatched input ':' expecting '='
 Perhaps you meant to use CQL 2? Try using the -2 option when starting cqlsh.
 {noformat}
 http://www.datastax.com/docs/1.1/references/cql/CREATE_KEYSPACE
 {noformat}
 cqlsh CREATE KEYSPACE Excelsior WITH strategy_class = 'SimpleStrategy'
...   AND strategy_options:replication_factor = 1;
 Bad Request: line 2:22 mismatched input ':' expecting '='
 {noformat}
 It seems that in Cassandra 1.2 I am no longer able to create a keyspace.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4815) Make CQL work naturally with wide rows

2012-10-22 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne commented on CASSANDRA-4815:
-


bq. Can I create a schema less table?

Yes. The following as-schemaless-as-can-possibly-be thrift/cli definition:
{noformat}
create column family schemaless
  with key_validation_class = BytesType
  and comparator = BytesType
  and default_validation_class = BytesType
{noformat}
is *equivalent* to the following CQL3 definition
{noformat}
CREATE TABLE schemaless (
  key blob,
  column blob,
  value blob,
  PRIMARY KEY (key, column)
) WITH COMPACT STORAGE
{noformat}
And to be clear, when I say equivalent, I mean equivalent. If you create the 
first definion above, you can use the column family in CQL3 as if it was 
defined by the second definition (as in, you don't have to do the CREATE TABLE 
itself), or you can create the table in CQL3 first with the second query and 
query it in thrift exactly as if it had been created by the first definition.

The composite primary key is what tells CQL3 that it's a transposed wide CF.  
In other words, in CQL3, 'key' will map to the row key, 'column' will map to 
the internal column name and 'value' will map to the internal column value. I 
note that 'key', 'column' and 'value' are the default names that CQL3 picks for 
you when you haven't explicitely defined user friendlier one (in other words, 
when you upgrade from thrift). CASSANDRA-4822 is open to allow you to rename 
those default names to more user friendly ones if you so wish (and to be clear, 
doing so as no impact whatsoever on what is stored, it just declare the new 
names as CQL3 metadata).

bq. I guess this is slightly more difficult to express composite slices.

It's possibly nitpicking, but I would talk of a difficulty in poperly 
paginating composites. But yes, that's one of the very few things that CQL3 is 
not currently very good at. But we'll fix it (and the good thing about having a 
query language is that it will be trivial to fix it without a backward 
incompatible breaking change). That being said, I do believe that once you 
start doing real life example, it's not really a blocker. Most of the time, 
when you use composites in real life, you want to slice over one of the 
component, which works fine. That's why it's really more a problem for slightly 
more complex pagination over composite wide rows. There is also CASSANDRA-4415 
that will fix the need for a good part of the manual pagination people do right 
now.

bq. If we have an old style schema don't we need to be able to alter a current 
table.

As explained above, thrift CF *are* directly accessible from CQL3 (without 
any redefinition, and that's why trying to create the table in CQL3 is not 
legal). However, you won't nice column names if you do so (but rather the 
'key', 'column' and 'value' generic names above). Again, CASSANDRA-4822 will 
allow to declare nice names without having to do complex operation (like 
trashing your thrift schema so that CQL3 allow the redefinition).

bq. What is going to happen if Cassandra and the CQL language actually adds 
true composite row keys?

It does already: CASSANDRA-4179. You just declare
{noformat}
PRIMARY KEY ((id_part1, id_part2), tag_name).
{noformat}


 Make CQL work naturally with wide rows
 --

 Key: CASSANDRA-4815
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4815
 Project: Cassandra
  Issue Type: Wish
Reporter: Edward Capriolo

 I find that CQL3 is quite obtuse and does not provide me a language useful 
 for accessing my data. First, lets point out how we should design Cassandra 
 data. 
 1) Denormalize
 2) Eliminate seeks
 3) Design for read
 4) optimize for blind writes
 So here is a schema that abides by these tried and tested rules large 
 production uses are employing today. 
 Say we have a table of movie objects:
 Movie
 Name
 Description
 - tags   (string)
 - credits composite(role string, name string )
 -1 likesToday
 -1 blacklisted
 The above structure is a movie notice it hold a mix of static and dynamic 
 columns, but the other all number of columns is not very large. (even if it 
 was larger this is OK as well) Notice this table is not just 
 a single one to many relationship, it has 1 to 1 data and it has two sets of 
 1 to many data.
 The schema today is declared something like this:
 create column family movies
 with default_comparator=UTF8Type and
   column_metadata =
   [
 {column_name: blacklisted, validation_class: int},
 {column_name: likestoday, validation_class: long},
 {column_name: description, validation_class: UTF8Type}
   ];
 We should be able to insert data like this:
 set ['Cassandra Database, not looking for a seQL']['blacklisted']=1;
 set ['Cassandra 

[jira] [Comment Edited] (CASSANDRA-4832) AssertionError: keys must not be empty

2012-10-22 Thread Joe Fox (JIRA)

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

Joe Fox edited comment on CASSANDRA-4832 at 10/22/12 8:52 AM:
--

I've run into the same symptoms as Chris, but while attempting to migrate data 
between a 1.1.1 cluster and 1.1.6.

Whilst using sstableloader to import the data, nodes would hit certain column 
indexes and stop processing further requests once the assertion was thrown - 
restarting the node would almost immediately throw the assertion again, and the 
node would just fail to rejoin the ring.

tpstats would show active flushwriter tasks but no further node activity.

We had to work around the issue by:

1. Removing all indexes from our target cluster schema
2. Importing the data via sstableloader
3. Scanning through relevant column families and inserting data into any empty 
indexed columns
4. Re-applying the indexes to the target cluster schema

Only then was the migration successful.

I'll also note that attempting to apply an index to a column which has null 
data will also throw the cluster out of sync as the nodes which throw the 
assertion fail to migrate their schemas properly

 INFO [Creating index: Transactions.TransactionsCountryCode] 2012-10-21 
07:45:25,978 ColumnFamilyStore.java (line 659) Enqueuing flush of 
Memtable-Transactions.TransactionsCountryCode@1802367190(38862/169512 
serialized/live bytes, 762 ops)
 INFO [Creating index: Transactions.TransactionsStatus] 2012-10-21 07:45:25,980 
ColumnFamilyStore.java (line 659) Enqueuing flush of 
Memtable-Transactions.TransactionsStatus@673679943(38862/125966 serialized/live 
bytes, 762 ops)
 INFO [FlushWriter:1] 2012-10-21 07:45:25,987 Memtable.java (line 264) Writing 
Memtable-Transactions.TransactionsCountryCode@1802367190(38862/169512 
serialized/live bytes, 762 ops)
 INFO [FlushWriter:2] 2012-10-21 07:45:26,004 Memtable.java (line 264) Writing 
Memtable-Transactions.TransactionsStatus@673679943(38862/125966 serialized/live 
bytes, 762 ops)
ERROR [FlushWriter:1] 2012-10-21 07:45:26,004 AbstractCassandraDaemon.java 
(line 135) Exception in thread Thread[FlushWriter:1,5,main]
java.lang.AssertionError: Keys must not be empty
at 
org.apache.cassandra.io.sstable.SSTableWriter.beforeAppend(SSTableWriter.java:133)
at 
org.apache.cassandra.io.sstable.SSTableWriter.append(SSTableWriter.java:176)
at 
org.apache.cassandra.db.Memtable.writeSortedContents(Memtable.java:295)
at org.apache.cassandra.db.Memtable.access$600(Memtable.java:48)
at org.apache.cassandra.db.Memtable$5.runMayThrow(Memtable.java:316)
at 
org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:30)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
 INFO [FlushWriter:2] 2012-10-21 07:45:26,049 Memtable.java (line 305) 
Completed flushing 
/var/lib/cassandra/data/xx/Transactions/xx-Transactions.TransactionsStatus-hf-2-Data.db
 (35259 bytes) for commitlog position ReplayPosition(segmentId=1350805525722, 
position=0)
 INFO [Creating index: Transactions.TransactionsLastUpdateDate] 2012-10-21 
07:45:26,313 ColumnFamilyStore.java (line 659) Enqueuing flush of 
Memtable-Transactions.TransactionsLastUpdateDate@1912098049(38862/240277 
serialized/live bytes, 762 ops)
 INFO [FlushWriter:2] 2012-10-21 07:45:26,314 Memtable.java (line 264) Writing 
Memtable-Transactions.TransactionsLastUpdateDate@1912098049(38862/240277 
serialized/live bytes, 762 ops)
 INFO [FlushWriter:2] 2012-10-21 07:45:26,743 Memtable.java (line 305) 
Completed flushing 
/var/lib/cassandra/data/xx/Transactions/xx-Transactions.TransactionsLastUpdateDate-hf-2-Data.db
 (37024 bytes) for commitlog position ReplayPosition(segmentId=1350805525722, 
position=0)
 INFO [main] 2012-10-21 07:45:27,052 CommitLogReplayer.java (line 272) Finished 
reading /var/lib/cassandra/commitlog/CommitLog-1350768744805.log
 INFO [main] 2012-10-21 07:45:27,054 ColumnFamilyStore.java (line 659) 
Enqueuing flush of Memtable-Versions@1851630436(83/103 serialized/live bytes, 3 
ops)
 INFO [FlushWriter:2] 2012-10-21 07:45:27,054 Memtable.java (line 264) Writing 
Memtable-Versions@1851630436(83/103 serialized/live bytes, 3 ops)
 INFO [FlushWriter:2] 2012-10-21 07:45:27,061 Memtable.java (line 305) 
Completed flushing 
/var/lib/cassandra/data/system/Versions/system-Versions-hf-1-Data.db (247 
bytes) for commitlog position ReplayPosition(segmentId=1350805525722, 
position=0)

  was (Author: e1zorro):
I've run into the same symptoms as Chris, but while attempting to migrate 
data between a 1.1.1 cluster and 1.1.6.

Whilst using sstableloader to import the data, nodes would hit 

[jira] [Reopened] (CASSANDRA-4844) CQL3 Create keyspace statement not compatible with older versions.

2012-10-22 Thread Edward Capriolo (JIRA)

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

Edward Capriolo reopened CASSANDRA-4844:



 CQL3 Create keyspace statement not compatible with older versions.
 --

 Key: CASSANDRA-4844
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4844
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.2.0 beta 1
Reporter: Edward Capriolo

 Following the advice here.
 http://www.datastax.com/docs/1.1/dml/using_cql
 {noformat}
 [edward@tablitha apache-cassandra-1.2.0-beta1]$ bin/cqlsh -3
 Connected to Test Cluster at localhost:9160.
 [cqlsh 2.2.0 | Cassandra 1.2.0-beta1 | CQL spec 3.0.0 | Thrift protocol 
 19.34.0]
 Use HELP for help.
 cqlsh CREATE KEYSPACE demodb  WITH strategy_class = 
 'org.apache.cassandra.locator.SimpleStrategy'  AND 
 strategy_options:replication_factor='1' ;
 Bad Request: line 1:129 mismatched input ':' expecting '='
 Perhaps you meant to use CQL 2? Try using the -2 option when starting cqlsh.
 {noformat}
 http://www.datastax.com/docs/1.1/references/cql/CREATE_KEYSPACE
 {noformat}
 cqlsh CREATE KEYSPACE Excelsior WITH strategy_class = 'SimpleStrategy'
...   AND strategy_options:replication_factor = 1;
 Bad Request: line 2:22 mismatched input ':' expecting '='
 {noformat}
 It seems that in Cassandra 1.2 I am no longer able to create a keyspace.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4844) CQL3 Create keyspace statement not compatible with older versions.

2012-10-22 Thread Edward Capriolo (JIRA)

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

Edward Capriolo commented on CASSANDRA-4844:


I realize you were clear that 1.1 was beta, but there are DZONE refcards and 
blogs all over the internet instructing people on how to create keyspaces. 
Cassandra typically approaches these things we changed it, deal with it. Do 
not be soo quick to close the issues because the inline documentation in cqlsh 
is still wrong.

 CQL3 Create keyspace statement not compatible with older versions.
 --

 Key: CASSANDRA-4844
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4844
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.2.0 beta 1
Reporter: Edward Capriolo

 Following the advice here.
 http://www.datastax.com/docs/1.1/dml/using_cql
 {noformat}
 [edward@tablitha apache-cassandra-1.2.0-beta1]$ bin/cqlsh -3
 Connected to Test Cluster at localhost:9160.
 [cqlsh 2.2.0 | Cassandra 1.2.0-beta1 | CQL spec 3.0.0 | Thrift protocol 
 19.34.0]
 Use HELP for help.
 cqlsh CREATE KEYSPACE demodb  WITH strategy_class = 
 'org.apache.cassandra.locator.SimpleStrategy'  AND 
 strategy_options:replication_factor='1' ;
 Bad Request: line 1:129 mismatched input ':' expecting '='
 Perhaps you meant to use CQL 2? Try using the -2 option when starting cqlsh.
 {noformat}
 http://www.datastax.com/docs/1.1/references/cql/CREATE_KEYSPACE
 {noformat}
 cqlsh CREATE KEYSPACE Excelsior WITH strategy_class = 'SimpleStrategy'
...   AND strategy_options:replication_factor = 1;
 Bad Request: line 2:22 mismatched input ':' expecting '='
 {noformat}
 It seems that in Cassandra 1.2 I am no longer able to create a keyspace.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4844) CQL3 Create keyspace statement not compatible with older versions.

2012-10-22 Thread Edward Capriolo (JIRA)

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

Edward Capriolo commented on CASSANDRA-4844:


{noformat}
[edward@tablitha apache-cassandra-1.2.0-beta1]$ bin/cqlsh
Connected to Test Cluster at localhost:9160.
[cqlsh 2.2.0 | Cassandra 1.2.0-beta1 | CQL spec 3.0.0 | Thrift protocol 19.34.0]
Use HELP for help.
cqlsh help ;

Documented commands (type help topic):

ASSUME  CAPTURE  COPY  DESC  DESCRIBE  EXIT  HELP  SELECT  SHOW  SOURCE  USE

Miscellaneous help topics:
==
DROP_INDEX BOOLEAN_INPUTSELECT_LIMIT   
ALTER_DROP CREATE   DELETE_WHERE   
SELECT_EXPRTIMESTAMP_OUTPUT UPDATE_USING   
UUID_INPUT CREATE_TABLE_OPTIONS UPDATE_WHERE   
DELETE_COLUMNS ALTER_ALTER  SELECT_WHERE   
DROP_TABLE CREATE_TABLE CONSISTENCYLEVEL   
CREATE_TABLE_TYPES SELECT_COLUMNFAMILY  CREATE_INDEX   
ALTER_WITH SELECT_TABLE CREATE_KEYSPACE
TYPES  CREATE_COLUMNFAMILY_OPTIONS  ASCII_OUTPUT   
APPLY  BEGINDROP   
DELETE_USING   UPDATE_SET   TIMESTAMP_INPUT
CREATE_COLUMNFAMILY_TYPES  UPDATE_COUNTERS  ALTER  
DROP_COLUMNFAMILY  TRUNCATE CREATE_COLUMNFAMILY
BLOB_INPUT INSERT   DELETE 
ALTER_ADD  TEXT_OUTPUT
DROP_KEYSPACE  UPDATE 

Undocumented commands:
==
DEBUG  IMPORT_INSERT

cqlsh help CREATE_KEYSPACE;

CREATE KEYSPACE ksname WITH strategy_class = 'strategy'
 [AND strategy_options:option = val];

The CREATE KEYSPACE statement creates a new top-level namespace (aka
keyspace). Valid names are any string constructed of alphanumeric
characters and underscores. Names which do not work as valid
identifiers or integers should be quoted as string literals. Properties
such as replication strategy and count are specified during creation
using the following accepted keyword arguments:

  strategy_class [required]: The name of the replication strategy class
  which should be used for the new keyspace. Some often-used classes
  are SimpleStrategy and NetworkTopologyStrategy.

  strategy_options: Most strategies require additional arguments which
  can be supplied by appending the option name to strategy_options,
  separated by a colon (:). For example, a strategy option of DC1
  with a value of 1 would be specified as strategy_options:DC1 = 1.
  The replication factor option for SimpleStrategy could be
  strategy_options:replication_factor=3.

cqlsh  
{noformat}

 CQL3 Create keyspace statement not compatible with older versions.
 --

 Key: CASSANDRA-4844
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4844
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.2.0 beta 1
Reporter: Edward Capriolo

 Following the advice here.
 http://www.datastax.com/docs/1.1/dml/using_cql
 {noformat}
 [edward@tablitha apache-cassandra-1.2.0-beta1]$ bin/cqlsh -3
 Connected to Test Cluster at localhost:9160.
 [cqlsh 2.2.0 | Cassandra 1.2.0-beta1 | CQL spec 3.0.0 | Thrift protocol 
 19.34.0]
 Use HELP for help.
 cqlsh CREATE KEYSPACE demodb  WITH strategy_class = 
 'org.apache.cassandra.locator.SimpleStrategy'  AND 
 strategy_options:replication_factor='1' ;
 Bad Request: line 1:129 mismatched input ':' expecting '='
 Perhaps you meant to use CQL 2? Try using the -2 option when starting cqlsh.
 {noformat}
 http://www.datastax.com/docs/1.1/references/cql/CREATE_KEYSPACE
 {noformat}
 cqlsh CREATE KEYSPACE Excelsior WITH strategy_class = 'SimpleStrategy'
...   AND strategy_options:replication_factor = 1;
 Bad Request: line 2:22 mismatched input ':' expecting '='
 {noformat}
 It seems that in Cassandra 1.2 I am no longer able to create a keyspace.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Updated] (CASSANDRA-4049) Add generic way of adding SSTable components required custom compaction strategy

2012-10-22 Thread JIRA

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

Piotr Kołaczkowski updated CASSANDRA-4049:
--

Attachment: 4049-v4.txt

[~jbellis] Looks and works good. 

I added a guard against adding the same component more than once (just a 
cosmetic thing to avoid duplicate TOC entries, because components is a set 
anyway). Attached as 4049-v4.txt. 

You can go on and merge it into 1.1.7.

 Add generic way of adding SSTable components required custom compaction 
 strategy
 

 Key: CASSANDRA-4049
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4049
 Project: Cassandra
  Issue Type: New Feature
  Components: Core
Reporter: Piotr Kołaczkowski
Assignee: Piotr Kołaczkowski
Priority: Minor
  Labels: compaction
 Fix For: 1.1.7

 Attachments: 4049-v3.txt, 4049-v4.txt, 
 pluggable_custom_components-1.1.5-2.patch, 
 pluggable_custom_components-1.1.5.patch


 CFS compaction strategy coming up in the next DSE release needs to store some 
 important information in Tombstones.db and RemovedKeys.db files, one per 
 sstable. However, currently Cassandra issues warnings when these files are 
 found in the data directory. Additionally, when switched to 
 SizeTieredCompactionStrategy, the files are left in the data directory after 
 compaction.
 The attached patch adds new components to the Component class so Cassandra 
 knows about those files.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Resolved] (CASSANDRA-4838) ColumnFamilyRecordWriter does not allow adjustment of Thrift/socket timeout

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis resolved CASSANDRA-4838.
---

Resolution: Not A Problem

I think you're confusing the socket timeout (from client to coordinator) with 
the RPC timeout (from coordinator to replicas).  Increasing the former will not 
help when you are hitting the latter.

Instead, you should lower 
mapreduce.output.columnfamilyoutputformat.batch.threshold.

 ColumnFamilyRecordWriter does not allow adjustment of Thrift/socket timeout
 ---

 Key: CASSANDRA-4838
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4838
 Project: Cassandra
  Issue Type: Bug
  Components: Hadoop
Affects Versions: 1.0.10
 Environment: Linux/Ubuntu, DSE 2.1 / Cassandra 1.0.10
Reporter: Evan Chan
 Attachments: cassandra-thrift-timeout.patch


 I'm using ColumnFamilyRecordWriter with an M/R job to dump data into a 
 cluster, it was running Cassandra 1.0.10, and is now running DSE 2.1.   
 Either way, I hit Thrift timeout errors sometimes.  Looking at the code, it 
 seems that it does not allow for setting of the Thrift timeout, and this code 
 has not been updated in the latest trunk.  
 I have a patch that adds a configuration parameter to allow adjustment of the 
 Thrift timeout in CFRecordWriter.   Let me know if you guys would be 
 interested.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4788) streaming can put files in the wrong location

2012-10-22 Thread Yuki Morishita (JIRA)

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

Yuki Morishita commented on CASSANDRA-4788:
---

Actually, it does regardless of streaming type. I observed it with 
sstableloader.
SSTables are put in right place when they get compacted, so maybe that's why 
you only see when bootstrapping.

 streaming can put files in the wrong location
 -

 Key: CASSANDRA-4788
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4788
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.2.0 beta 1
Reporter: Brandon Williams
Assignee: Yuki Morishita
 Fix For: 1.2.0 beta 2

 Attachments: 4788.txt


 Some, but not all streaming incorrectly puts files in the top level data 
 directory.  Easiest way to repro that I've seen is bootstrap where it happens 
 100% of the time, but other operations like move and repair seem to do the 
 right thing.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4835) Appending/Prepending items to list using BATCH

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis commented on CASSANDRA-4835:
---

You should consider this an implementation quirk (possibly even a bug), not a 
guarantee.

 Appending/Prepending items to list using BATCH
 --

 Key: CASSANDRA-4835
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4835
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.2.0 beta 1
Reporter: Krzysztof Cieslinski
Priority: Minor

 As I know, there is no any guarantee that commands that are inside BATCH 
 block will execute in same order, as they are stored in the BATCH block. 
 But...
 I have made two tests:
 First appends some items to the empty list, and the second one, prepends 
 items, also to the empty list. Both of them are using UPDATE commands stored 
 in the BATCH block. 
 Results of those tests are as follow:
 First:
   When appending new items to list, USING commands are executed in the 
 same order as they are stored i BATCH.
 Second:
   When prepending new items to list, USING commands are executed in 
 random order.  
 So, in other words below code:
 {code:xml}
 BEGIN BATCH
  UPDATE... list_name = list_name + [ '1' ]  
  UPDATE... list_name = list_name + [ '2' ]
  UPDATE... list_name = list_name + [ '3' ] 
 APPLY BATCH;{code}
  always results in [ '1', '2', '3' ],
  but this code:
 {code:xml}
 BEGIN BATCH
  UPDATE... list_name = [ '1' ] + list_name   
  UPDATE... list_name = [ '2' ] + list_name
  UPDATE... list_name = [ '3' ] + list_name
 APPLY BATCH;{code}
 results in randomly ordered list, like [ '2', '1', '3' ](expected result 
 is [ '3', '2', '1' ])
 So somehow, when appending items to list, commands from BATCH are executed in 
 order as they are stored, but when prepending, the order is random.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4840) remnants of removed nodes remain after removal

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis commented on CASSANDRA-4840:
---

Does this happen in 1.1 as well?

 remnants of removed nodes remain after removal
 --

 Key: CASSANDRA-4840
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4840
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.0.10
Reporter: Jeremy Hanna
Assignee: Brandon Williams
Priority: Minor

 After nodes are removed from the ring and no longer appear in any of the 
 nodes' nodetool ring output, some of the dead nodes show up in the 
 o.a.c.net.FailureDetector SimpleStates metadata.  Also, some of the JMX stats 
 are updating for the removed nodes (ie RecentTimeoutsPerHost and 
 ResponsePendingTasks).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-3017) add a Message size limit

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis commented on CASSANDRA-3017:
---

MessageIn.read is the right place to be defensive now.

 add a Message size limit
 

 Key: CASSANDRA-3017
 URL: https://issues.apache.org/jira/browse/CASSANDRA-3017
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Jonathan Ellis
Assignee: Kirk True
Priority: Minor
  Labels: lhf
 Attachments: 
 0001-use-the-thrift-max-message-size-for-inter-node-messa.patch


 We protect the server from allocating huge buffers for malformed message with 
 the Thrift frame size (CASSANDRA-475).  But we don't have similar protection 
 for the inter-node Message objects.
 Adding this would be good to deal with malicious adversaries as well as a 
 malfunctioning cluster participant.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4839) Online toggle for node write-only status

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis commented on CASSANDRA-4839:
---

My question here is, how does a node know when it's done receiving hints?

 Online toggle for node write-only status
 

 Key: CASSANDRA-4839
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4839
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Rick Branson
Priority: Minor

 It would be really great if users could disable/enable reads on a given node, 
 while still allowing write operations to take place. This would be similar to 
 how we enable/disable thrift and gossip using JMX.
 The scenario for using this is that often a node needs to be brought down for 
 maintenance for a few minutes, and while the node is catching up from hints, 
 which can take 10-30 minutes depending on write load, it will serve stale 
 data. Do the math for a rolling restart of a large cluster and you have 
 potential windows of hours or days where a large amount of inconsistency is 
 surfacing.
 Avoiding this large time gap of inconsistency during regular maintenance 
 alleviates concerns about inconsistent data surfaced to users during normal, 
 planned activities. While a read consistency ONE can indeed be used to 
 prevent any inconsistency from the scenario above, it seems ridiculous to 
 always incur the cost to cover the 0.1% case.
 In addition, it would open up the ability for a node to (optionally) 
 automatically go dark for reads while it's receiving hints after joining 
 the cluster or perhaps during repair. These obviously have their own 
 complications and justify separate tickets.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4839) Online toggle for node write-only status

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis commented on CASSANDRA-4839:
---

Thrift is only used for client connections.

 Online toggle for node write-only status
 

 Key: CASSANDRA-4839
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4839
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Rick Branson
Priority: Minor

 It would be really great if users could disable/enable reads on a given node, 
 while still allowing write operations to take place. This would be similar to 
 how we enable/disable thrift and gossip using JMX.
 The scenario for using this is that often a node needs to be brought down for 
 maintenance for a few minutes, and while the node is catching up from hints, 
 which can take 10-30 minutes depending on write load, it will serve stale 
 data. Do the math for a rolling restart of a large cluster and you have 
 potential windows of hours or days where a large amount of inconsistency is 
 surfacing.
 Avoiding this large time gap of inconsistency during regular maintenance 
 alleviates concerns about inconsistent data surfaced to users during normal, 
 planned activities. While a read consistency ONE can indeed be used to 
 prevent any inconsistency from the scenario above, it seems ridiculous to 
 always incur the cost to cover the 0.1% case.
 In addition, it would open up the ability for a node to (optionally) 
 automatically go dark for reads while it's receiving hints after joining 
 the cluster or perhaps during repair. These obviously have their own 
 complications and justify separate tickets.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Updated] (CASSANDRA-4833) get_count with 'count' param between 1024 and ~actual column count fails

2012-10-22 Thread Yuki Morishita (JIRA)

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

Yuki Morishita updated CASSANDRA-4833:
--

Attachment: 4833-1.1-v2.txt

Thanks for review, Tyler.

What we want here is to fetch last page with remainder, not whole page size. So 
we still need requestedCount -= newColumns.

Attaching v2 for this.

 get_count with 'count' param between 1024 and ~actual column count fails
 

 Key: CASSANDRA-4833
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4833
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.6, 1.2.0 beta 1
Reporter: Tyler Hobbs
Assignee: Yuki Morishita
 Attachments: 4833-1.1.txt, 4833-1.1-v2.txt, 4833-get-count-repro.py


 If you run get_count() with the 'count' param of the SliceRange set to a 
 number between 1024 and (approximately) the actual number of columns in the 
 row, something seems to silently fail internally, resulting in a client side 
 timeout.  Using a 'count' param outside of this range (lower or much higher) 
 works just fine.
 This seems to affect all of 1.1 and 1.2.0-beta1, but not 1.0.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4784) Create separate sstables for each token range handled by a node

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis commented on CASSANDRA-4784:
---

But if vnodes (which is already complete and ready to use in 1.2) makes 
bootstrap fast enough to saturate 10 gigE, I don't see much utility in adding 
further complexity for 1.3.

I do still see this as useful for backup/restore in the general case though.

 Create separate sstables for each token range handled by a node
 ---

 Key: CASSANDRA-4784
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4784
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: sankalp kohli
Priority: Minor
  Labels: perfomance

 Currently, each sstable has data for all the ranges that node is handling. If 
 we change that and rather have separate sstables for each range that node is 
 handling, it can lead to some improvements.
 Improvements
 1) Node rebuild will be very fast as sstables can be directly copied over to 
 the bootstrapping node. It will minimize any application level logic. We can 
 directly use Linux native methods to transfer sstables without using CPU and 
 putting less pressure on the serving node. I think in theory it will be the 
 fastest way to transfer data. 
 2) Backup can only transfer sstables for a node which belong to its primary 
 keyrange. 
 3) ETL process can only copy one replica of data and will be much faster. 
 Changes:
 We can split the writes into multiple memtables for each range it is 
 handling. The sstables being flushed from these can have details of which 
 range of data it is handling.
 There will be no change I think for any reads as they work with interleaved 
 data anyway. But may be we can improve there as well? 
 Complexities:
 The change does not look very complicated. I am not taking into account how 
 it will work when ranges are being changed for nodes. 
 Vnodes might make this work more complicated. We can also have a bit on each 
 sstable which says whether it is primary data or not. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4844) CQL3 Create keyspace statement not compatible with older versions.

2012-10-22 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne commented on CASSANDRA-4844:
-

bq. Cassandra typically approaches these things we changed it, deal with it.

I won't pretend we have been perfect in the past on these things nor will I 
pretend that we'll be perfect in the future. But we're trying to be better and 
I dare say that we do improve. And I spend way too much of my time (and I'm not 
the only one) writing code whose only purpose is to ensure backward 
compatibility (and I will continue doing it because I absolutely believe it is 
important, but it's rarely fun) to let you say that we don't care. Trust me, we 
care.

But we've marked CQL3 beta in 1.1 exactly because we knew we wouldn't get 
everything right the first time, and we wanted the freedom to fix those thing 
to be confident about CQL3 final (and at least as far as I'm concerned, I do 
intend to do everything possible to provide backward compatibility for CQL3 
final once it's released, because that's part of the deal). So yes, backward 
compatibility is a major concern of mine, but no I disagree that we should keep 
backward compatibility on things we've explicitly declared as beta, even if 
there is blogs about it.

bq. the inline documentation in cqlsh is still wrong

Good point, we'll need to fix it (that's not the only cql doc that is not up to 
date for 1.2 though). Do feel free to reopen with an update title for this.

 CQL3 Create keyspace statement not compatible with older versions.
 --

 Key: CASSANDRA-4844
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4844
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.2.0 beta 1
Reporter: Edward Capriolo

 Following the advice here.
 http://www.datastax.com/docs/1.1/dml/using_cql
 {noformat}
 [edward@tablitha apache-cassandra-1.2.0-beta1]$ bin/cqlsh -3
 Connected to Test Cluster at localhost:9160.
 [cqlsh 2.2.0 | Cassandra 1.2.0-beta1 | CQL spec 3.0.0 | Thrift protocol 
 19.34.0]
 Use HELP for help.
 cqlsh CREATE KEYSPACE demodb  WITH strategy_class = 
 'org.apache.cassandra.locator.SimpleStrategy'  AND 
 strategy_options:replication_factor='1' ;
 Bad Request: line 1:129 mismatched input ':' expecting '='
 Perhaps you meant to use CQL 2? Try using the -2 option when starting cqlsh.
 {noformat}
 http://www.datastax.com/docs/1.1/references/cql/CREATE_KEYSPACE
 {noformat}
 cqlsh CREATE KEYSPACE Excelsior WITH strategy_class = 'SimpleStrategy'
...   AND strategy_options:replication_factor = 1;
 Bad Request: line 2:22 mismatched input ':' expecting '='
 {noformat}
 It seems that in Cassandra 1.2 I am no longer able to create a keyspace.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4841) Exception thrown during nodetool repair -pr

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis commented on CASSANDRA-4841:
---

Doesn't this just mean JMX got tired and timed out before the repair 
completed?

Nothing here indicates that repair crashed a node.

 Exception thrown during nodetool repair -pr
 ---

 Key: CASSANDRA-4841
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4841
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.6
 Environment: Ubuntu 12.04 x64, 32GB RAM
Reporter: Michael Kjellman
Priority: Critical

 During a nodetool repair -pr an exception was thrown.
 root@scl-cas04:~# nodetool repair -pr
 Exception in thread main java.rmi.UnmarshalException: Error unmarshaling 
 return header; nested exception is:
 java.io.EOFException
 at 
 sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:227)
 at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:160)
 at com.sun.jmx.remote.internal.PRef.invoke(Unknown Source)
 at javax.management.remote.rmi.RMIConnectionImpl_Stub.invoke(Unknown 
 Source)
 at 
 javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.invoke(RMIConnector.java:1017)
 at 
 javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:305)
 at $Proxy0.forceTableRepairPrimaryRange(Unknown Source)
 at 
 org.apache.cassandra.tools.NodeProbe.forceTableRepairPrimaryRange(NodeProbe.java:209)
 at 
 org.apache.cassandra.tools.NodeCmd.optionalKSandCFs(NodeCmd.java:1044)
 at org.apache.cassandra.tools.NodeCmd.main(NodeCmd.java:834)
 Caused by: java.io.EOFException
 at java.io.DataInputStream.readByte(DataInputStream.java:267)
 at 
 sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:213)
 ... 9 more
 Logs:
 WARN 20:53:27,135 Heap is 0.9710037912028483 full.  You may need to reduce 
 memtable and/or cache sizes.  Cassandr
 a will now flush up to the two largest memtables to free up memory.  Adjust 
 flush_largest_memtables_at threshold i
 n cassandra.yaml if you don't want Cassandra to do this automatically
 regardless of configuration issues a repair shouldn't crash a node.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Resolved] (CASSANDRA-4794) cassandra 1.2.0 beta: atomic_batch_mutate fails with Default TException

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis resolved CASSANDRA-4794.
---

Resolution: Duplicate

 cassandra 1.2.0 beta: atomic_batch_mutate fails with Default TException
 ---

 Key: CASSANDRA-4794
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4794
 Project: Cassandra
  Issue Type: Bug
  Components: API
Affects Versions: 1.2.0 beta 1
 Environment: C++
Reporter: debadatta das
Assignee: Aleksey Yeschenko
 Fix For: 1.2.0 beta 2

 Attachments: InsertExample.java.txt, log_java.txt, 
 sample_AtomicBatchMutate.cpp


 Hi,
 We have installed cassandra 1.2.0 beta with thrift 0.7.0. We are using cpp 
 interface. When we use batch_mutate API, it works fine. But when we are using 
 the new atomic_batch_mutate API with same parameters as batch_mutate, it 
 fails with org::apache::cassandra::TimedOutException, what(): Default 
 TException. We get the same TException error even after increasing Send/Reciv 
 timeout values of Tsocket to 15 seconds or more.
 Details:
 cassandra ring:
 cassandra ring with single node
 consistency level paramter to atomic_batch_mutate
 ConsistencyLevel::ONE
 Thrift version:
 same results with thrift 0.5.0 and thrift 0.7.0.
 thrift 0.8.0 seems unsupported with cassanda 1.2.0. Gives compilation error 
 for cpp interface build.
 We are calling atomic_batch_mutate() with same parameters as batch_mutate.
 cassclient.atomic_batch_mutate(outermap1, ConsistencyLevel::ONE);
 where outmap1 is
 mapstring, mapstring, vectorMutation   outermap1;
 Please point out if anything is missing while using atomic_batch_mutate or 
 the reason behind the failure.
 The logs in cassandra system.log we get during atomic_batch_mutate failure 
 are:
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,604 MessagingService.java (line 
 800) 1 MUTATION messages dropped in last 5000ms
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,606 StatusLogger.java (line 53) 
 Pool Name Active Pending Blocked
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,607 StatusLogger.java (line 68) 
 ReadStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,608 StatusLogger.java (line 68) 
 RequestResponseStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,608 StatusLogger.java (line 68) 
 ReadRepairStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,608 StatusLogger.java (line 68) 
 MutationStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,608 StatusLogger.java (line 68) 
 ReplicateOnWriteStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,609 StatusLogger.java (line 68) 
 GossipStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,609 StatusLogger.java (line 68) 
 AntiEntropyStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,609 StatusLogger.java (line 68) 
 MigrationStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,609 StatusLogger.java (line 68) 
 StreamStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,609 StatusLogger.java (line 68) 
 MemtablePostFlusher 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,610 StatusLogger.java (line 68) 
 FlushWriter 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,610 StatusLogger.java (line 68) 
 MiscStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,610 StatusLogger.java (line 68) 
 commitlog_archiver 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,610 StatusLogger.java (line 68) 
 InternalResponseStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,610 StatusLogger.java (line 73) 
 CompactionManager 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,611 StatusLogger.java (line 85) 
 MessagingService n/a 0,0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,611 StatusLogger.java (line 95) 
 Cache Type Size Capacity KeysToSave Provider
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,611 StatusLogger.java (line 96) 
 KeyCache 227 74448896 all
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,611 StatusLogger.java (line 102) 
 RowCache 0 0 all org.apache.cassandra.cache.SerializingCacheProvider
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,612 StatusLogger.java (line 109) 
 ColumnFamily Memtable ops,data
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,612 StatusLogger.java (line 112) 
 KeyspaceTest.CF_Test 1,71
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,612 StatusLogger.java (line 112) 
 system.local 0,0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,612 StatusLogger.java (line 112) 
 system.peers 0,0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,612 StatusLogger.java (line 112) 
 system.batchlog 0,0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,612 StatusLogger.java (line 112) 
 system.NodeIdInfo 0,0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,612 StatusLogger.java (line 112) 
 system.LocationInfo 0,0
 INFO [ScheduledTasks:1] 2012-10-10 

[jira] [Commented] (CASSANDRA-4833) get_count with 'count' param between 1024 and ~actual column count fails

2012-10-22 Thread Tyler Hobbs (JIRA)

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

Tyler Hobbs commented on CASSANDRA-4833:


The patch needs to be rebased, but I'm +1 on the code changes

 get_count with 'count' param between 1024 and ~actual column count fails
 

 Key: CASSANDRA-4833
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4833
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.6, 1.2.0 beta 1
Reporter: Tyler Hobbs
Assignee: Yuki Morishita
 Attachments: 4833-1.1.txt, 4833-1.1-v2.txt, 4833-get-count-repro.py


 If you run get_count() with the 'count' param of the SliceRange set to a 
 number between 1024 and (approximately) the actual number of columns in the 
 row, something seems to silently fail internally, resulting in a client side 
 timeout.  Using a 'count' param outside of this range (lower or much higher) 
 works just fine.
 This seems to affect all of 1.1 and 1.2.0-beta1, but not 1.0.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Updated] (CASSANDRA-4842) DateType in Column MetaData causes server crash

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis updated CASSANDRA-4842:
--

 Reviewer: jbellis
 Priority: Minor  (was: Major)
Affects Version/s: (was: 1.1.6)
   (was: 1.1.5)
   (was: 1.2.0 beta 1)
   1.1.0
Fix Version/s: 1.2.0 beta 2
   1.1.7
 Assignee: Aleksey Yeschenko

verified that this only affects 1.1, not 1.0, probably due to changes in schema 
handling.

 DateType in Column MetaData causes server crash
 ---

 Key: CASSANDRA-4842
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4842
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.0
 Environment: All
Reporter: Russell Bradberry
Assignee: Aleksey Yeschenko
Priority: Minor
 Fix For: 1.1.7, 1.2.0 beta 2


 when creating a column family with column metadata containing a date, there 
 is a server crash that will prevent startup.
 To recreate from the cli:
 {code}
 create keyspace test;
 use test;
 create column family foo
   with column_type = 'Standard'
   and comparator = 'CompositeType(LongType,DateType)'
   and default_validation_class = 'UTF8Type'
   and key_validation_class = 'UTF8Type'
   and column_metadata = [ 
 { column_name : '1234:1350695443433', validation_class : BooleanType} 
   ];
 {code}
 Produces this error in the logs:
 {code}
 ERROR 21:11:18,795 Error occurred during processing of message.
 java.lang.RuntimeException: java.util.concurrent.ExecutionException: 
 org.apache.cassandra.db.marshal.MarshalException: unable to coerce 
 '2012-10-19 21' to a  formatted date (long)
   at 
 org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:373)
   at 
 org.apache.cassandra.service.MigrationManager.announce(MigrationManager.java:194)
   at 
 org.apache.cassandra.service.MigrationManager.announceNewColumnFamily(MigrationManager.java:141)
   at 
 org.apache.cassandra.thrift.CassandraServer.system_add_column_family(CassandraServer.java:931)
   at 
 org.apache.cassandra.thrift.Cassandra$Processor$system_add_column_family.getResult(Cassandra.java:3410)
   at 
 org.apache.cassandra.thrift.Cassandra$Processor$system_add_column_family.getResult(Cassandra.java:3398)
   at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
   at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
   at 
 org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:186)
   at 
 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
   at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
   at java.lang.Thread.run(Thread.java:680)
 Caused by: java.util.concurrent.ExecutionException: 
 org.apache.cassandra.db.marshal.MarshalException: unable to coerce 
 '2012-10-19 21' to a  formatted date (long)
   at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
   at java.util.concurrent.FutureTask.get(FutureTask.java:83)
   at 
 org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:369)
   ... 11 more
 Caused by: org.apache.cassandra.db.marshal.MarshalException: unable to coerce 
 '2012-10-19 21' to a  formatted date (long)
   at 
 org.apache.cassandra.db.marshal.DateType.dateStringToTimestamp(DateType.java:117)
   at org.apache.cassandra.db.marshal.DateType.fromString(DateType.java:85)
   at 
 org.apache.cassandra.db.marshal.AbstractCompositeType.fromString(AbstractCompositeType.java:213)
   at 
 org.apache.cassandra.config.ColumnDefinition.fromSchema(ColumnDefinition.java:257)
   at 
 org.apache.cassandra.config.CFMetaData.addColumnDefinitionSchema(CFMetaData.java:1318)
   at 
 org.apache.cassandra.config.CFMetaData.fromSchema(CFMetaData.java:1250)
   at 
 org.apache.cassandra.config.KSMetaData.deserializeColumnFamilies(KSMetaData.java:299)
   at 
 org.apache.cassandra.db.DefsTable.mergeColumnFamilies(DefsTable.java:434)
   at org.apache.cassandra.db.DefsTable.mergeSchema(DefsTable.java:346)
   at 
 org.apache.cassandra.service.MigrationManager$1.call(MigrationManager.java:217)
   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
   at java.util.concurrent.FutureTask.run(FutureTask.java:138)
   ... 3 more
 Caused by: java.text.ParseException: Unable to parse the date: 2012-10-19 21
   at org.apache.commons.lang.time.DateUtils.parseDate(DateUtils.java:285)
   at 
 org.apache.cassandra.db.marshal.DateType.dateStringToTimestamp(DateType.java:113)
   ... 14 more
 ERROR 21:11:18,795 

[jira] [Updated] (CASSANDRA-4842) DateType in Column MetaData causes server crash

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis updated CASSANDRA-4842:
--

Assignee: Pavel Yaskevich  (was: Aleksey Yeschenko)

 DateType in Column MetaData causes server crash
 ---

 Key: CASSANDRA-4842
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4842
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.0
 Environment: All
Reporter: Russell Bradberry
Assignee: Pavel Yaskevich
Priority: Minor
 Fix For: 1.1.7, 1.2.0 beta 2


 when creating a column family with column metadata containing a date, there 
 is a server crash that will prevent startup.
 To recreate from the cli:
 {code}
 create keyspace test;
 use test;
 create column family foo
   with column_type = 'Standard'
   and comparator = 'CompositeType(LongType,DateType)'
   and default_validation_class = 'UTF8Type'
   and key_validation_class = 'UTF8Type'
   and column_metadata = [ 
 { column_name : '1234:1350695443433', validation_class : BooleanType} 
   ];
 {code}
 Produces this error in the logs:
 {code}
 ERROR 21:11:18,795 Error occurred during processing of message.
 java.lang.RuntimeException: java.util.concurrent.ExecutionException: 
 org.apache.cassandra.db.marshal.MarshalException: unable to coerce 
 '2012-10-19 21' to a  formatted date (long)
   at 
 org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:373)
   at 
 org.apache.cassandra.service.MigrationManager.announce(MigrationManager.java:194)
   at 
 org.apache.cassandra.service.MigrationManager.announceNewColumnFamily(MigrationManager.java:141)
   at 
 org.apache.cassandra.thrift.CassandraServer.system_add_column_family(CassandraServer.java:931)
   at 
 org.apache.cassandra.thrift.Cassandra$Processor$system_add_column_family.getResult(Cassandra.java:3410)
   at 
 org.apache.cassandra.thrift.Cassandra$Processor$system_add_column_family.getResult(Cassandra.java:3398)
   at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
   at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
   at 
 org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:186)
   at 
 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
   at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
   at java.lang.Thread.run(Thread.java:680)
 Caused by: java.util.concurrent.ExecutionException: 
 org.apache.cassandra.db.marshal.MarshalException: unable to coerce 
 '2012-10-19 21' to a  formatted date (long)
   at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
   at java.util.concurrent.FutureTask.get(FutureTask.java:83)
   at 
 org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:369)
   ... 11 more
 Caused by: org.apache.cassandra.db.marshal.MarshalException: unable to coerce 
 '2012-10-19 21' to a  formatted date (long)
   at 
 org.apache.cassandra.db.marshal.DateType.dateStringToTimestamp(DateType.java:117)
   at org.apache.cassandra.db.marshal.DateType.fromString(DateType.java:85)
   at 
 org.apache.cassandra.db.marshal.AbstractCompositeType.fromString(AbstractCompositeType.java:213)
   at 
 org.apache.cassandra.config.ColumnDefinition.fromSchema(ColumnDefinition.java:257)
   at 
 org.apache.cassandra.config.CFMetaData.addColumnDefinitionSchema(CFMetaData.java:1318)
   at 
 org.apache.cassandra.config.CFMetaData.fromSchema(CFMetaData.java:1250)
   at 
 org.apache.cassandra.config.KSMetaData.deserializeColumnFamilies(KSMetaData.java:299)
   at 
 org.apache.cassandra.db.DefsTable.mergeColumnFamilies(DefsTable.java:434)
   at org.apache.cassandra.db.DefsTable.mergeSchema(DefsTable.java:346)
   at 
 org.apache.cassandra.service.MigrationManager$1.call(MigrationManager.java:217)
   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
   at java.util.concurrent.FutureTask.run(FutureTask.java:138)
   ... 3 more
 Caused by: java.text.ParseException: Unable to parse the date: 2012-10-19 21
   at org.apache.commons.lang.time.DateUtils.parseDate(DateUtils.java:285)
   at 
 org.apache.cassandra.db.marshal.DateType.dateStringToTimestamp(DateType.java:113)
   ... 14 more
 ERROR 21:11:18,795 Exception in thread Thread[MigrationStage:1,5,main]
 org.apache.cassandra.db.marshal.MarshalException: unable to coerce 
 '2012-10-19 21' to a  formatted date (long)
   at 
 org.apache.cassandra.db.marshal.DateType.dateStringToTimestamp(DateType.java:117)
   at org.apache.cassandra.db.marshal.DateType.fromString(DateType.java:85)
   at 
 

[jira] [Updated] (CASSANDRA-4764) Clean out STREAM_STAGE vestiges

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis updated CASSANDRA-4764:
--

Summary: Clean out STREAM_STAGE vestiges  (was: Bulk Loading should run in 
STREAM_STAGE)

 Clean out STREAM_STAGE vestiges
 ---

 Key: CASSANDRA-4764
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4764
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.1.0
Reporter: Nick Bailey
Assignee: Jonathan Ellis
Priority: Minor
  Labels: streaming
 Fix For: 1.2.0 beta 2

 Attachments: 4764.txt


 Currently it appears as though bulk loading operations don't run in any 
 stage. Seems like they should be running in STREAM_STAGE.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Updated] (CASSANDRA-4755) Bulk loader won't work with CQL3

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis updated CASSANDRA-4755:
--

Reviewer: jbellis  (was: yukim)

 Bulk loader won't work with CQL3
 

 Key: CASSANDRA-4755
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4755
 Project: Cassandra
  Issue Type: Bug
  Components: Tools
Affects Versions: 1.2.0 beta 1
Reporter: Nick Bailey
Assignee: Aleksey Yeschenko
 Fix For: 1.2.0

 Attachments: CASSANDRA-4755.txt


 Currently the bulk loader uses thrift to get the schema and validate it 
 before bulk loading a cf. Since we stopped returning cql3 cfs through 
 describe_keyspaces, the bulk loader will be unable to load those cfs.
 If we figure out/add a way to validate the schema over jmx, we could use that 
 for getting token ranges as well and drop thrift completely from the bulk 
 loader.
 Another option might be querying system tables manually to validate things.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


git commit: fix BulkLoader recognition of CQL3 columnfamilies patch by Aleksey Yeschenko; reviewed by jbellis for CASSANDRA-4755

2012-10-22 Thread jbellis
Updated Branches:
  refs/heads/trunk f02928f88 - a58b87020


fix BulkLoader recognition of CQL3 columnfamilies
patch by Aleksey Yeschenko; reviewed by jbellis for CASSANDRA-4755


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

Branch: refs/heads/trunk
Commit: a58b87020b4315eab48482666450049fb7cf0674
Parents: f02928f
Author: Jonathan Ellis jbel...@apache.org
Authored: Mon Oct 22 11:48:07 2012 -0500
Committer: Jonathan Ellis jbel...@apache.org
Committed: Mon Oct 22 11:48:07 2012 -0500

--
 CHANGES.txt|1 +
 .../org/apache/cassandra/tools/BulkLoader.java |   32 +++---
 2 files changed, 17 insertions(+), 16 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/a58b8702/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index e14ffa7..4026428 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 1.2-beta2
+ * fix BulkLoader recognition of CQL3 columnfamilies (CASSANDRA-4755)
  * Sort commitlog segments for replay by id instead of mtime (CASSANDRA-4793)
  * Make hint delivery asynchronous (CASSANDRA-4761)
  * Pluggable Thrift transport factories for CLI and cqlsh (CASSANDRA-4609, 
4610)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/a58b8702/src/java/org/apache/cassandra/tools/BulkLoader.java
--
diff --git a/src/java/org/apache/cassandra/tools/BulkLoader.java 
b/src/java/org/apache/cassandra/tools/BulkLoader.java
index f2f018f..c838cb0 100644
--- a/src/java/org/apache/cassandra/tools/BulkLoader.java
+++ b/src/java/org/apache/cassandra/tools/BulkLoader.java
@@ -23,15 +23,19 @@ import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.*;
 
+import org.apache.commons.cli.*;
+
 import org.apache.cassandra.auth.IAuthenticator;
 import org.apache.cassandra.config.DatabaseDescriptor;
+import org.apache.cassandra.db.SystemTable;
+import org.apache.cassandra.db.Table;
 import org.apache.cassandra.dht.Range;
 import org.apache.cassandra.dht.Token;
 import org.apache.cassandra.io.sstable.SSTableLoader;
 import org.apache.cassandra.streaming.PendingFile;
 import org.apache.cassandra.thrift.*;
+import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.cassandra.utils.OutputHandler;
-import org.apache.commons.cli.*;
 import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.protocol.TProtocol;
 import org.apache.thrift.transport.TFramedTransport;
@@ -162,7 +166,7 @@ public class BulkLoader
 
 sb.append([total: ).append(totalSize == 0 ? 100L : totalProgress 
* 100L / totalSize).append( - );
 sb.append(mbPerSec(deltaProgress, deltaTime)).append(MB/s);
-sb.append( (avg: ).append(mbPerSec(totalProgress, time - 
startTime)).append(MB/s)]);;
+sb.append( (avg: ).append(mbPerSec(totalProgress, time - 
startTime)).append(MB/s)]);
 System.out.print(sb.toString());
 return done;
 }
@@ -176,7 +180,7 @@ public class BulkLoader
 
 static class ExternalClient extends SSTableLoader.Client
 {
-private final MapString, SetString knownCfs = new HashMapString, 
SetString();
+private final SetString knownCfs = new HashSetString();
 private final SetInetAddress hosts;
 private final int rpcPort;
 private final String user;
@@ -198,17 +202,14 @@ public class BulkLoader
 {
 try
 {
-
 // Query endpoint to ranges map and schemas from thrift
 InetAddress host = hostiter.next();
 Cassandra.Client client = 
createThriftClient(host.getHostAddress(), rpcPort, this.user, this.passwd);
-ListTokenRange tokenRanges = 
client.describe_ring(keyspace);
-ListKsDef ksDefs = client.describe_keyspaces();
 
 setPartitioner(client.describe_partitioner());
 Token.TokenFactory tkFactory = 
getPartitioner().getTokenFactory();
 
-for (TokenRange tr : tokenRanges)
+for (TokenRange tr : client.describe_ring(keyspace))
 {
 RangeToken range = new 
RangeToken(tkFactory.fromString(tr.start_token), 
tkFactory.fromString(tr.end_token));
 for (String ep : tr.endpoints)
@@ -217,13 +218,13 @@ public class BulkLoader
 }
 }
 
-for (KsDef ksDef : ksDefs)
-

[jira] [Resolved] (CASSANDRA-4832) AssertionError: keys must not be empty

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis resolved CASSANDRA-4832.
---

Resolution: Fixed

 AssertionError: keys must not be empty
 --

 Key: CASSANDRA-4832
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4832
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.6
 Environment: Debian 6.0.5
Reporter: Tristan Seligmann
Assignee: Tristan Seligmann
Priority: Minor
  Labels: indexing
 Fix For: 1.1.7

 Attachments: FlushWriterKeyAssertionBlock.txt


 I'm getting errors like this logged:
  INFO 07:08:32,104 Compacting 
 [SSTableReader(path='/var/lib/cassandra/data/Fusion/quoteinfo/Fusion-quoteinfo.quoteinfo_search_value_idx-hf-114-Data.db'),
  
 SSTableReader(path='/var/lib/cassandra/data/Fusion/quoteinfo/Fusion-quoteinfo.quoteinfo_search_value_idx-hf-113-Data.db'),
  
 SSTableReader(path='/var/lib/cassandra/data/Fusion/quoteinfo/Fusion-quoteinfo.quoteinfo_search_value_idx-hf-110-Data.db'),
  
 SSTableReader(path='/var/lib/cassandra/data/Fusion/quoteinfo/Fusion-quoteinfo.quoteinfo_search_value_idx-hd-108-Data.db'),
  
 SSTableReader(path='/var/lib/cassandra/data/Fusion/quoteinfo/Fusion-quoteinfo.quoteinfo_search_value_idx-hd-106-Data.db'),
  
 SSTableReader(path='/var/lib/cassandra/data/Fusion/quoteinfo/Fusion-quoteinfo.quoteinfo_search_value_idx-hd-107-Data.db'),
  
 SSTableReader(path='/var/lib/cassandra/data/Fusion/quoteinfo/Fusion-quoteinfo.quoteinfo_search_value_idx-hf-112-Data.db'),
  
 SSTableReader(path='/var/lib/cassandra/data/Fusion/quoteinfo/Fusion-quoteinfo.quoteinfo_search_value_idx-hf-109-Data.db'),
  
 SSTableReader(path='/var/lib/cassandra/data/Fusion/quoteinfo/Fusion-quoteinfo.quoteinfo_search_value_idx-hf-111-Data.db')]
 ERROR 07:08:32,108 Exception in thread Thread[CompactionExecutor:5,1,main]
 java.lang.AssertionError: Keys must not be empty
 at 
 org.apache.cassandra.io.sstable.SSTableWriter.beforeAppend(SSTableWriter.java:133)
 at 
 org.apache.cassandra.io.sstable.SSTableWriter.append(SSTableWriter.java:154)
 at 
 org.apache.cassandra.db.compaction.CompactionTask.execute(CompactionTask.java:159)
 at 
 org.apache.cassandra.db.compaction.CompactionManager$1.runMayThrow(CompactionManager.java:154)
 at 
 org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:30)
 at 
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
 at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
 at java.util.concurrent.FutureTask.run(FutureTask.java:138)
 at 
 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:662)
 I'm not really sure when this started happening; they tend to be logged 
 during a repair but I can't reproduce the error 100% reliably.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Updated] (CASSANDRA-4834) Old-style mapred interface only populates row key for first column when using wide rows

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis updated CASSANDRA-4834:
--

Reviewer: brandon.williams
Assignee: Ben Kempe

 Old-style mapred interface only populates row key for first column when using 
 wide rows
 ---

 Key: CASSANDRA-4834
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4834
 Project: Cassandra
  Issue Type: Bug
  Components: Hadoop
Affects Versions: 1.1.0
Reporter: Ben Kempe
Assignee: Ben Kempe
Priority: Minor
 Fix For: 1.1.7

 Attachments: TestJob.java, TestJobOldHadoop.java, 
 trunk-CASSANDRA-4834.txt


 When using the ColumnFamilyRecordReader with the old-style Hadoop interface 
 to iterate over wide row columns, the row key is only populated on the first 
 column.
 See attached tests.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Updated] (CASSANDRA-4834) Old-style mapred interface only populates row key for first column when using wide rows

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis updated CASSANDRA-4834:
--

Affects Version/s: (was: 1.1.5)
   1.1.0
Fix Version/s: 1.1.7

 Old-style mapred interface only populates row key for first column when using 
 wide rows
 ---

 Key: CASSANDRA-4834
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4834
 Project: Cassandra
  Issue Type: Bug
  Components: Hadoop
Affects Versions: 1.1.0
Reporter: Ben Kempe
Assignee: Ben Kempe
Priority: Minor
 Fix For: 1.1.7

 Attachments: TestJob.java, TestJobOldHadoop.java, 
 trunk-CASSANDRA-4834.txt


 When using the ColumnFamilyRecordReader with the old-style Hadoop interface 
 to iterate over wide row columns, the row key is only populated on the first 
 column.
 See attached tests.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Reopened] (CASSANDRA-4208) ColumnFamilyOutputFormat should support writing to multiple column families

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis reopened CASSANDRA-4208:
---


 ColumnFamilyOutputFormat should support writing to multiple column families
 ---

 Key: CASSANDRA-4208
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4208
 Project: Cassandra
  Issue Type: Improvement
  Components: Hadoop
Affects Versions: 1.1.0
Reporter: Robbie Strickland
Assignee: Robbie Strickland
 Fix For: 1.2.0 beta 2

 Attachments: cassandra-1.1-4208.txt, cassandra-1.1-4208-v2.txt, 
 cassandra-1.1-4208-v3.txt, cassandra-1.1-4208-v4.txt, trunk-4208.txt, 
 trunk-4208-v2.txt, trunk-4208-v3.txt


 It is not currently possible to output records to more than one column family 
 in a single reducer.  Considering that writing values to Cassandra often 
 involves multiple column families (i.e. updating your index when you insert a 
 new value), this seems overly restrictive.  I am submitting a patch that 
 moves the specification of column family from the job configuration to the 
 write() call in ColumnFamilyRecordWriter.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Updated] (CASSANDRA-4844) cqlsh help for CQL3 Create (and probably Alter) statements needs to be updated for Map syntax change

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis updated CASSANDRA-4844:
--

Reviewer: brandon.williams
Priority: Minor  (was: Major)
Assignee: Aleksey Yeschenko
 Summary: cqlsh help for CQL3 Create (and probably Alter) statements needs 
to be updated for Map syntax change  (was: CQL3 Create keyspace statement not 
compatible with older versions.)

Updated.  See also CASSANDRA-4811.

 cqlsh help for CQL3 Create (and probably Alter) statements needs to be 
 updated for Map syntax change
 

 Key: CASSANDRA-4844
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4844
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.2.0 beta 1
Reporter: Edward Capriolo
Assignee: Aleksey Yeschenko
Priority: Minor

 Following the advice here.
 http://www.datastax.com/docs/1.1/dml/using_cql
 {noformat}
 [edward@tablitha apache-cassandra-1.2.0-beta1]$ bin/cqlsh -3
 Connected to Test Cluster at localhost:9160.
 [cqlsh 2.2.0 | Cassandra 1.2.0-beta1 | CQL spec 3.0.0 | Thrift protocol 
 19.34.0]
 Use HELP for help.
 cqlsh CREATE KEYSPACE demodb  WITH strategy_class = 
 'org.apache.cassandra.locator.SimpleStrategy'  AND 
 strategy_options:replication_factor='1' ;
 Bad Request: line 1:129 mismatched input ':' expecting '='
 Perhaps you meant to use CQL 2? Try using the -2 option when starting cqlsh.
 {noformat}
 http://www.datastax.com/docs/1.1/references/cql/CREATE_KEYSPACE
 {noformat}
 cqlsh CREATE KEYSPACE Excelsior WITH strategy_class = 'SimpleStrategy'
...   AND strategy_options:replication_factor = 1;
 Bad Request: line 2:22 mismatched input ':' expecting '='
 {noformat}
 It seems that in Cassandra 1.2 I am no longer able to create a keyspace.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4208) ColumnFamilyOutputFormat should support writing to multiple column families

2012-10-22 Thread Robbie Strickland (JIRA)

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

Robbie Strickland commented on CASSANDRA-4208:
--

[~mkjellman] - I think the BOF support should be in a separate issue, since 
CFOF and BOF don't depend on each other for the MultipleOutputs 
functionality--and because this issue specifically addresses CFOF.

 ColumnFamilyOutputFormat should support writing to multiple column families
 ---

 Key: CASSANDRA-4208
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4208
 Project: Cassandra
  Issue Type: Improvement
  Components: Hadoop
Affects Versions: 1.1.0
Reporter: Robbie Strickland
Assignee: Robbie Strickland
 Fix For: 1.2.0 beta 2

 Attachments: cassandra-1.1-4208.txt, cassandra-1.1-4208-v2.txt, 
 cassandra-1.1-4208-v3.txt, cassandra-1.1-4208-v4.txt, trunk-4208.txt, 
 trunk-4208-v2.txt, trunk-4208-v3.txt


 It is not currently possible to output records to more than one column family 
 in a single reducer.  Considering that writing values to Cassandra often 
 involves multiple column families (i.e. updating your index when you insert a 
 new value), this seems overly restrictive.  I am submitting a patch that 
 moves the specification of column family from the job configuration to the 
 write() call in ColumnFamilyRecordWriter.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4794) cassandra 1.2.0 beta: atomic_batch_mutate fails with Default TException

2012-10-22 Thread debadatta das (JIRA)

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

debadatta das commented on CASSANDRA-4794:
--

Hi Aleksey,

I am using the following package available on 
http://cassandra.apache.org/download/ link

Development Cassandra Server Releases (not production ready)
The latest development release is 1.2.0-beta1 (released on 2012-09-24). 
•apache-cassandra-1.2.0-beta1-bin.tar.gz [PGP] [MD5] [SHA1] 

When u say Please get the latest possible Cassandra (trunk), I am not sure 
what you meant. Do you want me to use 1.2.0 beta2 version. If yes can you let 
me know where could I get the package. On the download link I mentioned above, 
I can't find either binary or source package for 1.2.0 beta2. Please let me 
know where can I get the latest cassandra package and whether it is binary 
package or source package. For your information, I am using thrift 0.7.0. 
Please let me know whether I should use later thrift version. When I tried to 
compile CPP program with thrift 0.8.0, it failed.

Regards,
Debadatta

 cassandra 1.2.0 beta: atomic_batch_mutate fails with Default TException
 ---

 Key: CASSANDRA-4794
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4794
 Project: Cassandra
  Issue Type: Bug
  Components: API
Affects Versions: 1.2.0 beta 1
 Environment: C++
Reporter: debadatta das
Assignee: Aleksey Yeschenko
 Fix For: 1.2.0 beta 2

 Attachments: InsertExample.java.txt, log_java.txt, 
 sample_AtomicBatchMutate.cpp


 Hi,
 We have installed cassandra 1.2.0 beta with thrift 0.7.0. We are using cpp 
 interface. When we use batch_mutate API, it works fine. But when we are using 
 the new atomic_batch_mutate API with same parameters as batch_mutate, it 
 fails with org::apache::cassandra::TimedOutException, what(): Default 
 TException. We get the same TException error even after increasing Send/Reciv 
 timeout values of Tsocket to 15 seconds or more.
 Details:
 cassandra ring:
 cassandra ring with single node
 consistency level paramter to atomic_batch_mutate
 ConsistencyLevel::ONE
 Thrift version:
 same results with thrift 0.5.0 and thrift 0.7.0.
 thrift 0.8.0 seems unsupported with cassanda 1.2.0. Gives compilation error 
 for cpp interface build.
 We are calling atomic_batch_mutate() with same parameters as batch_mutate.
 cassclient.atomic_batch_mutate(outermap1, ConsistencyLevel::ONE);
 where outmap1 is
 mapstring, mapstring, vectorMutation   outermap1;
 Please point out if anything is missing while using atomic_batch_mutate or 
 the reason behind the failure.
 The logs in cassandra system.log we get during atomic_batch_mutate failure 
 are:
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,604 MessagingService.java (line 
 800) 1 MUTATION messages dropped in last 5000ms
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,606 StatusLogger.java (line 53) 
 Pool Name Active Pending Blocked
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,607 StatusLogger.java (line 68) 
 ReadStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,608 StatusLogger.java (line 68) 
 RequestResponseStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,608 StatusLogger.java (line 68) 
 ReadRepairStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,608 StatusLogger.java (line 68) 
 MutationStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,608 StatusLogger.java (line 68) 
 ReplicateOnWriteStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,609 StatusLogger.java (line 68) 
 GossipStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,609 StatusLogger.java (line 68) 
 AntiEntropyStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,609 StatusLogger.java (line 68) 
 MigrationStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,609 StatusLogger.java (line 68) 
 StreamStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,609 StatusLogger.java (line 68) 
 MemtablePostFlusher 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,610 StatusLogger.java (line 68) 
 FlushWriter 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,610 StatusLogger.java (line 68) 
 MiscStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,610 StatusLogger.java (line 68) 
 commitlog_archiver 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,610 StatusLogger.java (line 68) 
 InternalResponseStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,610 StatusLogger.java (line 73) 
 CompactionManager 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,611 StatusLogger.java (line 85) 
 MessagingService n/a 0,0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,611 StatusLogger.java (line 95) 
 Cache Type Size Capacity KeysToSave Provider
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,611 StatusLogger.java 

[jira] [Resolved] (CASSANDRA-4845) Unclear that cqlsh help requires quoating

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis resolved CASSANDRA-4845.
---

Resolution: Duplicate

Fixing in CASSANDRA-4811

 Unclear that cqlsh help requires quoating
 -

 Key: CASSANDRA-4845
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4845
 Project: Cassandra
  Issue Type: Improvement
Reporter: Edward Capriolo

 For about two weeks I have been under the impression that most of the CQL 
 help topics are unimplemented. Maybe I am dense, but I never would have 
 guessed I had to quote certain help topics to get help and not others.
 {noformat}
 cqlsh:testks HELP INSERT;
 Improper HELP command.
 cqlsh:testks HELP 'INSERT';
 INSERT INTO [keyspace.]tablename
 ( colname1, colname2 [, colname3 [, ...]] )
VALUES ( colval1, colval2 [, colval3 [, ...]] )
 {noformat}
 Either we should fix cqlsh so we do not need to quote these things, or we 
 should actually put the quotes in the help menu which might indicate this to 
 someone.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4815) Make CQL work naturally with wide rows

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis commented on CASSANDRA-4815:
---

These are good questions and I wanted to reach a wider audience than the Jira 
followers, so I wrote a blog post to address the questions here: 
http://www.datastax.com/dev/blog/cql3-for-cassandra-experts

Please let me know if that clarifies things.

(Note that all the examples there work in 1.1 as well as 1.2, with the 
exception of the cql3 CREATE and ALTER for song_tags.  Those require 1.2.  All 
the pasted output is in fact from 1.1.)


 Make CQL work naturally with wide rows
 --

 Key: CASSANDRA-4815
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4815
 Project: Cassandra
  Issue Type: Wish
Reporter: Edward Capriolo

 I find that CQL3 is quite obtuse and does not provide me a language useful 
 for accessing my data. First, lets point out how we should design Cassandra 
 data. 
 1) Denormalize
 2) Eliminate seeks
 3) Design for read
 4) optimize for blind writes
 So here is a schema that abides by these tried and tested rules large 
 production uses are employing today. 
 Say we have a table of movie objects:
 Movie
 Name
 Description
 - tags   (string)
 - credits composite(role string, name string )
 -1 likesToday
 -1 blacklisted
 The above structure is a movie notice it hold a mix of static and dynamic 
 columns, but the other all number of columns is not very large. (even if it 
 was larger this is OK as well) Notice this table is not just 
 a single one to many relationship, it has 1 to 1 data and it has two sets of 
 1 to many data.
 The schema today is declared something like this:
 create column family movies
 with default_comparator=UTF8Type and
   column_metadata =
   [
 {column_name: blacklisted, validation_class: int},
 {column_name: likestoday, validation_class: long},
 {column_name: description, validation_class: UTF8Type}
   ];
 We should be able to insert data like this:
 set ['Cassandra Database, not looking for a seQL']['blacklisted']=1;
 set ['Cassandra Database, not looking for a seQL']['likesToday']=34;
 set ['Cassandra Database, not looking for a 
 seQL']['credits-dir']='director:asf';
 set ['Cassandra Database, not looking for a 
 seQL']['credits-jir]='jiraguy:bob';
 set ['Cassandra Database, not looking for a seQL']['tags-action']='';
 set ['Cassandra Database, not looking for a seQL']['tags-adventure']='';
 set ['Cassandra Database, not looking for a seQL']['tags-romance']='';
 set ['Cassandra Database, not looking for a seQL']['tags-programming']='';
 This is the correct way to do it. 1 seek to find all the information related 
 to a movie. As long as this row does
 not get large there is no reason to optimize by breaking data into other 
 column families. (Notice you can not transpose this
 because movies is two 1-to-many relationships of potentially different types)
 Lets look at the CQL3 way to do this design:
 First, contrary to the original design of cassandra CQL does not like wide 
 rows. It also does not have a good way to dealing with dynamic rows together 
 with static rows either.
 You have two options:
 Option 1: lose all schema
 create table movies ( name string, column blob, value blob, primary 
 key(name)) with compact storage.
 This method is not so hot we have not lost all our validators, and by the way 
 you have to physically shutdown everything and rename files and recreate your 
 schema if you want to inform cassandra that a current table should be 
 compact. This could at very least be just a metadata change. Also you can not 
 add column schema either.
 Option 2  Normalize (is even worse)
 create table movie (name String, description string, likestoday int, 
 blacklisted int);
 create table movecredits( name string, role string, personname string, 
 primary key(name,role) );
 create table movetags( name string, tag string, primary key (name,tag) );
 This is a terrible design, of the 4 key characteristics how cassandra data 
 should be designed it fails 3:
 It does not:
 1) Denormalize
 2) Eliminate seeks
 3) Design for read
 Why is Cassandra steering toward this course, by making a language that does 
 not understand wide rows?
 So what can be done? My suggestions: 
 Cassandra needs to lose the COMPACT STORAGE conversions. Each table needs a 
 virtual view that is compact storage with no work to migrate data and 
 recreate schemas. Every table should have a compact view for the schemaless, 
 or a simple query hint like /*transposed*/ should make this change.
 Metadata should be definable by regex. For example, all columnes named tag* 
 are of type string.
 CQL should have the column[slice_start] .. column[slice_end] operator from 
 cql2. 
 CQL should support 

[jira] [Commented] (CASSANDRA-4794) cassandra 1.2.0 beta: atomic_batch_mutate fails with Default TException

2012-10-22 Thread Aleksey Yeschenko (JIRA)

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

Aleksey Yeschenko commented on CASSANDRA-4794:
--

Thrift version is not the issue here.

To get the latest version, run:
git clone https://git-wip-us.apache.org/repos/asf/cassandra.git
ant build

 cassandra 1.2.0 beta: atomic_batch_mutate fails with Default TException
 ---

 Key: CASSANDRA-4794
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4794
 Project: Cassandra
  Issue Type: Bug
  Components: API
Affects Versions: 1.2.0 beta 1
 Environment: C++
Reporter: debadatta das
Assignee: Aleksey Yeschenko
 Fix For: 1.2.0 beta 2

 Attachments: InsertExample.java.txt, log_java.txt, 
 sample_AtomicBatchMutate.cpp


 Hi,
 We have installed cassandra 1.2.0 beta with thrift 0.7.0. We are using cpp 
 interface. When we use batch_mutate API, it works fine. But when we are using 
 the new atomic_batch_mutate API with same parameters as batch_mutate, it 
 fails with org::apache::cassandra::TimedOutException, what(): Default 
 TException. We get the same TException error even after increasing Send/Reciv 
 timeout values of Tsocket to 15 seconds or more.
 Details:
 cassandra ring:
 cassandra ring with single node
 consistency level paramter to atomic_batch_mutate
 ConsistencyLevel::ONE
 Thrift version:
 same results with thrift 0.5.0 and thrift 0.7.0.
 thrift 0.8.0 seems unsupported with cassanda 1.2.0. Gives compilation error 
 for cpp interface build.
 We are calling atomic_batch_mutate() with same parameters as batch_mutate.
 cassclient.atomic_batch_mutate(outermap1, ConsistencyLevel::ONE);
 where outmap1 is
 mapstring, mapstring, vectorMutation   outermap1;
 Please point out if anything is missing while using atomic_batch_mutate or 
 the reason behind the failure.
 The logs in cassandra system.log we get during atomic_batch_mutate failure 
 are:
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,604 MessagingService.java (line 
 800) 1 MUTATION messages dropped in last 5000ms
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,606 StatusLogger.java (line 53) 
 Pool Name Active Pending Blocked
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,607 StatusLogger.java (line 68) 
 ReadStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,608 StatusLogger.java (line 68) 
 RequestResponseStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,608 StatusLogger.java (line 68) 
 ReadRepairStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,608 StatusLogger.java (line 68) 
 MutationStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,608 StatusLogger.java (line 68) 
 ReplicateOnWriteStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,609 StatusLogger.java (line 68) 
 GossipStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,609 StatusLogger.java (line 68) 
 AntiEntropyStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,609 StatusLogger.java (line 68) 
 MigrationStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,609 StatusLogger.java (line 68) 
 StreamStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,609 StatusLogger.java (line 68) 
 MemtablePostFlusher 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,610 StatusLogger.java (line 68) 
 FlushWriter 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,610 StatusLogger.java (line 68) 
 MiscStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,610 StatusLogger.java (line 68) 
 commitlog_archiver 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,610 StatusLogger.java (line 68) 
 InternalResponseStage 0 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,610 StatusLogger.java (line 73) 
 CompactionManager 0 0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,611 StatusLogger.java (line 85) 
 MessagingService n/a 0,0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,611 StatusLogger.java (line 95) 
 Cache Type Size Capacity KeysToSave Provider
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,611 StatusLogger.java (line 96) 
 KeyCache 227 74448896 all
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,611 StatusLogger.java (line 102) 
 RowCache 0 0 all org.apache.cassandra.cache.SerializingCacheProvider
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,612 StatusLogger.java (line 109) 
 ColumnFamily Memtable ops,data
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,612 StatusLogger.java (line 112) 
 KeyspaceTest.CF_Test 1,71
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,612 StatusLogger.java (line 112) 
 system.local 0,0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,612 StatusLogger.java (line 112) 
 system.peers 0,0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,612 StatusLogger.java (line 112) 
 system.batchlog 0,0
 INFO [ScheduledTasks:1] 2012-10-10 04:47:30,612 

[jira] [Updated] (CASSANDRA-4815) Make CQL work naturally with wide rows

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis updated CASSANDRA-4815:
--

Comment: was deleted

(was: These are good questions and I wanted to reach a wider audience than the 
Jira followers, so I wrote a blog post to address the questions here: 
http://www.datastax.com/dev/blog/cql3-for-cassandra-experts

Please let me know if that clarifies things.

(Note that all the examples there work in 1.1 as well as 1.2, with the 
exception of the cql3 CREATE and ALTER for song_tags.  Those require 1.2.  All 
the pasted output is in fact from 1.1.)
)

 Make CQL work naturally with wide rows
 --

 Key: CASSANDRA-4815
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4815
 Project: Cassandra
  Issue Type: Wish
Reporter: Edward Capriolo

 I find that CQL3 is quite obtuse and does not provide me a language useful 
 for accessing my data. First, lets point out how we should design Cassandra 
 data. 
 1) Denormalize
 2) Eliminate seeks
 3) Design for read
 4) optimize for blind writes
 So here is a schema that abides by these tried and tested rules large 
 production uses are employing today. 
 Say we have a table of movie objects:
 Movie
 Name
 Description
 - tags   (string)
 - credits composite(role string, name string )
 -1 likesToday
 -1 blacklisted
 The above structure is a movie notice it hold a mix of static and dynamic 
 columns, but the other all number of columns is not very large. (even if it 
 was larger this is OK as well) Notice this table is not just 
 a single one to many relationship, it has 1 to 1 data and it has two sets of 
 1 to many data.
 The schema today is declared something like this:
 create column family movies
 with default_comparator=UTF8Type and
   column_metadata =
   [
 {column_name: blacklisted, validation_class: int},
 {column_name: likestoday, validation_class: long},
 {column_name: description, validation_class: UTF8Type}
   ];
 We should be able to insert data like this:
 set ['Cassandra Database, not looking for a seQL']['blacklisted']=1;
 set ['Cassandra Database, not looking for a seQL']['likesToday']=34;
 set ['Cassandra Database, not looking for a 
 seQL']['credits-dir']='director:asf';
 set ['Cassandra Database, not looking for a 
 seQL']['credits-jir]='jiraguy:bob';
 set ['Cassandra Database, not looking for a seQL']['tags-action']='';
 set ['Cassandra Database, not looking for a seQL']['tags-adventure']='';
 set ['Cassandra Database, not looking for a seQL']['tags-romance']='';
 set ['Cassandra Database, not looking for a seQL']['tags-programming']='';
 This is the correct way to do it. 1 seek to find all the information related 
 to a movie. As long as this row does
 not get large there is no reason to optimize by breaking data into other 
 column families. (Notice you can not transpose this
 because movies is two 1-to-many relationships of potentially different types)
 Lets look at the CQL3 way to do this design:
 First, contrary to the original design of cassandra CQL does not like wide 
 rows. It also does not have a good way to dealing with dynamic rows together 
 with static rows either.
 You have two options:
 Option 1: lose all schema
 create table movies ( name string, column blob, value blob, primary 
 key(name)) with compact storage.
 This method is not so hot we have not lost all our validators, and by the way 
 you have to physically shutdown everything and rename files and recreate your 
 schema if you want to inform cassandra that a current table should be 
 compact. This could at very least be just a metadata change. Also you can not 
 add column schema either.
 Option 2  Normalize (is even worse)
 create table movie (name String, description string, likestoday int, 
 blacklisted int);
 create table movecredits( name string, role string, personname string, 
 primary key(name,role) );
 create table movetags( name string, tag string, primary key (name,tag) );
 This is a terrible design, of the 4 key characteristics how cassandra data 
 should be designed it fails 3:
 It does not:
 1) Denormalize
 2) Eliminate seeks
 3) Design for read
 Why is Cassandra steering toward this course, by making a language that does 
 not understand wide rows?
 So what can be done? My suggestions: 
 Cassandra needs to lose the COMPACT STORAGE conversions. Each table needs a 
 virtual view that is compact storage with no work to migrate data and 
 recreate schemas. Every table should have a compact view for the schemaless, 
 or a simple query hint like /*transposed*/ should make this change.
 Metadata should be definable by regex. For example, all columnes named tag* 
 are of type string.
 CQL should have the column[slice_start] .. column[slice_end] operator from 
 cql2. 
 CQL should support current users, users should not have 

[jira] [Commented] (CASSANDRA-4784) Create separate sstables for each token range handled by a node

2012-10-22 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne commented on CASSANDRA-4784:
-

bq. I do still see this as useful for backup/restore in the general case though

While I kind of agree, I want to note that backuping data from only one replica 
runs the risk of missing whatever data on which the node is not consistent, 
unless you've run a repair just before. I suppose some may prefer just running 
the repair prior to the backing or, especially if they are running regular 
repairs, consider that good enough, but just wanted to note that at least in 
theory that's not completely bulletproof.

 Create separate sstables for each token range handled by a node
 ---

 Key: CASSANDRA-4784
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4784
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: sankalp kohli
Priority: Minor
  Labels: perfomance

 Currently, each sstable has data for all the ranges that node is handling. If 
 we change that and rather have separate sstables for each range that node is 
 handling, it can lead to some improvements.
 Improvements
 1) Node rebuild will be very fast as sstables can be directly copied over to 
 the bootstrapping node. It will minimize any application level logic. We can 
 directly use Linux native methods to transfer sstables without using CPU and 
 putting less pressure on the serving node. I think in theory it will be the 
 fastest way to transfer data. 
 2) Backup can only transfer sstables for a node which belong to its primary 
 keyrange. 
 3) ETL process can only copy one replica of data and will be much faster. 
 Changes:
 We can split the writes into multiple memtables for each range it is 
 handling. The sstables being flushed from these can have details of which 
 range of data it is handling.
 There will be no change I think for any reads as they work with interleaved 
 data anyway. But may be we can improve there as well? 
 Complexities:
 The change does not look very complicated. I am not taking into account how 
 it will work when ranges are being changed for nodes. 
 Vnodes might make this work more complicated. We can also have a bit on each 
 sstable which says whether it is primary data or not. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Created] (CASSANDRA-4846) BulkLoader throws NPE at start up

2012-10-22 Thread Yuki Morishita (JIRA)
Yuki Morishita created CASSANDRA-4846:
-

 Summary: BulkLoader throws NPE at start up
 Key: CASSANDRA-4846
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4846
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.2.0 beta 2
Reporter: Yuki Morishita


BulkLoader in trunk throws below exception at start up and exit abnormally.

{code}
Exception in thread main java.lang.ExceptionInInitializerError
at 
org.apache.cassandra.io.sstable.SSTableReader.init(SSTableReader.java:87)
at 
org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:180)
at 
org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:148)
at 
org.apache.cassandra.io.sstable.SSTableLoader$1.accept(SSTableLoader.java:96)
at java.io.File.list(File.java:1010)
at 
org.apache.cassandra.io.sstable.SSTableLoader.openSSTables(SSTableLoader.java:67)
at 
org.apache.cassandra.io.sstable.SSTableLoader.stream(SSTableLoader.java:117)
at org.apache.cassandra.tools.BulkLoader.main(BulkLoader.java:63)
Caused by: java.lang.NullPointerException
at 
org.apache.cassandra.service.CacheService.initRowCache(CacheService.java:154)
at 
org.apache.cassandra.service.CacheService.init(CacheService.java:102)
at 
org.apache.cassandra.service.CacheService.clinit(CacheService.java:83)
... 8 more
{code}

This comes from CASSANDRA-4732, which moved keyCache in SSTableReader 
initialization at instance creation. This causes access to CacheService that 
did not happen for v1.1 and ends up NPE because BulkLoader does not load 
cassandra.yaml.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4815) Make CQL work naturally with wide rows

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis commented on CASSANDRA-4815:
---

To add to that, if you want mostly static columns, but some schemaless then 
you can throw the schemaless ones in a Map.  This will NOT be easily 
accessible from Thrift -- but it's a good example of the kinds of things that 
cql3 makes easier.

 Make CQL work naturally with wide rows
 --

 Key: CASSANDRA-4815
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4815
 Project: Cassandra
  Issue Type: Wish
Reporter: Edward Capriolo

 I find that CQL3 is quite obtuse and does not provide me a language useful 
 for accessing my data. First, lets point out how we should design Cassandra 
 data. 
 1) Denormalize
 2) Eliminate seeks
 3) Design for read
 4) optimize for blind writes
 So here is a schema that abides by these tried and tested rules large 
 production uses are employing today. 
 Say we have a table of movie objects:
 Movie
 Name
 Description
 - tags   (string)
 - credits composite(role string, name string )
 -1 likesToday
 -1 blacklisted
 The above structure is a movie notice it hold a mix of static and dynamic 
 columns, but the other all number of columns is not very large. (even if it 
 was larger this is OK as well) Notice this table is not just 
 a single one to many relationship, it has 1 to 1 data and it has two sets of 
 1 to many data.
 The schema today is declared something like this:
 create column family movies
 with default_comparator=UTF8Type and
   column_metadata =
   [
 {column_name: blacklisted, validation_class: int},
 {column_name: likestoday, validation_class: long},
 {column_name: description, validation_class: UTF8Type}
   ];
 We should be able to insert data like this:
 set ['Cassandra Database, not looking for a seQL']['blacklisted']=1;
 set ['Cassandra Database, not looking for a seQL']['likesToday']=34;
 set ['Cassandra Database, not looking for a 
 seQL']['credits-dir']='director:asf';
 set ['Cassandra Database, not looking for a 
 seQL']['credits-jir]='jiraguy:bob';
 set ['Cassandra Database, not looking for a seQL']['tags-action']='';
 set ['Cassandra Database, not looking for a seQL']['tags-adventure']='';
 set ['Cassandra Database, not looking for a seQL']['tags-romance']='';
 set ['Cassandra Database, not looking for a seQL']['tags-programming']='';
 This is the correct way to do it. 1 seek to find all the information related 
 to a movie. As long as this row does
 not get large there is no reason to optimize by breaking data into other 
 column families. (Notice you can not transpose this
 because movies is two 1-to-many relationships of potentially different types)
 Lets look at the CQL3 way to do this design:
 First, contrary to the original design of cassandra CQL does not like wide 
 rows. It also does not have a good way to dealing with dynamic rows together 
 with static rows either.
 You have two options:
 Option 1: lose all schema
 create table movies ( name string, column blob, value blob, primary 
 key(name)) with compact storage.
 This method is not so hot we have not lost all our validators, and by the way 
 you have to physically shutdown everything and rename files and recreate your 
 schema if you want to inform cassandra that a current table should be 
 compact. This could at very least be just a metadata change. Also you can not 
 add column schema either.
 Option 2  Normalize (is even worse)
 create table movie (name String, description string, likestoday int, 
 blacklisted int);
 create table movecredits( name string, role string, personname string, 
 primary key(name,role) );
 create table movetags( name string, tag string, primary key (name,tag) );
 This is a terrible design, of the 4 key characteristics how cassandra data 
 should be designed it fails 3:
 It does not:
 1) Denormalize
 2) Eliminate seeks
 3) Design for read
 Why is Cassandra steering toward this course, by making a language that does 
 not understand wide rows?
 So what can be done? My suggestions: 
 Cassandra needs to lose the COMPACT STORAGE conversions. Each table needs a 
 virtual view that is compact storage with no work to migrate data and 
 recreate schemas. Every table should have a compact view for the schemaless, 
 or a simple query hint like /*transposed*/ should make this change.
 Metadata should be definable by regex. For example, all columnes named tag* 
 are of type string.
 CQL should have the column[slice_start] .. column[slice_end] operator from 
 cql2. 
 CQL should support current users, users should not have to 
 switch between CQL versions, and possibly thrift, to work with wide rows. The 
 language should work for them even if 
 it not expressly designed for them. 

[jira] [Commented] (CASSANDRA-4784) Create separate sstables for each token range handled by a node

2012-10-22 Thread sankalp kohli (JIRA)

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

sankalp kohli commented on CASSANDRA-4784:
--

Yes it is required. But running repair is easier and cheaper than stores N 
copies of same data. 

 Create separate sstables for each token range handled by a node
 ---

 Key: CASSANDRA-4784
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4784
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: sankalp kohli
Priority: Minor
  Labels: perfomance

 Currently, each sstable has data for all the ranges that node is handling. If 
 we change that and rather have separate sstables for each range that node is 
 handling, it can lead to some improvements.
 Improvements
 1) Node rebuild will be very fast as sstables can be directly copied over to 
 the bootstrapping node. It will minimize any application level logic. We can 
 directly use Linux native methods to transfer sstables without using CPU and 
 putting less pressure on the serving node. I think in theory it will be the 
 fastest way to transfer data. 
 2) Backup can only transfer sstables for a node which belong to its primary 
 keyrange. 
 3) ETL process can only copy one replica of data and will be much faster. 
 Changes:
 We can split the writes into multiple memtables for each range it is 
 handling. The sstables being flushed from these can have details of which 
 range of data it is handling.
 There will be no change I think for any reads as they work with interleaved 
 data anyway. But may be we can improve there as well? 
 Complexities:
 The change does not look very complicated. I am not taking into account how 
 it will work when ranges are being changed for nodes. 
 Vnodes might make this work more complicated. We can also have a bit on each 
 sstable which says whether it is primary data or not. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4208) ColumnFamilyOutputFormat should support writing to multiple column families

2012-10-22 Thread Michael Kjellman (JIRA)

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

Michael Kjellman commented on CASSANDRA-4208:
-

Robbie - I'm okay with that. but not sure then we should have the BOF patch you 
provided applied if it doesn't work. I'm still working on debugging exactly why 
it doesn't stream but getting an environment setup to debug the whole process 
has been difficult.

If anything maybe we should revert the change to BOF keep the other changes and 
then open another BOF bug for multiple output support?

 ColumnFamilyOutputFormat should support writing to multiple column families
 ---

 Key: CASSANDRA-4208
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4208
 Project: Cassandra
  Issue Type: Improvement
  Components: Hadoop
Affects Versions: 1.1.0
Reporter: Robbie Strickland
Assignee: Robbie Strickland
 Fix For: 1.2.0 beta 2

 Attachments: cassandra-1.1-4208.txt, cassandra-1.1-4208-v2.txt, 
 cassandra-1.1-4208-v3.txt, cassandra-1.1-4208-v4.txt, trunk-4208.txt, 
 trunk-4208-v2.txt, trunk-4208-v3.txt


 It is not currently possible to output records to more than one column family 
 in a single reducer.  Considering that writing values to Cassandra often 
 involves multiple column families (i.e. updating your index when you insert a 
 new value), this seems overly restrictive.  I am submitting a patch that 
 moves the specification of column family from the job configuration to the 
 write() call in ColumnFamilyRecordWriter.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4815) Make CQL work naturally with wide rows

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis commented on CASSANDRA-4815:
---

bq. What does this mean? 'We can do that'. If we have an old style schema don't 
we need to be able to alter a current table.

Only if you want to add meaningful names.  That's what this next part is saying:

If we simply use the old schema directly as-is, Cassandra will give cell names 
and values autogenerated CQL3 names: column1, column2, and so forth. Here I’m 
accessing the data inserted earlier from CQL2, but with cqlsh --cql3:

{noformat}
SELECT * FROM song_tags;

id   | column1 | value
--+-+---
8a172618-b121-4136-bb10-f665cfc469eb |2007 |
8a172618-b121-4136-bb10-f665cfc469eb |  covers |
a3e64f8f-bd44-4f28-b8d9-6938726e34d4 |1973 |
a3e64f8f-bd44-4f28-b8d9-6938726e34d4 |   blues |
{noformat}

... that said, as Sylvain points out we do have CASSANDRA-4822 open to allow 
changing those default names without dropping and recreating the table 
definition.

bq. Does it make sense to implement CLI like SET and GET?

Not in CQL-the-language, and I don't think even in cqlsh-the-utility.  I 
understand the appeal of the convenience, but the abstraction leakage it would 
introduce threatens to undo all the work we're doing to make CQL3 something you 
can use on its own terms.

(As far as performance goes, prepared statements make the length of the string 
being parsed initially a non-issue.)

 Make CQL work naturally with wide rows
 --

 Key: CASSANDRA-4815
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4815
 Project: Cassandra
  Issue Type: Wish
Reporter: Edward Capriolo

 I find that CQL3 is quite obtuse and does not provide me a language useful 
 for accessing my data. First, lets point out how we should design Cassandra 
 data. 
 1) Denormalize
 2) Eliminate seeks
 3) Design for read
 4) optimize for blind writes
 So here is a schema that abides by these tried and tested rules large 
 production uses are employing today. 
 Say we have a table of movie objects:
 Movie
 Name
 Description
 - tags   (string)
 - credits composite(role string, name string )
 -1 likesToday
 -1 blacklisted
 The above structure is a movie notice it hold a mix of static and dynamic 
 columns, but the other all number of columns is not very large. (even if it 
 was larger this is OK as well) Notice this table is not just 
 a single one to many relationship, it has 1 to 1 data and it has two sets of 
 1 to many data.
 The schema today is declared something like this:
 create column family movies
 with default_comparator=UTF8Type and
   column_metadata =
   [
 {column_name: blacklisted, validation_class: int},
 {column_name: likestoday, validation_class: long},
 {column_name: description, validation_class: UTF8Type}
   ];
 We should be able to insert data like this:
 set ['Cassandra Database, not looking for a seQL']['blacklisted']=1;
 set ['Cassandra Database, not looking for a seQL']['likesToday']=34;
 set ['Cassandra Database, not looking for a 
 seQL']['credits-dir']='director:asf';
 set ['Cassandra Database, not looking for a 
 seQL']['credits-jir]='jiraguy:bob';
 set ['Cassandra Database, not looking for a seQL']['tags-action']='';
 set ['Cassandra Database, not looking for a seQL']['tags-adventure']='';
 set ['Cassandra Database, not looking for a seQL']['tags-romance']='';
 set ['Cassandra Database, not looking for a seQL']['tags-programming']='';
 This is the correct way to do it. 1 seek to find all the information related 
 to a movie. As long as this row does
 not get large there is no reason to optimize by breaking data into other 
 column families. (Notice you can not transpose this
 because movies is two 1-to-many relationships of potentially different types)
 Lets look at the CQL3 way to do this design:
 First, contrary to the original design of cassandra CQL does not like wide 
 rows. It also does not have a good way to dealing with dynamic rows together 
 with static rows either.
 You have two options:
 Option 1: lose all schema
 create table movies ( name string, column blob, value blob, primary 
 key(name)) with compact storage.
 This method is not so hot we have not lost all our validators, and by the way 
 you have to physically shutdown everything and rename files and recreate your 
 schema if you want to inform cassandra that a current table should be 
 compact. This could at very least be just a metadata change. Also you can not 
 add column schema either.
 Option 2  Normalize (is even worse)
 create table movie (name String, description string, likestoday int, 
 blacklisted int);
 create table movecredits( name string, role 

[jira] [Commented] (CASSANDRA-4417) invalid counter shard detected

2012-10-22 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne commented on CASSANDRA-4417:
-

Quick question: do you always increment by the same value by any chance? I'm 
asking because the last log you've pasted indicates the conflicting information 
found correspond to 1 increment only, and in the first case the value is 1, on 
the second the value is 2. If you always increment by say 1, that would tell us 
which one is wrong (I'm not yet sure which conclusion I would draw from that 
but more info can't hurt :)).

 invalid counter shard detected 
 ---

 Key: CASSANDRA-4417
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4417
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.1
 Environment: Amazon Linux
Reporter: Senthilvel Rangaswamy

 Seeing errors like these:
 2012-07-06_07:00:27.22662 ERROR 07:00:27,226 invalid counter shard detected; 
 (17bfd850-ac52-11e1--6ecd0b5b61e7, 1, 13) and 
 (17bfd850-ac52-11e1--6ecd0b5b61e7, 1, 1) differ only in count; will pick 
 highest to self-heal; this indicates a bug or corruption generated a bad 
 counter shard
 What does it mean ?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4417) invalid counter shard detected

2012-10-22 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne commented on CASSANDRA-4417:
-

bq. Could this be related to: CASSANDRA-4071?

I missed that earlier on, but yes, Bartłomiej is correct, CASSANDRA-4071 will 
totally trigger 'invalid counter shard detected' messages. As described in the 
ticket, if you don't use RF=1, this shouldn't actually create data loss, but it 
would still trigger the log until things get compacted away.

 invalid counter shard detected 
 ---

 Key: CASSANDRA-4417
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4417
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.1
 Environment: Amazon Linux
Reporter: Senthilvel Rangaswamy

 Seeing errors like these:
 2012-07-06_07:00:27.22662 ERROR 07:00:27,226 invalid counter shard detected; 
 (17bfd850-ac52-11e1--6ecd0b5b61e7, 1, 13) and 
 (17bfd850-ac52-11e1--6ecd0b5b61e7, 1, 1) differ only in count; will pick 
 highest to self-heal; this indicates a bug or corruption generated a bad 
 counter shard
 What does it mean ?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4764) Clean out STREAM_STAGE vestiges

2012-10-22 Thread Yuki Morishita (JIRA)

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

Yuki Morishita commented on CASSANDRA-4764:
---

For removing STREAM stage, +1.
Attached patch seems against 1.1 and contains diff from different issue though.

 Clean out STREAM_STAGE vestiges
 ---

 Key: CASSANDRA-4764
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4764
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.1.0
Reporter: Nick Bailey
Assignee: Jonathan Ellis
Priority: Minor
  Labels: streaming
 Fix For: 1.2.0 beta 2

 Attachments: 4764.txt


 Currently it appears as though bulk loading operations don't run in any 
 stage. Seems like they should be running in STREAM_STAGE.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4841) Exception thrown during nodetool repair -pr

2012-10-22 Thread Michael Kjellman (JIRA)

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

Michael Kjellman commented on CASSANDRA-4841:
-

jmx was dead, as was thrift and gossip. so the node was effectively in a 
crashed state imho.

 Exception thrown during nodetool repair -pr
 ---

 Key: CASSANDRA-4841
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4841
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.6
 Environment: Ubuntu 12.04 x64, 32GB RAM
Reporter: Michael Kjellman
Priority: Critical

 During a nodetool repair -pr an exception was thrown.
 root@scl-cas04:~# nodetool repair -pr
 Exception in thread main java.rmi.UnmarshalException: Error unmarshaling 
 return header; nested exception is:
 java.io.EOFException
 at 
 sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:227)
 at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:160)
 at com.sun.jmx.remote.internal.PRef.invoke(Unknown Source)
 at javax.management.remote.rmi.RMIConnectionImpl_Stub.invoke(Unknown 
 Source)
 at 
 javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.invoke(RMIConnector.java:1017)
 at 
 javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:305)
 at $Proxy0.forceTableRepairPrimaryRange(Unknown Source)
 at 
 org.apache.cassandra.tools.NodeProbe.forceTableRepairPrimaryRange(NodeProbe.java:209)
 at 
 org.apache.cassandra.tools.NodeCmd.optionalKSandCFs(NodeCmd.java:1044)
 at org.apache.cassandra.tools.NodeCmd.main(NodeCmd.java:834)
 Caused by: java.io.EOFException
 at java.io.DataInputStream.readByte(DataInputStream.java:267)
 at 
 sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:213)
 ... 9 more
 Logs:
 WARN 20:53:27,135 Heap is 0.9710037912028483 full.  You may need to reduce 
 memtable and/or cache sizes.  Cassandr
 a will now flush up to the two largest memtables to free up memory.  Adjust 
 flush_largest_memtables_at threshold i
 n cassandra.yaml if you don't want Cassandra to do this automatically
 regardless of configuration issues a repair shouldn't crash a node.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Created] (CASSANDRA-4847) Bad disk causes death of node despite disk_failure_policy

2012-10-22 Thread Kirk True (JIRA)
Kirk True created CASSANDRA-4847:


 Summary: Bad disk causes death of node despite disk_failure_policy
 Key: CASSANDRA-4847
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4847
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.2.0 beta 1
Reporter: Kirk True
Assignee: Kirk True


Steps:

# Create a bad disk via device mapper
# Specify good disk and bad disk is data directory
# Set {{disk_failure_policy}} to {{best_effort}} in cassandra.yaml
# Start node

Expected:

Attempts to create system directories to fail (as expected) on bad disk, and 
have it added to blacklisted directories.

Actual:

Node start up aborts due to uncaught error:

{noformat}
FSWriteError in /mnt/bad_disk/system_traces/sessions
at 
org.apache.cassandra.io.util.FileUtils.createDirectory(FileUtils.java:258)
at org.apache.cassandra.db.Directories.init(Directories.java:104)
at org.apache.cassandra.db.Directories.create(Directories.java:90)
at 
org.apache.cassandra.db.ColumnFamilyStore.scrubDataDirectories(ColumnFamilyStore.java:404)
at 
org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:227)
at 
org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:393)
at 
org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:436)
Caused by: java.io.IOException: Failed to mkdirs 
/mnt/bad_disk/system_traces/sessions
... 7 more
{noformat}


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Created] (CASSANDRA-4848) Expose black-listed directories via JMX

2012-10-22 Thread Kirk True (JIRA)
Kirk True created CASSANDRA-4848:


 Summary: Expose black-listed directories via JMX
 Key: CASSANDRA-4848
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4848
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Affects Versions: 1.2.0 beta 1
Reporter: Kirk True
Assignee: Kirk True


JBOD support included failure modes (CASSANDRA-2118) that insert directories on 
bad disks to the {{BlacklistedDirectories}} class. However, it doesn't appear 
that the list of directories is exposed to administrators via JMX or other 
means. So unless they're scouring the logs or being notified at the OS level, 
they will remain unaware of the issue.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Assigned] (CASSANDRA-4842) DateType in Column MetaData causes server crash

2012-10-22 Thread Pavel Yaskevich (JIRA)

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

Pavel Yaskevich reassigned CASSANDRA-4842:
--

Assignee: Sylvain Lebresne  (was: Pavel Yaskevich)

This is the problem with CompositeType, because DateType would convert input to 
a human readable format with has *colons* inside and on 
AbstractCompositeType.fromString it tries to spit composite into parts based on 
colons as well.

 DateType in Column MetaData causes server crash
 ---

 Key: CASSANDRA-4842
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4842
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.0
 Environment: All
Reporter: Russell Bradberry
Assignee: Sylvain Lebresne
Priority: Minor
 Fix For: 1.1.7, 1.2.0 beta 2


 when creating a column family with column metadata containing a date, there 
 is a server crash that will prevent startup.
 To recreate from the cli:
 {code}
 create keyspace test;
 use test;
 create column family foo
   with column_type = 'Standard'
   and comparator = 'CompositeType(LongType,DateType)'
   and default_validation_class = 'UTF8Type'
   and key_validation_class = 'UTF8Type'
   and column_metadata = [ 
 { column_name : '1234:1350695443433', validation_class : BooleanType} 
   ];
 {code}
 Produces this error in the logs:
 {code}
 ERROR 21:11:18,795 Error occurred during processing of message.
 java.lang.RuntimeException: java.util.concurrent.ExecutionException: 
 org.apache.cassandra.db.marshal.MarshalException: unable to coerce 
 '2012-10-19 21' to a  formatted date (long)
   at 
 org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:373)
   at 
 org.apache.cassandra.service.MigrationManager.announce(MigrationManager.java:194)
   at 
 org.apache.cassandra.service.MigrationManager.announceNewColumnFamily(MigrationManager.java:141)
   at 
 org.apache.cassandra.thrift.CassandraServer.system_add_column_family(CassandraServer.java:931)
   at 
 org.apache.cassandra.thrift.Cassandra$Processor$system_add_column_family.getResult(Cassandra.java:3410)
   at 
 org.apache.cassandra.thrift.Cassandra$Processor$system_add_column_family.getResult(Cassandra.java:3398)
   at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
   at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
   at 
 org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:186)
   at 
 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
   at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
   at java.lang.Thread.run(Thread.java:680)
 Caused by: java.util.concurrent.ExecutionException: 
 org.apache.cassandra.db.marshal.MarshalException: unable to coerce 
 '2012-10-19 21' to a  formatted date (long)
   at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
   at java.util.concurrent.FutureTask.get(FutureTask.java:83)
   at 
 org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:369)
   ... 11 more
 Caused by: org.apache.cassandra.db.marshal.MarshalException: unable to coerce 
 '2012-10-19 21' to a  formatted date (long)
   at 
 org.apache.cassandra.db.marshal.DateType.dateStringToTimestamp(DateType.java:117)
   at org.apache.cassandra.db.marshal.DateType.fromString(DateType.java:85)
   at 
 org.apache.cassandra.db.marshal.AbstractCompositeType.fromString(AbstractCompositeType.java:213)
   at 
 org.apache.cassandra.config.ColumnDefinition.fromSchema(ColumnDefinition.java:257)
   at 
 org.apache.cassandra.config.CFMetaData.addColumnDefinitionSchema(CFMetaData.java:1318)
   at 
 org.apache.cassandra.config.CFMetaData.fromSchema(CFMetaData.java:1250)
   at 
 org.apache.cassandra.config.KSMetaData.deserializeColumnFamilies(KSMetaData.java:299)
   at 
 org.apache.cassandra.db.DefsTable.mergeColumnFamilies(DefsTable.java:434)
   at org.apache.cassandra.db.DefsTable.mergeSchema(DefsTable.java:346)
   at 
 org.apache.cassandra.service.MigrationManager$1.call(MigrationManager.java:217)
   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
   at java.util.concurrent.FutureTask.run(FutureTask.java:138)
   ... 3 more
 Caused by: java.text.ParseException: Unable to parse the date: 2012-10-19 21
   at org.apache.commons.lang.time.DateUtils.parseDate(DateUtils.java:285)
   at 
 org.apache.cassandra.db.marshal.DateType.dateStringToTimestamp(DateType.java:113)
   ... 14 more
 ERROR 21:11:18,795 Exception in thread Thread[MigrationStage:1,5,main]
 org.apache.cassandra.db.marshal.MarshalException: unable to coerce 
 

[jira] [Resolved] (CASSANDRA-4841) Exception thrown during nodetool repair -pr

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis resolved CASSANDRA-4841.
---

Resolution: Invalid

Sounds like you were GC storming then.  Grep for GCInspector or top compared 
with thread IDs could confirm this.

Often this happens because sstable structures outgrew the space Cassandra 
reserves for it in the heap.  You can reduce these with the (global) 
index_interval and (per-CF) bloom_filter_fp_chance settings.  Unfortunately 
Cassandra is not yet able to self-tune this.

 Exception thrown during nodetool repair -pr
 ---

 Key: CASSANDRA-4841
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4841
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.6
 Environment: Ubuntu 12.04 x64, 32GB RAM
Reporter: Michael Kjellman
Priority: Critical

 During a nodetool repair -pr an exception was thrown.
 root@scl-cas04:~# nodetool repair -pr
 Exception in thread main java.rmi.UnmarshalException: Error unmarshaling 
 return header; nested exception is:
 java.io.EOFException
 at 
 sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:227)
 at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:160)
 at com.sun.jmx.remote.internal.PRef.invoke(Unknown Source)
 at javax.management.remote.rmi.RMIConnectionImpl_Stub.invoke(Unknown 
 Source)
 at 
 javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.invoke(RMIConnector.java:1017)
 at 
 javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:305)
 at $Proxy0.forceTableRepairPrimaryRange(Unknown Source)
 at 
 org.apache.cassandra.tools.NodeProbe.forceTableRepairPrimaryRange(NodeProbe.java:209)
 at 
 org.apache.cassandra.tools.NodeCmd.optionalKSandCFs(NodeCmd.java:1044)
 at org.apache.cassandra.tools.NodeCmd.main(NodeCmd.java:834)
 Caused by: java.io.EOFException
 at java.io.DataInputStream.readByte(DataInputStream.java:267)
 at 
 sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:213)
 ... 9 more
 Logs:
 WARN 20:53:27,135 Heap is 0.9710037912028483 full.  You may need to reduce 
 memtable and/or cache sizes.  Cassandr
 a will now flush up to the two largest memtables to free up memory.  Adjust 
 flush_largest_memtables_at threshold i
 n cassandra.yaml if you don't want Cassandra to do this automatically
 regardless of configuration issues a repair shouldn't crash a node.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[1/7] git commit: Merge branch 'cassandra-1.1' into trunk

2012-10-22 Thread yukim
Updated Branches:
  refs/heads/cassandra-1.1 f22e2c459 - 95fb613bf
  refs/heads/trunk a58b87020 - dd8a3c450


Merge branch 'cassandra-1.1' into trunk

Conflicts:
src/java/org/apache/cassandra/service/StorageService.java
src/java/org/apache/cassandra/thrift/CassandraServer.java


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

Branch: refs/heads/trunk
Commit: dd8a3c45072efbc0fea14e98552b4b5a9dab9de3
Parents: a58b870 95fb613
Author: Yuki Morishita yu...@apache.org
Authored: Mon Oct 22 13:53:11 2012 -0500
Committer: Yuki Morishita yu...@apache.org
Committed: Mon Oct 22 13:53:11 2012 -0500

--
 CHANGES.txt|1 +
 .../apache/cassandra/thrift/CassandraServer.java   |   12 ++-
 .../cassandra/service/CassandraServerTest.java |   91 ++-
 3 files changed, 70 insertions(+), 34 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/dd8a3c45/CHANGES.txt
--
diff --cc CHANGES.txt
index 4026428,f309ef1..0f7caba
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -40,76 -5,8 +40,77 @@@ Merged from 1.1
 (CASSANDRA-4765)
   * fix wrong leveled compaction progress calculation (CASSANDRA-4807)
   * add a close() method to CRAR to prevent leaking file descriptors 
(CASSANDRA-4820)
+  * fix potential infinite loop in get_count (CASSANDRA-4833)
  
 +
 +1.2-beta1
 + * add atomic_batch_mutate (CASSANDRA-4542, -4635)
 + * increase default max_hint_window_in_ms to 3h (CASSANDRA-4632)
 + * include message initiation time to replicas so they can more
 +   accurately drop timed-out requests (CASSANDRA-2858)
 + * fix clientutil.jar dependencies (CASSANDRA-4566)
 + * optimize WriteResponse (CASSANDRA-4548)
 + * new metrics (CASSANDRA-4009)
 + * redesign KEYS indexes to avoid read-before-write (CASSANDRA-2897)
 + * debug tracing (CASSANDRA-1123)
 + * parallelize row cache loading (CASSANDRA-4282)
 + * Make compaction, flush JBOD-aware (CASSANDRA-4292)
 + * run local range scans on the read stage (CASSANDRA-3687)
 + * clean up ioexceptions (CASSANDRA-2116)
 + * add disk_failure_policy (CASSANDRA-2118)
 + * Introduce new json format with row level deletion (CASSANDRA-4054)
 + * remove redundant name column from schema_keyspaces (CASSANDRA-4433)
 + * improve nodetool ring handling of multi-dc clusters (CASSANDRA-3047)
 + * update NTS calculateNaturalEndpoints to be O(N log N) (CASSANDRA-3881)
 + * add UseCondCardMark XX jvm settings on jdk 1.7 (CASSANDRA-4366)
 + * split up rpc timeout by operation type (CASSANDRA-2819)
 + * rewrite key cache save/load to use only sequential i/o (CASSANDRA-3762)
 + * update MS protocol with a version handshake + broadcast address id
 +   (CASSANDRA-4311)
 + * multithreaded hint replay (CASSANDRA-4189)
 + * add inter-node message compression (CASSANDRA-3127)
 + * remove COPP (CASSANDRA-2479)
 + * Track tombstone expiration and compact when tombstone content is
 +   higher than a configurable threshold, default 20% (CASSANDRA-3442, 4234)
 + * update MurmurHash to version 3 (CASSANDRA-2975)
 + * (CLI) track elapsed time for `delete' operation (CASSANDRA-4060)
 + * (CLI) jline version is bumped to 1.0 to properly  support
 +   'delete' key function (CASSANDRA-4132)
 + * Save IndexSummary into new SSTable 'Summary' component (CASSANDRA-2392, 
4289)
 + * Add support for range tombstones (CASSANDRA-3708)
 + * Improve MessagingService efficiency (CASSANDRA-3617)
 + * Avoid ID conflicts from concurrent schema changes (CASSANDRA-3794)
 + * Set thrift HSHA server thread limit to unlimited by default 
(CASSANDRA-4277)
 + * Avoids double serialization of CF id in RowMutation messages
 +   (CASSANDRA-4293)
 + * stream compressed sstables directly with java nio (CASSANDRA-4297)
 + * Support multiple ranges in SliceQueryFilter (CASSANDRA-3885)
 + * Add column metadata to system column families (CASSANDRA-4018)
 + * (cql3) Always use composite types by default (CASSANDRA-4329)
 + * (cql3) Add support for set, map and list (CASSANDRA-3647)
 + * Validate date type correctly (CASSANDRA-4441)
 + * (cql3) Allow definitions with only a PK (CASSANDRA-4361)
 + * (cql3) Add support for row key composites (CASSANDRA-4179)
 + * improve DynamicEndpointSnitch by using reservoir sampling (CASSANDRA-4038)
 + * (cql3) Add support for 2ndary indexes (CASSANDRA-3680)
 + * (cql3) fix defining more than one PK to be invalid (CASSANDRA-4477)
 + * remove schema agreement checking from all external APIs (Thrift, CQL and 
CQL3) (CASSANDRA-4487)
 + * add Murmur3Partitioner and make it default for new installations 
(CASSANDRA-3772, 4621)
 + * 

[3/7] git commit: fix potential infinite loop in get_count; patch by yukim reviewed by Tyler Hobbs for CASSANDRA-4833

2012-10-22 Thread yukim
fix potential infinite loop in get_count; patch by yukim reviewed by Tyler 
Hobbs for CASSANDRA-4833


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

Branch: refs/heads/trunk
Commit: 95fb613bf996c715392f9aa1f491609b6acaeff5
Parents: f22e2c4
Author: Yuki Morishita yu...@apache.org
Authored: Mon Oct 22 12:16:20 2012 -0500
Committer: Yuki Morishita yu...@apache.org
Committed: Mon Oct 22 12:16:20 2012 -0500

--
 CHANGES.txt|1 +
 .../apache/cassandra/thrift/CassandraServer.java   |   13 ++-
 .../cassandra/service/CassandraServerTest.java |   88 ++-
 3 files changed, 67 insertions(+), 35 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/95fb613b/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 8822c3b..f309ef1 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -5,6 +5,7 @@
(CASSANDRA-4765)
  * fix wrong leveled compaction progress calculation (CASSANDRA-4807)
  * add a close() method to CRAR to prevent leaking file descriptors 
(CASSANDRA-4820)
+ * fix potential infinite loop in get_count (CASSANDRA-4833)
 
 1.1.6
  * Wait for writes on synchronous read digest mismatch (CASSANDRA-4792)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95fb613b/src/java/org/apache/cassandra/thrift/CassandraServer.java
--
diff --git a/src/java/org/apache/cassandra/thrift/CassandraServer.java 
b/src/java/org/apache/cassandra/thrift/CassandraServer.java
index 3bf155e..39b57f3 100644
--- a/src/java/org/apache/cassandra/thrift/CassandraServer.java
+++ b/src/java/org/apache/cassandra/thrift/CassandraServer.java
@@ -428,25 +428,28 @@ public class CassandraServer implements Cassandra.Iface
Integer.MAX_VALUE);
 }
 
-int requestedCount = predicate.slice_range.count;
+final int requestedCount = predicate.slice_range.count;
+int remaining = requestedCount;
 int pages = 0;
 while (true)
 {
-predicate.slice_range.count = Math.min(pageSize, requestedCount);
+predicate.slice_range.count = Math.min(pageSize, Math.max(2, 
remaining)); // fetch at least two columns
 columns = get_slice(key, column_parent, predicate, 
consistency_level);
 if (columns.isEmpty())
 break;
 
-ColumnOrSuperColumn firstColumn = columns.get(columns.size() - 1);
 ByteBuffer firstName = getName(columns.get(0));
 int newColumns = pages == 0 || 
!firstName.equals(predicate.slice_range.start) ? columns.size() : 
columns.size() - 1;
 totalCount += newColumns;
-requestedCount -= newColumns;
+// if we over-counted, just return original limit
+if (totalCount  requestedCount)
+return requestedCount;
+remaining -= newColumns;
 pages++;
 // We're done if either:
 //   - We've querying the number of columns requested by the user
 //   - The last page wasn't full
-if (requestedCount == 0 || columns.size()  
predicate.slice_range.count)
+if (remaining == 0 || columns.size()  predicate.slice_range.count)
 break;
 else
 predicate.slice_range.start = 
getName(columns.get(columns.size() - 1));

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95fb613b/test/unit/org/apache/cassandra/service/CassandraServerTest.java
--
diff --git a/test/unit/org/apache/cassandra/service/CassandraServerTest.java 
b/test/unit/org/apache/cassandra/service/CassandraServerTest.java
index 495d697..48701de 100644
--- a/test/unit/org/apache/cassandra/service/CassandraServerTest.java
+++ b/test/unit/org/apache/cassandra/service/CassandraServerTest.java
@@ -21,40 +21,68 @@ package org.apache.cassandra.service;
 import org.junit.Test;
 
 import org.apache.cassandra.SchemaLoader;
+import org.apache.cassandra.Util;
+import org.apache.cassandra.config.Schema;
+import org.apache.cassandra.db.DecoratedKey;
+import org.apache.cassandra.db.RowMutation;
+import org.apache.cassandra.db.filter.QueryPath;
+import org.apache.cassandra.thrift.*;
+import org.apache.cassandra.utils.ByteBufferUtil;
 
 public class CassandraServerTest extends SchemaLoader
 {
+/**
+ * test get_count() to work correctly with 'count' settings around page 
size.
+ * (CASSANDRA-4833)
+ */
 

[6/7] add describe_splits_ex providing improved split size estimate patch by Piotr Kolaczkowski; reviewed by jbellis for CASSANDRA-4803

2012-10-22 Thread yukim
http://git-wip-us.apache.org/repos/asf/cassandra/blob/533bf3f6/interface/thrift/gen-java/org/apache/cassandra/thrift/CfSplit.java
--
diff --git a/interface/thrift/gen-java/org/apache/cassandra/thrift/CfSplit.java 
b/interface/thrift/gen-java/org/apache/cassandra/thrift/CfSplit.java
new file mode 100644
index 000..2519f9f
--- /dev/null
+++ b/interface/thrift/gen-java/org/apache/cassandra/thrift/CfSplit.java
@@ -0,0 +1,549 @@
+/**
+ * Autogenerated by Thrift Compiler (0.7.0)
+ *
+ * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
+ */
+package org.apache.cassandra.thrift;
+/*
+ * 
+ * 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.
+ * 
+ */
+
+
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Represents input splits used by hadoop ColumnFamilyRecordReaders
+ */
+public class CfSplit implements org.apache.thrift.TBaseCfSplit, 
CfSplit._Fields, java.io.Serializable, Cloneable {
+  private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new 
org.apache.thrift.protocol.TStruct(CfSplit);
+
+  private static final org.apache.thrift.protocol.TField 
START_TOKEN_FIELD_DESC = new org.apache.thrift.protocol.TField(start_token, 
org.apache.thrift.protocol.TType.STRING, (short)1);
+  private static final org.apache.thrift.protocol.TField END_TOKEN_FIELD_DESC 
= new org.apache.thrift.protocol.TField(end_token, 
org.apache.thrift.protocol.TType.STRING, (short)2);
+  private static final org.apache.thrift.protocol.TField ROW_COUNT_FIELD_DESC 
= new org.apache.thrift.protocol.TField(row_count, 
org.apache.thrift.protocol.TType.I64, (short)3);
+
+  public String start_token; // required
+  public String end_token; // required
+  public long row_count; // required
+
+  /** The set of fields this struct contains, along with convenience methods 
for finding and manipulating them. */
+  public enum _Fields implements org.apache.thrift.TFieldIdEnum {
+START_TOKEN((short)1, start_token),
+END_TOKEN((short)2, end_token),
+ROW_COUNT((short)3, row_count);
+
+private static final MapString, _Fields byName = new HashMapString, 
_Fields();
+
+static {
+  for (_Fields field : EnumSet.allOf(_Fields.class)) {
+byName.put(field.getFieldName(), field);
+  }
+}
+
+/**
+ * Find the _Fields constant that matches fieldId, or null if its not 
found.
+ */
+public static _Fields findByThriftId(int fieldId) {
+  switch(fieldId) {
+case 1: // START_TOKEN
+  return START_TOKEN;
+case 2: // END_TOKEN
+  return END_TOKEN;
+case 3: // ROW_COUNT
+  return ROW_COUNT;
+default:
+  return null;
+  }
+}
+
+/**
+ * Find the _Fields constant that matches fieldId, throwing an exception
+ * if it is not found.
+ */
+public static _Fields findByThriftIdOrThrow(int fieldId) {
+  _Fields fields = findByThriftId(fieldId);
+  if (fields == null) throw new IllegalArgumentException(Field  + 
fieldId +  doesn't exist!);
+  return fields;
+}
+
+/**
+ * Find the _Fields constant that matches name, or null if its not found.
+ */
+public static _Fields findByName(String name) {
+  return byName.get(name);
+}
+
+private final short _thriftId;
+private final String _fieldName;
+
+_Fields(short thriftId, String fieldName) {
+  _thriftId = thriftId;
+  _fieldName = fieldName;
+}
+
+public short getThriftFieldId() {
+  return _thriftId;
+}
+
+public String getFieldName() {
+  return _fieldName;
+}
+  }
+
+  // isset id assignments
+  private static final int __ROW_COUNT_ISSET_ID = 0;
+  private BitSet __isset_bit_vector = new BitSet(1);
+
+  public static final Map_Fields, 

[7/7] git commit: fix progress counting in wide row iterator patch by Piotr Koalczkowski; reviewed by jbellis for CASSANDRA-4803

2012-10-22 Thread yukim
fix progress counting in wide row iterator
patch by Piotr Koalczkowski; reviewed by jbellis for CASSANDRA-4803


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

Branch: refs/heads/trunk
Commit: 0bb3a064f3dd34823145124360c049f5d29b91ad
Parents: 72dcc29
Author: Jonathan Ellis jbel...@apache.org
Authored: Fri Oct 19 17:59:09 2012 -0500
Committer: Jonathan Ellis jbel...@apache.org
Committed: Fri Oct 19 18:00:25 2012 -0500

--
 .../cassandra/hadoop/ColumnFamilyRecordReader.java |   23 +-
 1 files changed, 21 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/0bb3a064/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java
--
diff --git a/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java 
b/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java
index fc90e5c..73f9786 100644
--- a/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java
+++ b/src/java/org/apache/cassandra/hadoop/ColumnFamilyRecordReader.java
@@ -106,7 +106,9 @@ public class ColumnFamilyRecordReader extends 
RecordReaderByteBuffer, SortedMap
 
 public float getProgress()
 {
-// TODO this is totally broken for wide rows
+if (!iter.hasNext())
+return 1.0F;
+
 // the progress is likely to be reported slightly off the actual but 
close enough
 float progress = ((float) iter.rowsRead() / totalRowCount);
 return progress  1.0F ? 1.0F : progress;
@@ -423,6 +425,7 @@ public class ColumnFamilyRecordReader extends 
RecordReaderByteBuffer, SortedMap
 {
 private PeekingIteratorPairByteBuffer, SortedMapByteBuffer, 
IColumn wideColumns;
 private ByteBuffer lastColumn = ByteBufferUtil.EMPTY_BYTE_BUFFER;
+private ByteBuffer lastCountedKey = ByteBufferUtil.EMPTY_BYTE_BUFFER;
 
 private void maybeInit()
 {
@@ -476,12 +479,28 @@ public class ColumnFamilyRecordReader extends 
RecordReaderByteBuffer, SortedMap
 if (rows == null)
 return endOfData();
 
-totalRead++;
 PairByteBuffer, SortedMapByteBuffer, IColumn next = 
wideColumns.next();
 lastColumn = next.right.values().iterator().next().name();
+
+maybeCountRow(next);
 return next;
 }
 
+
+/**
+ * Increases the row counter only if we really moved to the next row.
+ * @param next just fetched row slice
+ */
+private void maybeCountRow(PairByteBuffer, SortedMapByteBuffer, 
IColumn next)
+{
+ByteBuffer currentKey = next.left;
+if (!currentKey.equals(lastCountedKey))
+{
+totalRead++;
+lastCountedKey = currentKey;
+}
+}
+
 private class WideColumnIterator extends 
AbstractIteratorPairByteBuffer, SortedMapByteBuffer, IColumn
 {
 private final IteratorKeySlice rows;



[4/7] git commit: missing import

2012-10-22 Thread yukim
missing import


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

Branch: refs/heads/trunk
Commit: f22e2c4596d67138b3da64d3b163743cbbbf82fc
Parents: 533bf3f
Author: Jonathan Ellis jbel...@apache.org
Authored: Fri Oct 19 18:30:43 2012 -0500
Committer: Jonathan Ellis jbel...@apache.org
Committed: Fri Oct 19 18:30:43 2012 -0500

--
 .../cassandra/hadoop/ColumnFamilyInputFormat.java  |5 +
 1 files changed, 1 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f22e2c45/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java
--
diff --git a/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java 
b/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java
index c4c6570..4de6984 100644
--- a/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java
+++ b/src/java/org/apache/cassandra/hadoop/ColumnFamilyInputFormat.java
@@ -43,10 +43,7 @@ import org.apache.cassandra.db.IColumn;
 import org.apache.cassandra.dht.IPartitioner;
 import org.apache.cassandra.dht.Range;
 import org.apache.cassandra.dht.Token;
-import org.apache.cassandra.thrift.Cassandra;
-import org.apache.cassandra.thrift.InvalidRequestException;
-import org.apache.cassandra.thrift.KeyRange;
-import org.apache.cassandra.thrift.TokenRange;
+import org.apache.cassandra.thrift.*;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.mapred.JobConf;
 import org.apache.hadoop.mapred.Reporter;



[2/7] git commit: fix potential infinite loop in get_count; patch by yukim reviewed by Tyler Hobbs for CASSANDRA-4833

2012-10-22 Thread yukim
fix potential infinite loop in get_count; patch by yukim reviewed by Tyler 
Hobbs for CASSANDRA-4833


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

Branch: refs/heads/cassandra-1.1
Commit: 95fb613bf996c715392f9aa1f491609b6acaeff5
Parents: f22e2c4
Author: Yuki Morishita yu...@apache.org
Authored: Mon Oct 22 12:16:20 2012 -0500
Committer: Yuki Morishita yu...@apache.org
Committed: Mon Oct 22 12:16:20 2012 -0500

--
 CHANGES.txt|1 +
 .../apache/cassandra/thrift/CassandraServer.java   |   13 ++-
 .../cassandra/service/CassandraServerTest.java |   88 ++-
 3 files changed, 67 insertions(+), 35 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/95fb613b/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 8822c3b..f309ef1 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -5,6 +5,7 @@
(CASSANDRA-4765)
  * fix wrong leveled compaction progress calculation (CASSANDRA-4807)
  * add a close() method to CRAR to prevent leaking file descriptors 
(CASSANDRA-4820)
+ * fix potential infinite loop in get_count (CASSANDRA-4833)
 
 1.1.6
  * Wait for writes on synchronous read digest mismatch (CASSANDRA-4792)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95fb613b/src/java/org/apache/cassandra/thrift/CassandraServer.java
--
diff --git a/src/java/org/apache/cassandra/thrift/CassandraServer.java 
b/src/java/org/apache/cassandra/thrift/CassandraServer.java
index 3bf155e..39b57f3 100644
--- a/src/java/org/apache/cassandra/thrift/CassandraServer.java
+++ b/src/java/org/apache/cassandra/thrift/CassandraServer.java
@@ -428,25 +428,28 @@ public class CassandraServer implements Cassandra.Iface
Integer.MAX_VALUE);
 }
 
-int requestedCount = predicate.slice_range.count;
+final int requestedCount = predicate.slice_range.count;
+int remaining = requestedCount;
 int pages = 0;
 while (true)
 {
-predicate.slice_range.count = Math.min(pageSize, requestedCount);
+predicate.slice_range.count = Math.min(pageSize, Math.max(2, 
remaining)); // fetch at least two columns
 columns = get_slice(key, column_parent, predicate, 
consistency_level);
 if (columns.isEmpty())
 break;
 
-ColumnOrSuperColumn firstColumn = columns.get(columns.size() - 1);
 ByteBuffer firstName = getName(columns.get(0));
 int newColumns = pages == 0 || 
!firstName.equals(predicate.slice_range.start) ? columns.size() : 
columns.size() - 1;
 totalCount += newColumns;
-requestedCount -= newColumns;
+// if we over-counted, just return original limit
+if (totalCount  requestedCount)
+return requestedCount;
+remaining -= newColumns;
 pages++;
 // We're done if either:
 //   - We've querying the number of columns requested by the user
 //   - The last page wasn't full
-if (requestedCount == 0 || columns.size()  
predicate.slice_range.count)
+if (remaining == 0 || columns.size()  predicate.slice_range.count)
 break;
 else
 predicate.slice_range.start = 
getName(columns.get(columns.size() - 1));

http://git-wip-us.apache.org/repos/asf/cassandra/blob/95fb613b/test/unit/org/apache/cassandra/service/CassandraServerTest.java
--
diff --git a/test/unit/org/apache/cassandra/service/CassandraServerTest.java 
b/test/unit/org/apache/cassandra/service/CassandraServerTest.java
index 495d697..48701de 100644
--- a/test/unit/org/apache/cassandra/service/CassandraServerTest.java
+++ b/test/unit/org/apache/cassandra/service/CassandraServerTest.java
@@ -21,40 +21,68 @@ package org.apache.cassandra.service;
 import org.junit.Test;
 
 import org.apache.cassandra.SchemaLoader;
+import org.apache.cassandra.Util;
+import org.apache.cassandra.config.Schema;
+import org.apache.cassandra.db.DecoratedKey;
+import org.apache.cassandra.db.RowMutation;
+import org.apache.cassandra.db.filter.QueryPath;
+import org.apache.cassandra.thrift.*;
+import org.apache.cassandra.utils.ByteBufferUtil;
 
 public class CassandraServerTest extends SchemaLoader
 {
+/**
+ * test get_count() to work correctly with 'count' settings around page 
size.
+ * (CASSANDRA-4833)
+ 

[jira] [Created] (CASSANDRA-4849) typo in tuning cassandra doc

2012-10-22 Thread Michael Kjellman (JIRA)
Michael Kjellman created CASSANDRA-4849:
---

 Summary: typo in tuning cassandra doc
 Key: CASSANDRA-4849
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4849
 Project: Cassandra
  Issue Type: Bug
  Components: Documentation  website
Affects Versions: 1.1.6
Reporter: Michael Kjellman
Priority: Trivial


http://www.datastax.com/docs/1.1/operations/tuning#tuning-bloomfilters has a 
typo

ALTER TABLE addamsFamily WITH bloomfilter_fp_chance = 0.01; should be ALTER 
TABLE addamsFamily WITH bloom_filter_fp_chance = 0.01;

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4837) IllegalStateException when upgrading schema

2012-10-22 Thread Wade Simmons (JIRA)

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

Wade Simmons commented on CASSANDRA-4837:
-

If I try ro recreate the schema with the CLI with gossip disabled (I used 
join_ring=false) I get exceptions because it gets NPEs trying to send the 
schema over gossip.

 IllegalStateException when upgrading schema
 ---

 Key: CASSANDRA-4837
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4837
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.6
 Environment: Linux
Reporter: Wade Simmons
Assignee: Pavel Yaskevich

 I am upgrading a cluster from 1.1.2 to 1.1.6. When restarting a node with new 
 code, I am seeing this exception repeat in the logs:
 {code}
 ERROR [InternalResponseStage:21] 2012-10-19 00:41:26,794 
 AbstractCassandraDaemon.java (line 135) Exception in thread 
 Thread[InternalResponseStage:21,5,main]
 java.lang.IllegalStateException: One row required, 0 found
 at 
 org.apache.cassandra.cql3.UntypedResultSet.one(UntypedResultSet.java:50)
 at 
 org.apache.cassandra.config.KSMetaData.fromSchema(KSMetaData.java:258)
 at 
 org.apache.cassandra.db.DefsTable.mergeKeyspaces(DefsTable.java:406)
 at org.apache.cassandra.db.DefsTable.mergeSchema(DefsTable.java:355)
 at 
 org.apache.cassandra.db.DefsTable.mergeRemoteSchema(DefsTable.java:329)
 at 
 org.apache.cassandra.service.MigrationManager$MigrationTask$1.response(MigrationManager.java:449)
 at 
 org.apache.cassandra.net.ResponseVerbHandler.doVerb(ResponseVerbHandler.java:45)
 at 
 org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:59)
 at 
 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:662)
 {code}
 I added in some debugging logging to see what Row it was trying to load, and 
 I see this:
 {code}
 Unable to load keyspace schema: 
 Row(key=DecoratedKey(112573196966143652100562749464385838776, 
 5365676d656e7473496e746567726174696f6e54657374), 
 cf=ColumnFamily(schema_keyspaces -deleted at 1350665377628000- []))
 {code}
 The hex key translates to a schema that exists in schema_keyspaces when I 
 query on the rest of the cluster. I tried restarting one of the other nodes 
 without upgrading the jar and it restarted without exceptions.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Resolved] (CASSANDRA-4849) typo in tuning cassandra doc

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis resolved CASSANDRA-4849.
---

Resolution: Fixed

thanks, emailed d...@datastax.com

 typo in tuning cassandra doc
 

 Key: CASSANDRA-4849
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4849
 Project: Cassandra
  Issue Type: Bug
  Components: Documentation  website
Affects Versions: 1.1.6
Reporter: Michael Kjellman
Priority: Trivial

 http://www.datastax.com/docs/1.1/operations/tuning#tuning-bloomfilters has a 
 typo
 ALTER TABLE addamsFamily WITH bloomfilter_fp_chance = 0.01; should be ALTER 
 TABLE addamsFamily WITH bloom_filter_fp_chance = 0.01;

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4813) Problem using BulkOutputFormat while streaming several SSTables simultaneously from a given node.

2012-10-22 Thread Yuki Morishita (JIRA)

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

Yuki Morishita commented on CASSANDRA-4813:
---

This is limitation of BulkOutputFormat right now. Currently, streaming session 
uses (IP, counter) for its ID. Since counter is per JVM, running two or more 
reducers on same node streaming to one cassandra node likely cause session 
conflict, and I think that is causing the issue here.
To resolve this, we need to change the way to distinguish each session(possibly 
by changing to use UUID for session ID).

[~mkjellman] Do you run your reducer on top of cassandra node? If that is the 
case, session conflict I described above may be the cause. If not, there is 
another issue in your one reducer case I think.

 Problem using BulkOutputFormat while streaming several SSTables 
 simultaneously from a given node.
 -

 Key: CASSANDRA-4813
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4813
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.1.3, 1.1.5
 Environment: I am using SLES 10 SP3, Java 6, 4 Cassandra + Hadoop 
 nodes, 3 Hadoop only nodes (datanodes/tasktrackers), 1 namenode/jobtracker. 
 The machines used are Six-Core AMD Opteron(tm) Processor 8431, 24 cores and 
 33 GB of RAM. I get the issue on both cassandra 1.1.3, 1.1.5 and I am using 
 Hadoop 0.20.2.
Reporter: Ralph Romanos
Assignee: Yuki Morishita
  Labels: Bulkoutputformat, Hadoop, SSTables

 The issue occurs when streaming simultaneously SSTables from the same node to 
 a cassandra cluster using SSTableloader. It seems to me that Cassandra cannot 
 handle receiving simultaneously SSTables from the same node. However, when it 
 receives simultaneously SSTables from two different nodes, everything works 
 fine. As a consequence, when using BulkOutputFormat to generate SSTables and 
 stream them to a cassandra cluster, I cannot use more than one reducer per 
 node otherwise I get a java.io.EOFException in the tasktracker's logs and a 
 java.io.IOException: Broken pipe in the Cassandra logs.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Updated] (CASSANDRA-4764) Clean out STREAM_STAGE vestiges

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis updated CASSANDRA-4764:
--

Attachment: 4764-v2.txt

clean v2 attached against trunk

 Clean out STREAM_STAGE vestiges
 ---

 Key: CASSANDRA-4764
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4764
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.1.0
Reporter: Nick Bailey
Assignee: Jonathan Ellis
Priority: Minor
  Labels: streaming
 Fix For: 1.2.0 beta 2

 Attachments: 4764.txt, 4764-v2.txt


 Currently it appears as though bulk loading operations don't run in any 
 stage. Seems like they should be running in STREAM_STAGE.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4813) Problem using BulkOutputFormat while streaming several SSTables simultaneously from a given node.

2012-10-22 Thread Michael Kjellman (JIRA)

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

Michael Kjellman commented on CASSANDRA-4813:
-

[~nakagawayk] Yes - the single reducer was running on top of a Cassandra node. 
Why would having the reducer+the cassandra node cause a session ID collision if 
there is only one reducer?

 Problem using BulkOutputFormat while streaming several SSTables 
 simultaneously from a given node.
 -

 Key: CASSANDRA-4813
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4813
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.1.3, 1.1.5
 Environment: I am using SLES 10 SP3, Java 6, 4 Cassandra + Hadoop 
 nodes, 3 Hadoop only nodes (datanodes/tasktrackers), 1 namenode/jobtracker. 
 The machines used are Six-Core AMD Opteron(tm) Processor 8431, 24 cores and 
 33 GB of RAM. I get the issue on both cassandra 1.1.3, 1.1.5 and I am using 
 Hadoop 0.20.2.
Reporter: Ralph Romanos
Assignee: Yuki Morishita
  Labels: Bulkoutputformat, Hadoop, SSTables

 The issue occurs when streaming simultaneously SSTables from the same node to 
 a cassandra cluster using SSTableloader. It seems to me that Cassandra cannot 
 handle receiving simultaneously SSTables from the same node. However, when it 
 receives simultaneously SSTables from two different nodes, everything works 
 fine. As a consequence, when using BulkOutputFormat to generate SSTables and 
 stream them to a cassandra cluster, I cannot use more than one reducer per 
 node otherwise I get a java.io.EOFException in the tasktracker's logs and a 
 java.io.IOException: Broken pipe in the Cassandra logs.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4837) IllegalStateException when upgrading schema

2012-10-22 Thread Wade Simmons (JIRA)

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

Wade Simmons commented on CASSANDRA-4837:
-

My next attempt will be to recreate the schema on a new 1-node cluster, and 
then copy the resulting sstables over.

 IllegalStateException when upgrading schema
 ---

 Key: CASSANDRA-4837
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4837
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.6
 Environment: Linux
Reporter: Wade Simmons
Assignee: Pavel Yaskevich

 I am upgrading a cluster from 1.1.2 to 1.1.6. When restarting a node with new 
 code, I am seeing this exception repeat in the logs:
 {code}
 ERROR [InternalResponseStage:21] 2012-10-19 00:41:26,794 
 AbstractCassandraDaemon.java (line 135) Exception in thread 
 Thread[InternalResponseStage:21,5,main]
 java.lang.IllegalStateException: One row required, 0 found
 at 
 org.apache.cassandra.cql3.UntypedResultSet.one(UntypedResultSet.java:50)
 at 
 org.apache.cassandra.config.KSMetaData.fromSchema(KSMetaData.java:258)
 at 
 org.apache.cassandra.db.DefsTable.mergeKeyspaces(DefsTable.java:406)
 at org.apache.cassandra.db.DefsTable.mergeSchema(DefsTable.java:355)
 at 
 org.apache.cassandra.db.DefsTable.mergeRemoteSchema(DefsTable.java:329)
 at 
 org.apache.cassandra.service.MigrationManager$MigrationTask$1.response(MigrationManager.java:449)
 at 
 org.apache.cassandra.net.ResponseVerbHandler.doVerb(ResponseVerbHandler.java:45)
 at 
 org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:59)
 at 
 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:662)
 {code}
 I added in some debugging logging to see what Row it was trying to load, and 
 I see this:
 {code}
 Unable to load keyspace schema: 
 Row(key=DecoratedKey(112573196966143652100562749464385838776, 
 5365676d656e7473496e746567726174696f6e54657374), 
 cf=ColumnFamily(schema_keyspaces -deleted at 1350665377628000- []))
 {code}
 The hex key translates to a schema that exists in schema_keyspaces when I 
 query on the rest of the cluster. I tried restarting one of the other nodes 
 without upgrading the jar and it restarted without exceptions.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4764) Clean out STREAM_STAGE vestiges

2012-10-22 Thread Yuki Morishita (JIRA)

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

Yuki Morishita commented on CASSANDRA-4764:
---

+1

 Clean out STREAM_STAGE vestiges
 ---

 Key: CASSANDRA-4764
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4764
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.1.0
Reporter: Nick Bailey
Assignee: Jonathan Ellis
Priority: Minor
  Labels: streaming
 Fix For: 1.2.0 beta 2

 Attachments: 4764.txt, 4764-v2.txt


 Currently it appears as though bulk loading operations don't run in any 
 stage. Seems like they should be running in STREAM_STAGE.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4417) invalid counter shard detected

2012-10-22 Thread Chris Herron (JIRA)

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

Chris Herron commented on CASSANDRA-4417:
-

bq. Quick question: do you always increment by the same value by any chance?

No, sorry just happened to pick that example. We have many other log entries 
where both values are higher and don't differ by 1.

 invalid counter shard detected 
 ---

 Key: CASSANDRA-4417
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4417
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.1
 Environment: Amazon Linux
Reporter: Senthilvel Rangaswamy

 Seeing errors like these:
 2012-07-06_07:00:27.22662 ERROR 07:00:27,226 invalid counter shard detected; 
 (17bfd850-ac52-11e1--6ecd0b5b61e7, 1, 13) and 
 (17bfd850-ac52-11e1--6ecd0b5b61e7, 1, 1) differ only in count; will pick 
 highest to self-heal; this indicates a bug or corruption generated a bad 
 counter shard
 What does it mean ?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4837) IllegalStateException when upgrading schema

2012-10-22 Thread Pavel Yaskevich (JIRA)

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

Pavel Yaskevich commented on CASSANDRA-4837:


Yes, this is what I wanted to suggest.

 IllegalStateException when upgrading schema
 ---

 Key: CASSANDRA-4837
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4837
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.6
 Environment: Linux
Reporter: Wade Simmons
Assignee: Pavel Yaskevich

 I am upgrading a cluster from 1.1.2 to 1.1.6. When restarting a node with new 
 code, I am seeing this exception repeat in the logs:
 {code}
 ERROR [InternalResponseStage:21] 2012-10-19 00:41:26,794 
 AbstractCassandraDaemon.java (line 135) Exception in thread 
 Thread[InternalResponseStage:21,5,main]
 java.lang.IllegalStateException: One row required, 0 found
 at 
 org.apache.cassandra.cql3.UntypedResultSet.one(UntypedResultSet.java:50)
 at 
 org.apache.cassandra.config.KSMetaData.fromSchema(KSMetaData.java:258)
 at 
 org.apache.cassandra.db.DefsTable.mergeKeyspaces(DefsTable.java:406)
 at org.apache.cassandra.db.DefsTable.mergeSchema(DefsTable.java:355)
 at 
 org.apache.cassandra.db.DefsTable.mergeRemoteSchema(DefsTable.java:329)
 at 
 org.apache.cassandra.service.MigrationManager$MigrationTask$1.response(MigrationManager.java:449)
 at 
 org.apache.cassandra.net.ResponseVerbHandler.doVerb(ResponseVerbHandler.java:45)
 at 
 org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:59)
 at 
 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:662)
 {code}
 I added in some debugging logging to see what Row it was trying to load, and 
 I see this:
 {code}
 Unable to load keyspace schema: 
 Row(key=DecoratedKey(112573196966143652100562749464385838776, 
 5365676d656e7473496e746567726174696f6e54657374), 
 cf=ColumnFamily(schema_keyspaces -deleted at 1350665377628000- []))
 {code}
 The hex key translates to a schema that exists in schema_keyspaces when I 
 query on the rest of the cluster. I tried restarting one of the other nodes 
 without upgrading the jar and it restarted without exceptions.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Updated] (CASSANDRA-4808) nodetool doesnt work well with negative tokens

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis updated CASSANDRA-4808:
--

Fix Version/s: (was: 1.2.0 beta 1)
   1.2.0 beta 2

 nodetool doesnt work well with negative tokens
 --

 Key: CASSANDRA-4808
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4808
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Vijay
Assignee: Vijay
Priority: Minor
 Fix For: 1.2.0 beta 2

 Attachments: 0001-CASSANDRA-4808.patch


 ./apache-cassandra-1.2.0-beta1-SNAPSHOT/bin/nodetool move 
 \-2253536297082652573
 Unrecognized option: -2253536297082652573
 usage: java org.apache.cassandra.tools.NodeCmd --host arg command
 
  -cf,--column-family arg   only take a snapshot of the specified column
  family

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-3799) cqlsh: ASSUME should also change how values are sent to cassandra

2012-10-22 Thread Aleksey Yeschenko (JIRA)

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

Aleksey Yeschenko commented on CASSANDRA-3799:
--

Implementing this will require cqlsh to parse every insert, update and batch 
statement (incl every statement inside it), transform the values in accordance 
with ASSUME rules and combining the query again before sending it to Cassandra. 
Is it worth the effort?

 cqlsh: ASSUME should also change how values are sent to cassandra
 -

 Key: CASSANDRA-3799
 URL: https://issues.apache.org/jira/browse/CASSANDRA-3799
 Project: Cassandra
  Issue Type: New Feature
  Components: Tools
Affects Versions: 1.0.3
Reporter: paul cannon
Assignee: Aleksey Yeschenko
Priority: Minor
  Labels: cqlsh
 Fix For: 1.3


 cqlsh's ASSUME command currently only changes how query *return* values are 
 deserialized, and never transforms user CQL text before sending to Cassandra.
 Apparently cassandra-cli also changes how values are interpreted and 
 marshaled for Cassandra, so user expectation is that cqlsh should also do 
 this.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4815) Make CQL work naturally with wide rows

2012-10-22 Thread Edward Capriolo (JIRA)

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

Edward Capriolo commented on CASSANDRA-4815:


{noformat}Not in CQL-the-language, and I don't think even in cqlsh-the-utility. 
I understand the appeal of the convenience, but the abstraction leakage it 
would introduce threatens to undo all the work we're doing to make CQL3 
something you can use on its own terms.{noformat}

But what if I want to think of Cassandra as a memcache not a relational 
database. This is one of my ticket points, CQL should support all the use cases 
it can. You are calling it abstraction leakage but I think of it as a natural 
way with working with Cassandra. But I do agree that SELECTS are better then 
cli 'get' in most cases. What is missing is the SET side. 

{noformat}
CREATE TABLE schemaless (
  key blob,
  column blob,
  value blob,
  PRIMARY KEY (key, column)
) WITH COMPACT STORAGE
{noformat}

Now to insert into this table I need to format everything as hex.

INSERT INTO SCHEMALESS (key,column,value) VALUES ('HEX','HEX','HEX');

The CLI has many useful functions like ascii(' '), or utf8(' '). Assume does 
not seem to have an effect here. This is discussed in CASSANDRA-3799.

 Make CQL work naturally with wide rows
 --

 Key: CASSANDRA-4815
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4815
 Project: Cassandra
  Issue Type: Wish
Reporter: Edward Capriolo

 I find that CQL3 is quite obtuse and does not provide me a language useful 
 for accessing my data. First, lets point out how we should design Cassandra 
 data. 
 1) Denormalize
 2) Eliminate seeks
 3) Design for read
 4) optimize for blind writes
 So here is a schema that abides by these tried and tested rules large 
 production uses are employing today. 
 Say we have a table of movie objects:
 Movie
 Name
 Description
 - tags   (string)
 - credits composite(role string, name string )
 -1 likesToday
 -1 blacklisted
 The above structure is a movie notice it hold a mix of static and dynamic 
 columns, but the other all number of columns is not very large. (even if it 
 was larger this is OK as well) Notice this table is not just 
 a single one to many relationship, it has 1 to 1 data and it has two sets of 
 1 to many data.
 The schema today is declared something like this:
 create column family movies
 with default_comparator=UTF8Type and
   column_metadata =
   [
 {column_name: blacklisted, validation_class: int},
 {column_name: likestoday, validation_class: long},
 {column_name: description, validation_class: UTF8Type}
   ];
 We should be able to insert data like this:
 set ['Cassandra Database, not looking for a seQL']['blacklisted']=1;
 set ['Cassandra Database, not looking for a seQL']['likesToday']=34;
 set ['Cassandra Database, not looking for a 
 seQL']['credits-dir']='director:asf';
 set ['Cassandra Database, not looking for a 
 seQL']['credits-jir]='jiraguy:bob';
 set ['Cassandra Database, not looking for a seQL']['tags-action']='';
 set ['Cassandra Database, not looking for a seQL']['tags-adventure']='';
 set ['Cassandra Database, not looking for a seQL']['tags-romance']='';
 set ['Cassandra Database, not looking for a seQL']['tags-programming']='';
 This is the correct way to do it. 1 seek to find all the information related 
 to a movie. As long as this row does
 not get large there is no reason to optimize by breaking data into other 
 column families. (Notice you can not transpose this
 because movies is two 1-to-many relationships of potentially different types)
 Lets look at the CQL3 way to do this design:
 First, contrary to the original design of cassandra CQL does not like wide 
 rows. It also does not have a good way to dealing with dynamic rows together 
 with static rows either.
 You have two options:
 Option 1: lose all schema
 create table movies ( name string, column blob, value blob, primary 
 key(name)) with compact storage.
 This method is not so hot we have not lost all our validators, and by the way 
 you have to physically shutdown everything and rename files and recreate your 
 schema if you want to inform cassandra that a current table should be 
 compact. This could at very least be just a metadata change. Also you can not 
 add column schema either.
 Option 2  Normalize (is even worse)
 create table movie (name String, description string, likestoday int, 
 blacklisted int);
 create table movecredits( name string, role string, personname string, 
 primary key(name,role) );
 create table movetags( name string, tag string, primary key (name,tag) );
 This is a terrible design, of the 4 key characteristics how cassandra data 
 should be designed it fails 3:
 It does not:
 1) Denormalize
 2) Eliminate seeks
 3) Design for read
 Why is 

[jira] [Commented] (CASSANDRA-3799) cqlsh: ASSUME should also change how values are sent to cassandra

2012-10-22 Thread Edward Capriolo (JIRA)

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

Edward Capriolo commented on CASSANDRA-3799:


It seems like the entire statement could be processed server side. 

INSERT INTO TABLE (name,column,value) VALUES 
(ascii('yo'),ascii('donthis'),ascii('onserver'));

I can not image a JDBC client would parse something like

SELECT trim(concat('a','b')) from table;

on the client side. 

 cqlsh: ASSUME should also change how values are sent to cassandra
 -

 Key: CASSANDRA-3799
 URL: https://issues.apache.org/jira/browse/CASSANDRA-3799
 Project: Cassandra
  Issue Type: New Feature
  Components: Tools
Affects Versions: 1.0.3
Reporter: paul cannon
Assignee: Aleksey Yeschenko
Priority: Minor
  Labels: cqlsh
 Fix For: 1.3


 cqlsh's ASSUME command currently only changes how query *return* values are 
 deserialized, and never transforms user CQL text before sending to Cassandra.
 Apparently cassandra-cli also changes how values are interpreted and 
 marshaled for Cassandra, so user expectation is that cqlsh should also do 
 this.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


git commit: clean up partitioner comments

2012-10-22 Thread jbellis
Updated Branches:
  refs/heads/trunk dd8a3c450 - 8f3d9b837


clean up partitioner comments


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

Branch: refs/heads/trunk
Commit: 8f3d9b8371fa7c5dea83d45d83ec7fe4911a96c0
Parents: dd8a3c4
Author: Jonathan Ellis jbel...@apache.org
Authored: Mon Oct 22 16:15:01 2012 -0500
Committer: Jonathan Ellis jbel...@apache.org
Committed: Mon Oct 22 16:15:08 2012 -0500

--
 NEWS.txt   |5 +
 conf/cassandra.yaml|   11 ---
 .../apache/cassandra/io/sstable/SSTableReader.java |4 ++--
 3 files changed, 11 insertions(+), 9 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/8f3d9b83/NEWS.txt
--
diff --git a/NEWS.txt b/NEWS.txt
index 920940f..3736a2f 100644
--- a/NEWS.txt
+++ b/NEWS.txt
@@ -20,6 +20,11 @@ Upgrading
   the ability to read data files from Cassandra versions at least
   back to 0.6, so a non-rolling upgrade remains possible with just
   one step.
+- The default partitioner for new clusters is Murmur3Partitioner,
+  which is about 10% faster for index-intensive workloads.  Partitioners
+  cannot be changed once data is in the cluster, however, so if you are
+  switching to the 1.2 cassandra.yaml, you should change this to
+  RandomPartitioner or whatever your old partitioner was.
 - If you using counters and upgrading from a version prior to
   1.1.6, you should drain existing Cassandra nodes prior to the
   upgrade to prevent overcount during commitlog replay (see

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8f3d9b83/conf/cassandra.yaml
--
diff --git a/conf/cassandra.yaml b/conf/cassandra.yaml
index 37fc572..a79e150 100644
--- a/conf/cassandra.yaml
+++ b/conf/cassandra.yaml
@@ -62,16 +62,13 @@ authority: org.apache.cassandra.auth.AllowAllAuthority
 # The partitioner is responsible for distributing rows (by key) across
 # nodes in the cluster.  Any IPartitioner may be used, including your
 # own as long as it is on the classpath.  Out of the box, Cassandra
-# provides org.apache.cassandra.dht.RandomPartitioner
-# org.apache.cassandra.dht.ByteOrderedPartitioner,
-# org.apache.cassandra.dht.OrderPreservingPartitioner (deprecated),
-# and org.apache.cassandra.dht.CollatingOrderPreservingPartitioner
-# (deprecated).
+# provides org.apache.cassandra.dht.{Murmur3Partitioner, RandomPartitioner
+# ByteOrderedPartitioner, OrderPreservingPartitioner (deprecated)}.
 # 
 # - RandomPartitioner distributes rows across the cluster evenly by md5.
-#   When in doubt, this is the best option.
+#   This is the default prior to 1.2 and is retained for compatibility.
 # - Murmur3Partitioner is similar to RandomPartioner but uses Murmur3_128
-#   Hash Function instead of md5
+#   Hash Function instead of md5.  When in doubt, this is the best option.
 # - ByteOrderedPartitioner orders rows lexically by key bytes.  BOP allows
 #   scanning rows in key order, but the ordering can generate hot spots
 #   for sequential insertion workloads.

http://git-wip-us.apache.org/repos/asf/cassandra/blob/8f3d9b83/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
--
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java 
b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
index aee576e..1514a2c 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
@@ -172,8 +172,8 @@ public class SSTableReader extends SSTable
 String partitionerName = partitioner.getClass().getCanonicalName();
 if (sstableMetadata.partitioner != null  
!partitionerName.equals(sstableMetadata.partitioner))
 {
-logger.warn(Changing paritioner on a existing cluster can cause 
data loose, Please verify your partitioner in cassandra.yaml);
-logger.error(String.format(Cannot open %s because partitioner 
does not match %s != %s,descriptor, sstableMetadata.partitioner, 
partitionerName));
+logger.error(String.format(Cannot open %s because partitioner 
does not match %s != %s.  Please verify your partitioner in cassandra.yaml,
+   descriptor, 
sstableMetadata.partitioner, partitionerName));
 System.exit(1);
 }
 



[jira] [Commented] (CASSANDRA-4843) When upgrading from 1.1.6 to 1.20 change in partitioner causes nodes not to start

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis commented on CASSANDRA-4843:
---

bq. maybe it's time to change the behavior so that if a partitioner is saved in 
the system table, we use that

Partitioner is saved per-sstable so we can do this panic doublecheck, but you 
have to know (or think you know) the partitioner before you can actually open 
up a system table.  I could be wrong, but I don't think it's a quick fix.

In the meantime, I've updated the comments and error message in 
8f3d9b8371fa7c5dea83d45d83ec7fe4911a96c0.

 When upgrading from 1.1.6 to 1.20 change in partitioner causes nodes not to 
 start
 -

 Key: CASSANDRA-4843
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4843
 Project: Cassandra
  Issue Type: Bug
Reporter: Edward Capriolo
 Fix For: 1.2.0 beta 2


 ERROR 10:17:20,341 Cannot open 
 /home/edward/cassandra/data/system/schema_keyspaces/system-schema_keyspaces-hf-1
  because partitioner does not match 
 org.apache.cassandra.dht.RandomPartitioner != 
 org.apache.cassandra.dht.Murmur3Partitioner
 This is because 1.2 has a new default partitioner, why are we changing the 
 default? Is this wise? The current partitioner has been rock solid for years. 
 Should the previously known partition be stored in the schema like the 
 previously know seed nodes, and schema?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Updated] (CASSANDRA-4750) Add jmx/nodetool methods to enable/disable hinted handoff

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis updated CASSANDRA-4750:
--

 Priority: Minor  (was: Major)
Fix Version/s: (was: 1.2.0 beta 2)
   1.2.1
   Issue Type: New Feature  (was: Improvement)

 Add jmx/nodetool methods to enable/disable hinted handoff
 -

 Key: CASSANDRA-4750
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4750
 Project: Cassandra
  Issue Type: New Feature
Reporter: Brandon Williams
Assignee: Alexey Zotov
Priority: Minor
  Labels: hintedhandoff, nodetool
 Fix For: 1.2.1

 Attachments: cassandra-1.1-4750-enable_disable_hh.txt, 
 cassandra-1.2-4750-enable_disable_hh.txt


 Title says it all.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4783) AE in cql3 select

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis commented on CASSANDRA-4783:
---

+1

 AE in cql3 select
 -

 Key: CASSANDRA-4783
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4783
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.2.0 beta 1
Reporter: Brandon Williams
Assignee: Sylvain Lebresne
 Fix For: 1.2.0 beta 2

 Attachments: 0001-Fix-validation-of-IN-queries.txt, 
 0002-Fix-mixing-list-set-operation-and-regular-updates.txt


 Caused by 'select * from foo where key='blah' and column in (...)
 {noformat}
 ERROR 18:35:46,169 Exception in thread Thread[Thrift:11,5,main]
 java.lang.AssertionError
 at 
 org.apache.cassandra.cql3.statements.SelectStatement.getRequestedColumns(SelectStatement.java:443)
 at 
 org.apache.cassandra.cql3.statements.SelectStatement.makeFilter(SelectStatement.java:312)
 at 
 org.apache.cassandra.cql3.statements.SelectStatement.getSliceCommands(SelectStatement.java:200)
 at 
 org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:125)
 at 
 org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:61)
 at 
 org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:130)
 at 
 org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:138)
 at 
 org.apache.cassandra.thrift.CassandraServer.execute_cql_query(CassandraServer.java:1658)
 at 
 org.apache.cassandra.thrift.Cassandra$Processor$execute_cql_query.getResult(Cassandra.java:3721)
 at 
 org.apache.cassandra.thrift.Cassandra$Processor$execute_cql_query.getResult(Cassandra.java:3709)
 at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
 at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
 at 
 org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:196)
 at 
 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:662)
 {noformat}
 Causes cqlsh to hang forever.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Commented] (CASSANDRA-4788) streaming can put files in the wrong location

2012-10-22 Thread Brandon Williams (JIRA)

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

Brandon Williams commented on CASSANDRA-4788:
-

Thanks. +1

 streaming can put files in the wrong location
 -

 Key: CASSANDRA-4788
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4788
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.2.0 beta 1
Reporter: Brandon Williams
Assignee: Yuki Morishita
 Fix For: 1.2.0 beta 2

 Attachments: 4788.txt


 Some, but not all streaming incorrectly puts files in the top level data 
 directory.  Easiest way to repro that I've seen is bootstrap where it happens 
 100% of the time, but other operations like move and repair seem to do the 
 right thing.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] [Resolved] (CASSANDRA-4793) Commitlog files replayed but not in the order of their ids

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis resolved CASSANDRA-4793.
---

Resolution: Fixed
  Assignee: Fabien Rousseau

belatedly marking resolved

 Commitlog files replayed but not in the order of their ids
 --

 Key: CASSANDRA-4793
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4793
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.1.0
Reporter: Fabien Rousseau
Assignee: Fabien Rousseau
Priority: Minor
  Labels: commitlog
 Fix For: 1.2.0 beta 2

 Attachments: 
 4793-potential-patch-for-correctly-ordering-commit-log-fi.patch, 
 4793-trunk-potential-patch-for-correctly-ordering-commit-log-fi.patch


 I noticed that the commitlog files were not replayed in the order of their 
 ids.
 It seems that they are sorted by last modification date before being 
 replayed, but this does not corresponds to their ids.
 Moreover, last modification date is changed when a file is copied, so, this 
 could also change the order of archived commitlogs.
 Maybe it's safer to sort them using the id in the file name ?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


git commit: remove vestiges of STREAM stage patch by jbellis; reviewed by yukim for CASSANDRA-4764

2012-10-22 Thread jbellis
Updated Branches:
  refs/heads/trunk 8f3d9b837 - 69ad77d8c


remove vestiges of STREAM stage
patch by jbellis; reviewed by yukim for CASSANDRA-4764


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

Branch: refs/heads/trunk
Commit: 69ad77d8c6a1e2c78255d54477798d5619a3a84d
Parents: 8f3d9b8
Author: Jonathan Ellis jbel...@apache.org
Authored: Mon Oct 22 16:27:47 2012 -0500
Committer: Jonathan Ellis jbel...@apache.org
Committed: Mon Oct 22 16:27:47 2012 -0500

--
 .../org/apache/cassandra/concurrent/Stage.java |2 --
 .../apache/cassandra/concurrent/StageManager.java  |1 -
 .../org/apache/cassandra/net/MessagingService.java |1 -
 .../apache/cassandra/service/StorageService.java   |   11 ++-
 4 files changed, 2 insertions(+), 13 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/69ad77d8/src/java/org/apache/cassandra/concurrent/Stage.java
--
diff --git a/src/java/org/apache/cassandra/concurrent/Stage.java 
b/src/java/org/apache/cassandra/concurrent/Stage.java
index 062bbe6..f2907e2 100644
--- a/src/java/org/apache/cassandra/concurrent/Stage.java
+++ b/src/java/org/apache/cassandra/concurrent/Stage.java
@@ -21,7 +21,6 @@ public enum Stage
 {
 READ,
 MUTATION,
-STREAM,
 GOSSIP,
 REQUEST_RESPONSE,
 ANTI_ENTROPY,
@@ -41,7 +40,6 @@ public enum Stage
 case MIGRATION:
 case MISC:
 case TRACING:
-case STREAM:
 case INTERNAL_RESPONSE:
 return internal;
 case MUTATION:

http://git-wip-us.apache.org/repos/asf/cassandra/blob/69ad77d8/src/java/org/apache/cassandra/concurrent/StageManager.java
--
diff --git a/src/java/org/apache/cassandra/concurrent/StageManager.java 
b/src/java/org/apache/cassandra/concurrent/StageManager.java
index 8359346..7ca45f4 100644
--- a/src/java/org/apache/cassandra/concurrent/StageManager.java
+++ b/src/java/org/apache/cassandra/concurrent/StageManager.java
@@ -51,7 +51,6 @@ public class StageManager
 stages.put(Stage.INTERNAL_RESPONSE, 
multiThreadedStage(Stage.INTERNAL_RESPONSE, 
Runtime.getRuntime().availableProcessors()));
 stages.put(Stage.REPLICATE_ON_WRITE, 
multiThreadedConfigurableStage(Stage.REPLICATE_ON_WRITE, 
getConcurrentReplicators(), MAX_REPLICATE_ON_WRITE_TASKS));
 // the rest are all single-threaded
-stages.put(Stage.STREAM, new 
JMXEnabledThreadPoolExecutor(Stage.STREAM));
 stages.put(Stage.GOSSIP, new 
JMXEnabledThreadPoolExecutor(Stage.GOSSIP));
 stages.put(Stage.ANTI_ENTROPY, new 
JMXEnabledThreadPoolExecutor(Stage.ANTI_ENTROPY));
 stages.put(Stage.MIGRATION, new 
JMXEnabledThreadPoolExecutor(Stage.MIGRATION));

http://git-wip-us.apache.org/repos/asf/cassandra/blob/69ad77d8/src/java/org/apache/cassandra/net/MessagingService.java
--
diff --git a/src/java/org/apache/cassandra/net/MessagingService.java 
b/src/java/org/apache/cassandra/net/MessagingService.java
index 06a0270..41a42ec 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -133,7 +133,6 @@ public final class MessagingService implements 
MessagingServiceMBean
 put(Verb.READ, Stage.READ);
 put(Verb.REQUEST_RESPONSE, Stage.REQUEST_RESPONSE);
 put(Verb.STREAM_REPLY, Stage.MISC); // TODO does this really belong on 
misc? I've just copied old behavior here
-put(Verb.STREAM_REQUEST, Stage.STREAM);
 put(Verb.RANGE_SLICE, Stage.READ);
 put(Verb.BOOTSTRAP_TOKEN, Stage.MISC);
 put(Verb.TREE_REQUEST, Stage.ANTI_ENTROPY);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/69ad77d8/src/java/org/apache/cassandra/service/StorageService.java
--
diff --git a/src/java/org/apache/cassandra/service/StorageService.java 
b/src/java/org/apache/cassandra/service/StorageService.java
index 4cc8581..58ce112 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -3352,15 +3352,8 @@ public class StorageService implements 
IEndpointStateChangeSubscriber, StorageSe
 }
 };
 
-StageManager.getStage(Stage.STREAM).execute(new Runnable()
-{
-public void run()
-{
-// TODO 

git commit: make TRACE verb droppable patch by David Alves; reviewed by jbellis for CASSANDRA-4672

2012-10-22 Thread jbellis
Updated Branches:
  refs/heads/trunk 69ad77d8c - 269c0cdac


make TRACE verb droppable
patch by David Alves; reviewed by jbellis for CASSANDRA-4672


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

Branch: refs/heads/trunk
Commit: 269c0cdac3d0457e6f00f6f055b5aa280a21e8b2
Parents: 69ad77d
Author: Jonathan Ellis jbel...@apache.org
Authored: Mon Oct 22 16:31:52 2012 -0500
Committer: Jonathan Ellis jbel...@apache.org
Committed: Mon Oct 22 16:31:52 2012 -0500

--
 CHANGES.txt|1 +
 .../org/apache/cassandra/net/MessagingService.java |1 +
 2 files changed, 2 insertions(+), 0 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/269c0cda/CHANGES.txt
--
diff --git a/CHANGES.txt b/CHANGES.txt
index 0f7caba..fc37d79 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 1.2-beta2
+ * make TRACE verb droppable (CASSANDRA-4672)
  * fix BulkLoader recognition of CQL3 columnfamilies (CASSANDRA-4755)
  * Sort commitlog segments for replay by id instead of mtime (CASSANDRA-4793)
  * Make hint delivery asynchronous (CASSANDRA-4761)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/269c0cda/src/java/org/apache/cassandra/net/MessagingService.java
--
diff --git a/src/java/org/apache/cassandra/net/MessagingService.java 
b/src/java/org/apache/cassandra/net/MessagingService.java
index 41a42ec..263d5c0 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -269,6 +269,7 @@ public final class MessagingService implements 
MessagingServiceMBean
  * drop internal messages like bootstrap or repair notifications.
  */
 public static final EnumSetVerb DROPPABLE_VERBS = EnumSet.of(Verb.BINARY,
+   Verb._TRACE,

Verb.MUTATION,

Verb.READ_REPAIR,
Verb.READ,



[jira] [Updated] (CASSANDRA-4842) DateType in Column MetaData causes server crash

2012-10-22 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis updated CASSANDRA-4842:
--

Fix Version/s: (was: 1.2.0 beta 2)
   1.2.0

 DateType in Column MetaData causes server crash
 ---

 Key: CASSANDRA-4842
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4842
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.0
 Environment: All
Reporter: Russell Bradberry
Assignee: Sylvain Lebresne
Priority: Minor
 Fix For: 1.1.7, 1.2.0


 when creating a column family with column metadata containing a date, there 
 is a server crash that will prevent startup.
 To recreate from the cli:
 {code}
 create keyspace test;
 use test;
 create column family foo
   with column_type = 'Standard'
   and comparator = 'CompositeType(LongType,DateType)'
   and default_validation_class = 'UTF8Type'
   and key_validation_class = 'UTF8Type'
   and column_metadata = [ 
 { column_name : '1234:1350695443433', validation_class : BooleanType} 
   ];
 {code}
 Produces this error in the logs:
 {code}
 ERROR 21:11:18,795 Error occurred during processing of message.
 java.lang.RuntimeException: java.util.concurrent.ExecutionException: 
 org.apache.cassandra.db.marshal.MarshalException: unable to coerce 
 '2012-10-19 21' to a  formatted date (long)
   at 
 org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:373)
   at 
 org.apache.cassandra.service.MigrationManager.announce(MigrationManager.java:194)
   at 
 org.apache.cassandra.service.MigrationManager.announceNewColumnFamily(MigrationManager.java:141)
   at 
 org.apache.cassandra.thrift.CassandraServer.system_add_column_family(CassandraServer.java:931)
   at 
 org.apache.cassandra.thrift.Cassandra$Processor$system_add_column_family.getResult(Cassandra.java:3410)
   at 
 org.apache.cassandra.thrift.Cassandra$Processor$system_add_column_family.getResult(Cassandra.java:3398)
   at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
   at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
   at 
 org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:186)
   at 
 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
   at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
   at java.lang.Thread.run(Thread.java:680)
 Caused by: java.util.concurrent.ExecutionException: 
 org.apache.cassandra.db.marshal.MarshalException: unable to coerce 
 '2012-10-19 21' to a  formatted date (long)
   at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
   at java.util.concurrent.FutureTask.get(FutureTask.java:83)
   at 
 org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:369)
   ... 11 more
 Caused by: org.apache.cassandra.db.marshal.MarshalException: unable to coerce 
 '2012-10-19 21' to a  formatted date (long)
   at 
 org.apache.cassandra.db.marshal.DateType.dateStringToTimestamp(DateType.java:117)
   at org.apache.cassandra.db.marshal.DateType.fromString(DateType.java:85)
   at 
 org.apache.cassandra.db.marshal.AbstractCompositeType.fromString(AbstractCompositeType.java:213)
   at 
 org.apache.cassandra.config.ColumnDefinition.fromSchema(ColumnDefinition.java:257)
   at 
 org.apache.cassandra.config.CFMetaData.addColumnDefinitionSchema(CFMetaData.java:1318)
   at 
 org.apache.cassandra.config.CFMetaData.fromSchema(CFMetaData.java:1250)
   at 
 org.apache.cassandra.config.KSMetaData.deserializeColumnFamilies(KSMetaData.java:299)
   at 
 org.apache.cassandra.db.DefsTable.mergeColumnFamilies(DefsTable.java:434)
   at org.apache.cassandra.db.DefsTable.mergeSchema(DefsTable.java:346)
   at 
 org.apache.cassandra.service.MigrationManager$1.call(MigrationManager.java:217)
   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
   at java.util.concurrent.FutureTask.run(FutureTask.java:138)
   ... 3 more
 Caused by: java.text.ParseException: Unable to parse the date: 2012-10-19 21
   at org.apache.commons.lang.time.DateUtils.parseDate(DateUtils.java:285)
   at 
 org.apache.cassandra.db.marshal.DateType.dateStringToTimestamp(DateType.java:113)
   ... 14 more
 ERROR 21:11:18,795 Exception in thread Thread[MigrationStage:1,5,main]
 org.apache.cassandra.db.marshal.MarshalException: unable to coerce 
 '2012-10-19 21' to a  formatted date (long)
   at 
 org.apache.cassandra.db.marshal.DateType.dateStringToTimestamp(DateType.java:117)
   at org.apache.cassandra.db.marshal.DateType.fromString(DateType.java:85)
   at 
 

git commit: fix streaming to wrong directory

2012-10-22 Thread yukim
Updated Branches:
  refs/heads/trunk 269c0cdac - 8c99a3769


fix streaming to wrong directory


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

Branch: refs/heads/trunk
Commit: 8c99a376980b90faf7b1ca1aa33d9fde0a356cda
Parents: 269c0cd
Author: Yuki Morishita yu...@apache.org
Authored: Mon Oct 22 16:46:31 2012 -0500
Committer: Yuki Morishita yu...@apache.org
Committed: Mon Oct 22 16:46:43 2012 -0500

--
 .../org/apache/cassandra/streaming/StreamIn.java   |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/cassandra/blob/8c99a376/src/java/org/apache/cassandra/streaming/StreamIn.java
--
diff --git a/src/java/org/apache/cassandra/streaming/StreamIn.java 
b/src/java/org/apache/cassandra/streaming/StreamIn.java
index a0d605d..b8f6b90 100644
--- a/src/java/org/apache/cassandra/streaming/StreamIn.java
+++ b/src/java/org/apache/cassandra/streaming/StreamIn.java
@@ -83,7 +83,7 @@ public class StreamIn
 Directories.DataDirectory localDir = 
Directories.getLocationCapableOfSize(remote.size);
 if (localDir == null)
 throw new RuntimeException(Insufficient disk space to store  + 
remote.size +  bytes);
-Descriptor localdesc = 
Descriptor.fromFilename(cfStore.getTempSSTablePath(localDir.location));
+Descriptor localdesc = 
Descriptor.fromFilename(cfStore.getTempSSTablePath(cfStore.directories.getLocationForDisk(localDir.location)));
 
 return new PendingFile(localdesc, remote);
 }



[Cassandra Wiki] Trivial Update of JoannaItp by JoannaItp

2012-10-22 Thread Apache Wiki
Dear Wiki user,

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

The JoannaItp page has been changed by JoannaItp:
http://wiki.apache.org/cassandra/JoannaItp

New page:
Name: Joanna ShellBRAge: 22BRCountry: ItaliaBRTown: Averara 
BRZIP: 24010BRStreet: Strada Provinciale 65 48BRBRFeel free to 
visit my site; 
[[http://paddlingiowa.com/phpBB/privmsg.php?mode=postu=146845sid=4f489cca18d93c4edb21e72e84395129#http://Videos.guidehorse.com/uprofile.php?UID=408#austin
 divorce lawyer|main page]]