[jira] [Created] (CASSANDRA-2774) one way to make counter delete work better

2011-06-15 Thread Yang Yang (JIRA)
one way to make counter delete work better
--

 Key: CASSANDRA-2774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2774
 Project: Cassandra
  Issue Type: New Feature
Reporter: Yang Yang


current Counter does not work with delete, because different merging order of 
sstables would produces different result, for example:

add 1

delete 

add 2

if the merging happens by 1-2, (1,2)--3  order, the result we see will be 2
if merging is: 1--3, (1,3)--2, the result will be 3.



the issue is that delete now can not separate out previous adds and adds later 
than the delete. supposedly a delete is to create a completely new incarnation 
of the counter, or a new lifetime, or epoch. the new approach utilizes the 
concept of epoch number, so that each delete bumps up the epoch number. since 
each write is replicated (replicate on write is almost always enabled in 
practice, if this is a concern, we could further force ROW in case of delete ), 
so the epoch number is global to a replica set




changes are attached, existing tests pass fine, some tests are modified since 
the semantic is changed a bit. some cql tests do not pass in the original 0.8.0 
source, that's not the fault of this change.

see details at 
http://mail-archives.apache.org/mod_mbox/cassandra-user/201106.mbox/%3cbanlktikqcglsnwtt-9hvqpseoo7sf58...@mail.gmail.com%3E


the goal of this is to make delete work ( at least with consistent behavior, 
yes in case of long network partition, the behavior is not ideal, but it's 
consistent with the definition of logical clock), so that we could have 
expiring Counters



--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2774) one way to make counter delete work better

2011-06-15 Thread Yang Yang (JIRA)

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

Yang Yang commented on CASSANDRA-2774:
--

see original jira  https://issues.apache.org/jira/browse/CASSANDRA-2101


 one way to make counter delete work better
 --

 Key: CASSANDRA-2774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2774
 Project: Cassandra
  Issue Type: New Feature
Reporter: Yang Yang

 current Counter does not work with delete, because different merging order of 
 sstables would produces different result, for example:
 add 1
 delete 
 add 2
 if the merging happens by 1-2, (1,2)--3  order, the result we see will be 2
 if merging is: 1--3, (1,3)--2, the result will be 3.
 the issue is that delete now can not separate out previous adds and adds 
 later than the delete. supposedly a delete is to create a completely new 
 incarnation of the counter, or a new lifetime, or epoch. the new approach 
 utilizes the concept of epoch number, so that each delete bumps up the 
 epoch number. since each write is replicated (replicate on write is almost 
 always enabled in practice, if this is a concern, we could further force ROW 
 in case of delete ), so the epoch number is global to a replica set
 changes are attached, existing tests pass fine, some tests are modified since 
 the semantic is changed a bit. some cql tests do not pass in the original 
 0.8.0 source, that's not the fault of this change.
 see details at 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201106.mbox/%3cbanlktikqcglsnwtt-9hvqpseoo7sf58...@mail.gmail.com%3E
 the goal of this is to make delete work ( at least with consistent behavior, 
 yes in case of long network partition, the behavior is not ideal, but it's 
 consistent with the definition of logical clock), so that we could have 
 expiring Counters

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2774) one way to make counter delete work better

2011-06-15 Thread Yang Yang (JIRA)

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

Yang Yang updated CASSANDRA-2774:
-

Attachment: counter_delete.diff

note that the main logic is rather simple, and concentrated in 
CounterColumn.reconcile()

but most of the coding was done around the issue of setting up a 
lastDeleteTimestamp() for a completely new incoming CounterUpdateColumn, 
since it does not any history yet. the code in this part uses some rather messy 
changes, and should definitely use a better route, but so far it's only for 
demonstration of the idea. people more familiar with the code path can suggest 
a better way.



 one way to make counter delete work better
 --

 Key: CASSANDRA-2774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2774
 Project: Cassandra
  Issue Type: New Feature
Affects Versions: 0.8.0
Reporter: Yang Yang
 Attachments: counter_delete.diff


 current Counter does not work with delete, because different merging order of 
 sstables would produces different result, for example:
 add 1
 delete 
 add 2
 if the merging happens by 1-2, (1,2)--3  order, the result we see will be 2
 if merging is: 1--3, (1,3)--2, the result will be 3.
 the issue is that delete now can not separate out previous adds and adds 
 later than the delete. supposedly a delete is to create a completely new 
 incarnation of the counter, or a new lifetime, or epoch. the new approach 
 utilizes the concept of epoch number, so that each delete bumps up the 
 epoch number. since each write is replicated (replicate on write is almost 
 always enabled in practice, if this is a concern, we could further force ROW 
 in case of delete ), so the epoch number is global to a replica set
 changes are attached, existing tests pass fine, some tests are modified since 
 the semantic is changed a bit. some cql tests do not pass in the original 
 0.8.0 source, that's not the fault of this change.
 see details at 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201106.mbox/%3cbanlktikqcglsnwtt-9hvqpseoo7sf58...@mail.gmail.com%3E
 the goal of this is to make delete work ( at least with consistent behavior, 
 yes in case of long network partition, the behavior is not ideal, but it's 
 consistent with the definition of logical clock), so that we could have 
 expiring Counters

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2774) one way to make counter delete work better

2011-06-15 Thread Yang Yang (JIRA)

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

Yang Yang commented on CASSANDRA-2774:
--

note that the original idea is to use the epoch number, which is a pure 
traditional logical clock, but I found that we already have the var of 
timestampOfLastDelete(), 
this has exactly the same effect, so  I just re-used the 
timestampOfLastDelete() for the purpose of epoch number.


 one way to make counter delete work better
 --

 Key: CASSANDRA-2774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2774
 Project: Cassandra
  Issue Type: New Feature
Affects Versions: 0.8.0
Reporter: Yang Yang
 Attachments: counter_delete.diff


 current Counter does not work with delete, because different merging order of 
 sstables would produces different result, for example:
 add 1
 delete 
 add 2
 if the merging happens by 1-2, (1,2)--3  order, the result we see will be 2
 if merging is: 1--3, (1,3)--2, the result will be 3.
 the issue is that delete now can not separate out previous adds and adds 
 later than the delete. supposedly a delete is to create a completely new 
 incarnation of the counter, or a new lifetime, or epoch. the new approach 
 utilizes the concept of epoch number, so that each delete bumps up the 
 epoch number. since each write is replicated (replicate on write is almost 
 always enabled in practice, if this is a concern, we could further force ROW 
 in case of delete ), so the epoch number is global to a replica set
 changes are attached, existing tests pass fine, some tests are modified since 
 the semantic is changed a bit. some cql tests do not pass in the original 
 0.8.0 source, that's not the fault of this change.
 see details at 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201106.mbox/%3cbanlktikqcglsnwtt-9hvqpseoo7sf58...@mail.gmail.com%3E
 the goal of this is to make delete work ( at least with consistent behavior, 
 yes in case of long network partition, the behavior is not ideal, but it's 
 consistent with the definition of logical clock), so that we could have 
 expiring Counters

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Issue Comment Edited] (CASSANDRA-2774) one way to make counter delete work better

2011-06-15 Thread Yang Yang (JIRA)

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

Yang Yang edited comment on CASSANDRA-2774 at 6/15/11 6:42 AM:
---

note that the main logic is rather simple, and concentrated in 
CounterColumn.reconcile()

but most of the coding was done around the issue of setting up a 
lastDeleteTimestamp() for a completely new incoming CounterUpdateColumn, 
since it does not any history yet. the code in this part uses some rather messy 
changes, and should definitely use a better route, but so far it's only for 
demonstration of the idea. people more familiar with the code path can suggest 
a better way.


here is how it works:
when a counterUpdateColumn comes in, we put it in memtable, which goes through 
the reconcile process. new code obtains the state of those columns listed in 
the mutation, AFTER the mutation is applied. we check whether any columns are 
completely new, i.e. they do not have a matching one in memtable, so that their 
timestampOfLastDelete() is still UNDECIDED. then for these columns, we do a 
read, and find any of their existing columns in SStables, and assign the 
correct timestampOfLastDelete() to them.  we do not do the read in sstable at 
first because most counter adds will already have one matching column in 
memtable, so now we only incur the extra sstable reading cost  when we  start a 
new counter in memtable.


reconcile rule:
   1)  newer epoch (timestampOfLastDelete() ) wins
   2)  UNDECIDED inherits the timestmapOfLastDelete() of the competitor   
(UNDECIDED can be seen ONLY when a new column comes into memtable)
   3)  if timestampOfLastDelete() is same, non-delete wins over delete
   4)  at last, use standard merging between counterColumns





  was (Author: yangyangyyy):
note that the main logic is rather simple, and concentrated in 
CounterColumn.reconcile()

but most of the coding was done around the issue of setting up a 
lastDeleteTimestamp() for a completely new incoming CounterUpdateColumn, 
since it does not any history yet. the code in this part uses some rather messy 
changes, and should definitely use a better route, but so far it's only for 
demonstration of the idea. people more familiar with the code path can suggest 
a better way.


  
 one way to make counter delete work better
 --

 Key: CASSANDRA-2774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2774
 Project: Cassandra
  Issue Type: New Feature
Affects Versions: 0.8.0
Reporter: Yang Yang
 Attachments: counter_delete.diff


 current Counter does not work with delete, because different merging order of 
 sstables would produces different result, for example:
 add 1
 delete 
 add 2
 if the merging happens by 1-2, (1,2)--3  order, the result we see will be 2
 if merging is: 1--3, (1,3)--2, the result will be 3.
 the issue is that delete now can not separate out previous adds and adds 
 later than the delete. supposedly a delete is to create a completely new 
 incarnation of the counter, or a new lifetime, or epoch. the new approach 
 utilizes the concept of epoch number, so that each delete bumps up the 
 epoch number. since each write is replicated (replicate on write is almost 
 always enabled in practice, if this is a concern, we could further force ROW 
 in case of delete ), so the epoch number is global to a replica set
 changes are attached, existing tests pass fine, some tests are modified since 
 the semantic is changed a bit. some cql tests do not pass in the original 
 0.8.0 source, that's not the fault of this change.
 see details at 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201106.mbox/%3cbanlktikqcglsnwtt-9hvqpseoo7sf58...@mail.gmail.com%3E
 the goal of this is to make delete work ( at least with consistent behavior, 
 yes in case of long network partition, the behavior is not ideal, but it's 
 consistent with the definition of logical clock), so that we could have 
 expiring Counters

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2774) one way to make counter delete work better

2011-06-15 Thread Yang Yang (JIRA)

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

Yang Yang commented on CASSANDRA-2774:
--

the patch is against standard 0.8.0-src source

 one way to make counter delete work better
 --

 Key: CASSANDRA-2774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2774
 Project: Cassandra
  Issue Type: New Feature
Affects Versions: 0.8.0
Reporter: Yang Yang
 Attachments: counter_delete.diff


 current Counter does not work with delete, because different merging order of 
 sstables would produces different result, for example:
 add 1
 delete 
 add 2
 if the merging happens by 1-2, (1,2)--3  order, the result we see will be 2
 if merging is: 1--3, (1,3)--2, the result will be 3.
 the issue is that delete now can not separate out previous adds and adds 
 later than the delete. supposedly a delete is to create a completely new 
 incarnation of the counter, or a new lifetime, or epoch. the new approach 
 utilizes the concept of epoch number, so that each delete bumps up the 
 epoch number. since each write is replicated (replicate on write is almost 
 always enabled in practice, if this is a concern, we could further force ROW 
 in case of delete ), so the epoch number is global to a replica set
 changes are attached, existing tests pass fine, some tests are modified since 
 the semantic is changed a bit. some cql tests do not pass in the original 
 0.8.0 source, that's not the fault of this change.
 see details at 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201106.mbox/%3cbanlktikqcglsnwtt-9hvqpseoo7sf58...@mail.gmail.com%3E
 the goal of this is to make delete work ( at least with consistent behavior, 
 yes in case of long network partition, the behavior is not ideal, but it's 
 consistent with the definition of logical clock), so that we could have 
 expiring Counters

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2774) one way to make counter delete work better

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne commented on CASSANDRA-2774:
-

Consider 2 nodes A, B and C with RF=2 and a given counter c whose replica set 
is {B, C}.
Consider a single client issuing the following operations (in order) while 
connected to node A:
# client increment c by +2 at CL.ONE
# client delete c at CL.ONE
# client increment c by +3 at CL.ONE
# client reads c at CL.ALL

The *only* valid answer the client should ever get on its last read is 3.  Any 
other value is a break of the consistency level contract and not something we 
can expect people to be happy with. Any other answer means that deletes are 
broken (and this *is* the problem with the actual implementation).

However, because the write are made at CL.ONE in the example above, at the time 
the read is issued, the only thing we know for sure is that each write has been 
received by one node, but not necessarily the same each time.  Depending on the 
actual timing and on which node happens to be the one acknowledging each 
writes, when the read reaches the nodes you can have a lot of different 
situations including:
* A and B both have received the 3 writes in the right order, they will all 
return 3, the 'right' answer.
* A received the deletion (the two increments are still on the wire yet to be 
received) and B received the other two increments (the delete is still on the 
wire yet to be received). A will return the tombstone, B will return 5. You can 
assign all epoch number you want, there is no way you can return 3 to the 
client. It will be either 5 or 0.

So the same query will result in different answers depending on the internal 
timing of events, and will sometimes return an answer that is a break of the 
contract. Removes of counters are broken and the only safe way to use them is 
for permanent removal with no following inserts. This patch doesn't fix it.

Btw, it's not too hard to come up with the same kind of example using only 
QUORUM reads and writes (but you'll need one more replica and a few more steps).


 one way to make counter delete work better
 --

 Key: CASSANDRA-2774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2774
 Project: Cassandra
  Issue Type: New Feature
Affects Versions: 0.8.0
Reporter: Yang Yang
 Attachments: counter_delete.diff


 current Counter does not work with delete, because different merging order of 
 sstables would produces different result, for example:
 add 1
 delete 
 add 2
 if the merging happens by 1-2, (1,2)--3  order, the result we see will be 2
 if merging is: 1--3, (1,3)--2, the result will be 3.
 the issue is that delete now can not separate out previous adds and adds 
 later than the delete. supposedly a delete is to create a completely new 
 incarnation of the counter, or a new lifetime, or epoch. the new approach 
 utilizes the concept of epoch number, so that each delete bumps up the 
 epoch number. since each write is replicated (replicate on write is almost 
 always enabled in practice, if this is a concern, we could further force ROW 
 in case of delete ), so the epoch number is global to a replica set
 changes are attached, existing tests pass fine, some tests are modified since 
 the semantic is changed a bit. some cql tests do not pass in the original 
 0.8.0 source, that's not the fault of this change.
 see details at 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201106.mbox/%3cbanlktikqcglsnwtt-9hvqpseoo7sf58...@mail.gmail.com%3E
 the goal of this is to make delete work ( at least with consistent behavior, 
 yes in case of long network partition, the behavior is not ideal, but it's 
 consistent with the definition of logical clock), so that we could have 
 expiring Counters

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




svn commit: r1135981 - in /cassandra/trunk: ./ contrib/ interface/thrift/gen-java/org/apache/cassandra/thrift/ src/java/org/apache/cassandra/db/

2011-06-15 Thread slebresne
Author: slebresne
Date: Wed Jun 15 09:46:10 2011
New Revision: 1135981

URL: http://svn.apache.org/viewvc?rev=1135981view=rev
Log:
Merge from 0.8

Modified:
cassandra/trunk/   (props changed)
cassandra/trunk/CHANGES.txt
cassandra/trunk/contrib/   (props changed)

cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
   (props changed)

cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
   (props changed)

cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
   (props changed)

cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
   (props changed)

cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
   (props changed)
cassandra/trunk/src/java/org/apache/cassandra/db/DataTracker.java

Propchange: cassandra/trunk/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jun 15 09:46:10 2011
@@ -1,7 +1,7 @@
 
/cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1131291
 /cassandra/branches/cassandra-0.7:1026516-1133874
 /cassandra/branches/cassandra-0.7.0:1053690-1055654
-/cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1135241,1135399,1135426,1135441
+/cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1135241,1135288,1135399,1135426,1135441
 /cassandra/branches/cassandra-0.8.0:1125021-1130369
 /cassandra/branches/cassandra-0.8.1:1101014-1125018
 /cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689

Modified: cassandra/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1135981r1=1135980r2=1135981view=diff
==
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Wed Jun 15 09:46:10 2011
@@ -58,6 +58,8 @@
supercolumn tombstone during replica resolution (CASSANDRA-2590)
  * support sstable2json against snapshot sstables (CASSANDRA-2386)
  * remove active-pull schema requests (CASSANDRA-2715)
+ * avoid marking entire list of sstables as actively being compacted
+   in multithreaded compaction (CASSANDRA-2765)
  * seek back after deserializing a row to update cache with (CASSANDRA-2752)
  * avoid skipping rows in scrub for counter column family (CASSANDRA-2759)
  * fix ConcurrentModificationException in repair when dealing with 0.7 node

Propchange: cassandra/trunk/contrib/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jun 15 09:46:10 2011
@@ -1,7 +1,7 @@
 
/cassandra/branches/cassandra-0.6/contrib:922689-1052356,1052358-1053452,1053454,1053456-1068009
 /cassandra/branches/cassandra-0.7/contrib:1026516-1133874
 /cassandra/branches/cassandra-0.7.0/contrib:1053690-1055654
-/cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1135241,1135399,1135426,1135441
+/cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1135241,1135288,1135399,1135426,1135441
 /cassandra/branches/cassandra-0.8.0/contrib:1125021-1130369
 /cassandra/branches/cassandra-0.8.1/contrib:1101014-1125018
 /cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jun 15 09:46:10 2011
@@ -1,7 +1,7 @@
 
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
 
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1133874
 
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125019-1135241,1135399,1135426,1135441
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125019-1135241,1135288,1135399,1135426,1135441
 
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1125021-1130369
 
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1101014-1125018
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jun 15 09:46:10 2011
@@ -1,7 +1,7 @@
 

[jira] [Created] (CASSANDRA-2775) ant build-test is failing with 0.8.0

2011-06-15 Thread Vivek Mishra (JIRA)
ant build-test is failing with 0.8.0


 Key: CASSANDRA-2775
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2775
 Project: Cassandra
  Issue Type: Bug
  Components: Tests
Affects Versions: 0.8.0
Reporter: Vivek Mishra
Assignee: Vivek Mishra
Priority: Minor


Steps to reproduce:
1) ant clean build
2) ant build-test

It is failing for :

build-test:
[javac] 
C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\build.xml:975: 
warning: 'includeantruntime' was not set, defaulting to 
build.sysclasspath=last; set
[javac] Compiling 124 source files to 
C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\build\test\classes
[javac] 
C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\drivers\java\test\org\apache\cassandra\cql\jdbc\PreparedStatementTest.java:357:
 cannot find symbol
[javac] symbol  : class CassandraPreparedStatement
[javac] location: class org.apache.cassandra.cql.jdbc.PreparedStatementTest
[javac] CassandraPreparedStatement stmt = 
(CassandraPreparedStatement)con.prepareStatement(q);
[javac] ^
[javac] 
C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\drivers\java\test\org\apache\cassandra\cql\jdbc\PreparedStatementTest.java:357:
 cannot find symbol
[javac] symbol  : class CassandraPreparedStatement
[javac] location: class org.apache.cassandra.cql.jdbc.PreparedStatementTest
[javac] CassandraPreparedStatement stmt = 
(CassandraPreparedStatement)con.prepareStatement(q);
[javac]^
[javac] 
C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\drivers\java\test\org\apache\cassandra\cql\jdbc\PreparedStatementTest.java:365:
 cannot find symbol
[javac] symbol  : class CassandraPreparedStatement
[javac] location: class org.apache.cassandra.cql.jdbc.PreparedStatementTest
[javac] stmt = (CassandraPreparedStatement)con.prepareStatement(q);
[javac] ^
[javac] 
C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\drivers\java\test\org\apache\cassandra\cql\jdbc\PreparedStatementTest.java:377:
 cannot find symbol
[javac] symbol  : class CassandraPreparedStatement
[javac] location: class org.apache.cassandra.cql.jdbc.PreparedStatementTest
[javac] stmt = (CassandraPreparedStatement)con.prepareStatement(q);
[javac] ^
[javac] Note: Some input files use or override a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 4 errors

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2775) ant build-test is failing with 0.8.0

2011-06-15 Thread Vivek Mishra (JIRA)

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

Vivek Mishra updated CASSANDRA-2775:


Attachment: build.xml

Changed build.xml to modify cassandra.classpath for 

pathelement location=${build.classes.cql} /


Made it working.

attached build.xml for review. 

 ant build-test is failing with 0.8.0
 

 Key: CASSANDRA-2775
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2775
 Project: Cassandra
  Issue Type: Bug
  Components: Tests
Affects Versions: 0.8.0
Reporter: Vivek Mishra
Assignee: Vivek Mishra
Priority: Minor
 Attachments: build.xml


 Steps to reproduce:
 1) ant clean build
 2) ant build-test
 It is failing for :
 build-test:
 [javac] 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\build.xml:975: 
 warning: 'includeantruntime' was not set, defaulting to 
 build.sysclasspath=last; set
 [javac] Compiling 124 source files to 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\build\test\classes
 [javac] 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\drivers\java\test\org\apache\cassandra\cql\jdbc\PreparedStatementTest.java:357:
  cannot find symbol
 [javac] symbol  : class CassandraPreparedStatement
 [javac] location: class 
 org.apache.cassandra.cql.jdbc.PreparedStatementTest
 [javac] CassandraPreparedStatement stmt = 
 (CassandraPreparedStatement)con.prepareStatement(q);
 [javac] ^
 [javac] 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\drivers\java\test\org\apache\cassandra\cql\jdbc\PreparedStatementTest.java:357:
  cannot find symbol
 [javac] symbol  : class CassandraPreparedStatement
 [javac] location: class 
 org.apache.cassandra.cql.jdbc.PreparedStatementTest
 [javac] CassandraPreparedStatement stmt = 
 (CassandraPreparedStatement)con.prepareStatement(q);
 [javac]^
 [javac] 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\drivers\java\test\org\apache\cassandra\cql\jdbc\PreparedStatementTest.java:365:
  cannot find symbol
 [javac] symbol  : class CassandraPreparedStatement
 [javac] location: class 
 org.apache.cassandra.cql.jdbc.PreparedStatementTest
 [javac] stmt = 
 (CassandraPreparedStatement)con.prepareStatement(q);
 [javac] ^
 [javac] 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\drivers\java\test\org\apache\cassandra\cql\jdbc\PreparedStatementTest.java:377:
  cannot find symbol
 [javac] symbol  : class CassandraPreparedStatement
 [javac] location: class 
 org.apache.cassandra.cql.jdbc.PreparedStatementTest
 [javac] stmt = 
 (CassandraPreparedStatement)con.prepareStatement(q);
 [javac] ^
 [javac] Note: Some input files use or override a deprecated API.
 [javac] Note: Recompile with -Xlint:deprecation for details.
 [javac] Note: Some input files use unchecked or unsafe operations.
 [javac] Note: Recompile with -Xlint:unchecked for details.
 [javac] 4 errors

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2775) ant build-test is failing with 0.8.0

2011-06-15 Thread Vivek Mishra (JIRA)

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

Vivek Mishra commented on CASSANDRA-2775:
-

In case of not to modify cassandra.classpath should be create a different 
classpath for build-test?

Build.xml attached with changes.

 ant build-test is failing with 0.8.0
 

 Key: CASSANDRA-2775
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2775
 Project: Cassandra
  Issue Type: Bug
  Components: Tests
Affects Versions: 0.8.0
Reporter: Vivek Mishra
Assignee: Vivek Mishra
Priority: Minor
 Attachments: build.xml


 Steps to reproduce:
 1) ant clean build
 2) ant build-test
 It is failing for :
 build-test:
 [javac] 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\build.xml:975: 
 warning: 'includeantruntime' was not set, defaulting to 
 build.sysclasspath=last; set
 [javac] Compiling 124 source files to 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\build\test\classes
 [javac] 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\drivers\java\test\org\apache\cassandra\cql\jdbc\PreparedStatementTest.java:357:
  cannot find symbol
 [javac] symbol  : class CassandraPreparedStatement
 [javac] location: class 
 org.apache.cassandra.cql.jdbc.PreparedStatementTest
 [javac] CassandraPreparedStatement stmt = 
 (CassandraPreparedStatement)con.prepareStatement(q);
 [javac] ^
 [javac] 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\drivers\java\test\org\apache\cassandra\cql\jdbc\PreparedStatementTest.java:357:
  cannot find symbol
 [javac] symbol  : class CassandraPreparedStatement
 [javac] location: class 
 org.apache.cassandra.cql.jdbc.PreparedStatementTest
 [javac] CassandraPreparedStatement stmt = 
 (CassandraPreparedStatement)con.prepareStatement(q);
 [javac]^
 [javac] 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\drivers\java\test\org\apache\cassandra\cql\jdbc\PreparedStatementTest.java:365:
  cannot find symbol
 [javac] symbol  : class CassandraPreparedStatement
 [javac] location: class 
 org.apache.cassandra.cql.jdbc.PreparedStatementTest
 [javac] stmt = 
 (CassandraPreparedStatement)con.prepareStatement(q);
 [javac] ^
 [javac] 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\drivers\java\test\org\apache\cassandra\cql\jdbc\PreparedStatementTest.java:377:
  cannot find symbol
 [javac] symbol  : class CassandraPreparedStatement
 [javac] location: class 
 org.apache.cassandra.cql.jdbc.PreparedStatementTest
 [javac] stmt = 
 (CassandraPreparedStatement)con.prepareStatement(q);
 [javac] ^
 [javac] Note: Some input files use or override a deprecated API.
 [javac] Note: Recompile with -Xlint:deprecation for details.
 [javac] Note: Some input files use unchecked or unsafe operations.
 [javac] Note: Recompile with -Xlint:unchecked for details.
 [javac] 4 errors

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2614) create Column and CounterColumn in the same column family

2011-06-15 Thread Chris Burroughs (JIRA)

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

Chris Burroughs commented on CASSANDRA-2614:


That's CQL in 0.8.1 for this ticket and a new one for Thrift api in 1.0?

 create Column and CounterColumn in the same column family
 -

 Key: CASSANDRA-2614
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2614
 Project: Cassandra
  Issue Type: New Feature
  Components: Core
Reporter: Dave Rav
Assignee: Sylvain Lebresne
Priority: Minor
 Fix For: 0.8.1


 create Column and CounterColumn in the same column family

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2388) ColumnFamilyRecordReader fails for a given split because a host is down, even if records could reasonably be read from other replica.

2011-06-15 Thread Mck SembWever (JIRA)

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

Mck SembWever commented on CASSANDRA-2388:
--

bq. [snip] One possibility is to use the ip octets like the 
RackInferringSnitch. 

In our usecase we have three nodes:{noformat}152.90.241.22=DC1:RAC1 #node1
152.90.241.23=DC2:RAC1 #node2
152.90.241.24=DC1:RAC1 #node3{noformat}

When we make the connection through the other (node2) endpoint taking the 
rack inferring approach 152.90. will say it's in DC2. (again) this is the 
wrong DC and will return itself as a valid endpoint

Step (3) seems to me to be too specific to be included here.
If i take it out we get this code:{noformat}public String[] 
sort_endpoints_by_proximity(String endpoint, String[] endpoints, boolean 
restrictToSameDC) 
throws TException, InvalidRequestException
{
try
{
ListString results = new ArrayListString();
InetAddress address = InetAddress.getByName(endpoint);
boolean endpointValid = null != 
Gossiper.instance.getEndpointStateForEndpoint(address);
String datacenter = DatabaseDescriptor
.getEndpointSnitch().getDatacenter(endpointValid ? address 
: FBUtilities.getLocalAddress());
ListInetAddress addresses = new ArrayListInetAddress();
for(String ep : endpoints)
{
addresses.add(InetAddress.getByName(endpoint));
}
DatabaseDescriptor.getEndpointSnitch().sortByProximity(address, 
addresses);
for(InetAddress ep : addresses)
{
String dc = 
DatabaseDescriptor.getEndpointSnitch().getDatacenter(ep);
if(FailureDetector.instance.isAlive(ep)  (!restrictToSameDC 
|| datacenter.equals(dc)))
{
results.add(ep.getHostName());
}
}
return results.toArray(new String[results.size()]);
}
catch (UnknownHostException e)
{
throw new InvalidRequestException(e.getMessage());
}
}{noformat}

I'm happy with this (except that 
{{Gossiper.instance.getEndpointStateForEndpoint(address)}} is only my guess on 
how to tell if an endpoint is valid as such).

 ColumnFamilyRecordReader fails for a given split because a host is down, even 
 if records could reasonably be read from other replica.
 -

 Key: CASSANDRA-2388
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2388
 Project: Cassandra
  Issue Type: Bug
  Components: Hadoop
Reporter: Eldon Stegall
Assignee: Mck SembWever
  Labels: hadoop, inputformat
 Fix For: 0.8.1

 Attachments: 0002_On_TException_try_next_split.patch, 
 CASSANDRA-2388.patch, CASSANDRA-2388.patch


 ColumnFamilyRecordReader only tries the first location for a given split. We 
 should try multiple locations for a given split.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Issue Comment Edited] (CASSANDRA-2388) ColumnFamilyRecordReader fails for a given split because a host is down, even if records could reasonably be read from other replica.

2011-06-15 Thread Mck SembWever (JIRA)

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

Mck SembWever edited comment on CASSANDRA-2388 at 6/15/11 11:23 AM:


bq. [snip] One possibility is to use the ip octets like the 
RackInferringSnitch. 

In our usecase we have three nodes defined via 
PropertyFileSnitch:{noformat}152.90.241.22=DC1:RAC1 #node1
152.90.241.23=DC2:RAC1 #node2
152.90.241.24=DC1:RAC1 #node3{noformat}

When we make the connection through the other (node2) endpoint taking the 
rack inferring approach 152.90. will say it's in DC2. (again) this is the 
wrong DC and will return itself as a valid endpoint

Step (3) seems to me to be too specific to be included here.
If i take it out we get this code:{noformat}public String[] 
sort_endpoints_by_proximity(String endpoint, String[] endpoints, boolean 
restrictToSameDC) 
throws TException, InvalidRequestException
{
try
{
ListString results = new ArrayListString();
InetAddress address = InetAddress.getByName(endpoint);
boolean endpointValid = null != 
Gossiper.instance.getEndpointStateForEndpoint(address);
String datacenter = DatabaseDescriptor
.getEndpointSnitch().getDatacenter(endpointValid ? address 
: FBUtilities.getLocalAddress());
ListInetAddress addresses = new ArrayListInetAddress();
for(String ep : endpoints)
{
addresses.add(InetAddress.getByName(endpoint));
}
DatabaseDescriptor.getEndpointSnitch().sortByProximity(address, 
addresses);
for(InetAddress ep : addresses)
{
String dc = 
DatabaseDescriptor.getEndpointSnitch().getDatacenter(ep);
if(FailureDetector.instance.isAlive(ep)  (!restrictToSameDC 
|| datacenter.equals(dc)))
{
results.add(ep.getHostName());
}
}
return results.toArray(new String[results.size()]);
}
catch (UnknownHostException e)
{
throw new InvalidRequestException(e.getMessage());
}
}{noformat}

I'm happy with this (except that 
{{Gossiper.instance.getEndpointStateForEndpoint(address)}} is only my guess on 
how to tell if an endpoint is valid as such).

  was (Author: michaelsembwever):
bq. [snip] One possibility is to use the ip octets like the 
RackInferringSnitch. 

In our usecase we have three nodes:{noformat}152.90.241.22=DC1:RAC1 #node1
152.90.241.23=DC2:RAC1 #node2
152.90.241.24=DC1:RAC1 #node3{noformat}

When we make the connection through the other (node2) endpoint taking the 
rack inferring approach 152.90. will say it's in DC2. (again) this is the 
wrong DC and will return itself as a valid endpoint

Step (3) seems to me to be too specific to be included here.
If i take it out we get this code:{noformat}public String[] 
sort_endpoints_by_proximity(String endpoint, String[] endpoints, boolean 
restrictToSameDC) 
throws TException, InvalidRequestException
{
try
{
ListString results = new ArrayListString();
InetAddress address = InetAddress.getByName(endpoint);
boolean endpointValid = null != 
Gossiper.instance.getEndpointStateForEndpoint(address);
String datacenter = DatabaseDescriptor
.getEndpointSnitch().getDatacenter(endpointValid ? address 
: FBUtilities.getLocalAddress());
ListInetAddress addresses = new ArrayListInetAddress();
for(String ep : endpoints)
{
addresses.add(InetAddress.getByName(endpoint));
}
DatabaseDescriptor.getEndpointSnitch().sortByProximity(address, 
addresses);
for(InetAddress ep : addresses)
{
String dc = 
DatabaseDescriptor.getEndpointSnitch().getDatacenter(ep);
if(FailureDetector.instance.isAlive(ep)  (!restrictToSameDC 
|| datacenter.equals(dc)))
{
results.add(ep.getHostName());
}
}
return results.toArray(new String[results.size()]);
}
catch (UnknownHostException e)
{
throw new InvalidRequestException(e.getMessage());
}
}{noformat}

I'm happy with this (except that 
{{Gossiper.instance.getEndpointStateForEndpoint(address)}} is only my guess on 
how to tell if an endpoint is valid as such).
  
 ColumnFamilyRecordReader fails for a given split because a host is down, even 
 if records could reasonably be read from other replica.
 -

 Key: CASSANDRA-2388
 

[jira] [Updated] (CASSANDRA-2769) Cannot Create Duplicate Compaction Marker

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne updated CASSANDRA-2769:


Attachment: 0002-Only-compact-what-has-been-succesfully-marked-as-com.patch
0001-Do-compact-only-smallerSSTables.patch
0001-0.8.0-Remove-useless-unmarkCompacting-in-doCleanup.patch

Alright, there is a bunch of problems, one of which affects 0.8 and trunk and 
could cause this stackTrace. The others are due to CASSANDRA-1610 and thus only 
affect trunk (but one of those can also result in the attached stackTrace).

The problem affecting 0.8 and trunk is related to a left over line in 
doCleanup() that is wrongly unmarking a sstable from the compacting set before 
having removed it from the active set of sstables. Thus another compaction 
could start compacting this sstable and we'll end up marking the file as 
compacted twice (and we would have duplicated the sstable, which is a problem 
for counters).
Patch 0001-0.8.0-Remove-useless-unmarkCompacting-in-doCleanup.patch removes it 
and is against 0.8.

Trunk has a few problems of its own:
* If disk space is not sufficient to compact all sstables, it computes the 
smallestSSTables set that fits, but doesn't use it. Attached first patch 
(0001-Do-compact-only-smallerSSTables.patch) fixes that.
* The CompactionTask logic wrongly decorrelates the set of sstables that are 
successfully marked from the ones it did compact. That is, it grabs a list of 
sstables it wants to compact, then call markCompacting on them, but does not 
check if all of them are successfully marked and compact the original list 
instead.
  In effect, a task will recompact sstables that are already being compacted by 
other task and the given file will be compacted twice (or more) and marked 
compacted multiple times.
  Attached patch 
(0002-Only-compact-what-has-been-succesfully-marked-as-com.patch) fixes this by 
changing the sstables set of a given CompactionTask to whatever has been 
successfully marked only. Since the marking involves updating the task, I've 
move the logic to AbstractCompactionTask where it seems to make more sense to 
me.
* For some reason, the markCompacting added for CompactionTasks was refusing to 
mark (and compact) anything if the set of sstable was bigger that 
MaxCompactionThreshold. This means that as soon as the number of sstables (of 
same size) in the column family would exceed the threshold, no compaction would 
be started. This is not the expected behavior. The second patch also fixes this 
by reusing the original markCompacting that handles this correctly.


 Cannot Create Duplicate Compaction Marker
 -

 Key: CASSANDRA-2769
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2769
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 0.8.0
Reporter: Benjamin Coverston
Assignee: Sylvain Lebresne
 Fix For: 0.8.1, 1.0

 Attachments: 
 0001-0.8.0-Remove-useless-unmarkCompacting-in-doCleanup.patch, 
 0001-Do-compact-only-smallerSSTables.patch, 
 0002-Only-compact-what-has-been-succesfully-marked-as-com.patch


 Concurrent compaction can trigger the following exception when two threads 
 compact the same sstable. DataTracker attempts to prevent this but apparently 
 not successfully.
 java.io.IOError: java.io.IOException: Unable to create compaction marker
   at 
 org.apache.cassandra.io.sstable.SSTableReader.markCompacted(SSTableReader.java:638)
   at 
 org.apache.cassandra.db.DataTracker.removeOldSSTablesSize(DataTracker.java:321)
   at org.apache.cassandra.db.DataTracker.replace(DataTracker.java:294)
   at 
 org.apache.cassandra.db.DataTracker.replaceCompactedSSTables(DataTracker.java:255)
   at 
 org.apache.cassandra.db.ColumnFamilyStore.replaceCompactedSSTables(ColumnFamilyStore.java:932)
   at 
 org.apache.cassandra.db.compaction.CompactionTask.execute(CompactionTask.java:173)
   at 
 org.apache.cassandra.db.compaction.CompactionManager$1.call(CompactionManager.java:119)
   at 
 org.apache.cassandra.db.compaction.CompactionManager$1.call(CompactionManager.java:102)
   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:680)
 Caused by: java.io.IOException: Unable to create compaction marker
   at 
 org.apache.cassandra.io.sstable.SSTableReader.markCompacted(SSTableReader.java:634)
   ... 12 more

--
This message is automatically generated by JIRA.
For more information on JIRA, see: 

svn commit: r1136006 - in /cassandra/branches/cassandra-0.8: CHANGES.txt src/java/org/apache/cassandra/utils/MerkleTree.java

2011-06-15 Thread slebresne
Author: slebresne
Date: Wed Jun 15 11:55:28 2011
New Revision: 1136006

URL: http://svn.apache.org/viewvc?rev=1136006view=rev
Log:
Avoids infinite loop when initializing a merkle tree
patch by slebresne; reviewed by stuhood for CASSANDRA-2758

Modified:
cassandra/branches/cassandra-0.8/CHANGES.txt

cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/utils/MerkleTree.java

Modified: cassandra/branches/cassandra-0.8/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/CHANGES.txt?rev=1136006r1=1136005r2=1136006view=diff
==
--- cassandra/branches/cassandra-0.8/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.8/CHANGES.txt Wed Jun 15 11:55:28 2011
@@ -56,6 +56,7 @@
  * fix ConcurrentModificationException in repair when dealing with 0.7 node
(CASSANDRA-2767)
  * use threadsafe collections for StreamInSession (CASSANDRA-2766)
+ * avoid infinite loop when creating merkle tree (CASSANDRA-2758)
 
 
 0.8.0-final

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/utils/MerkleTree.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/utils/MerkleTree.java?rev=1136006r1=1136005r2=1136006view=diff
==
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/utils/MerkleTree.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/utils/MerkleTree.java
 Wed Jun 15 11:55:28 2011
@@ -178,8 +178,11 @@ public class MerkleTree implements Seria
 return new Leaf();
 Token midpoint = partitioner.midpoint(left, right);
 
-Hashable lchild = midpoint.equals(left) ? new Leaf() : 
initHelper(left, midpoint, inc(depth), max);
-Hashable rchild =  midpoint.equals(right) ? new Leaf() : 
initHelper(midpoint, right, inc(depth), max);
+if (midpoint.equals(left) || midpoint.equals(right))
+return new Leaf();
+
+Hashable lchild =  initHelper(left, midpoint, inc(depth), max);
+Hashable rchild =  initHelper(midpoint, right, inc(depth), max);
 return new Inner(midpoint, lchild, rchild);
 }
 




svn commit: r1136007 - in /cassandra/trunk: ./ contrib/ interface/thrift/gen-java/org/apache/cassandra/thrift/ src/java/org/apache/cassandra/utils/

2011-06-15 Thread slebresne
Author: slebresne
Date: Wed Jun 15 11:57:44 2011
New Revision: 1136007

URL: http://svn.apache.org/viewvc?rev=1136007view=rev
Log:
Merge from 0.8

Modified:
cassandra/trunk/   (props changed)
cassandra/trunk/CHANGES.txt
cassandra/trunk/contrib/   (props changed)

cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
   (props changed)

cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
   (props changed)

cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
   (props changed)

cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
   (props changed)

cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
   (props changed)
cassandra/trunk/src/java/org/apache/cassandra/utils/MerkleTree.java

Propchange: cassandra/trunk/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jun 15 11:57:44 2011
@@ -1,7 +1,7 @@
 
/cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1131291
 /cassandra/branches/cassandra-0.7:1026516-1133874
 /cassandra/branches/cassandra-0.7.0:1053690-1055654
-/cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1135241,1135288,1135399,1135426,1135441
+/cassandra/branches/cassandra-0.8:1090934-1125013,1125019-1135241,1135288,1135399,1135426,1135441,1136006
 /cassandra/branches/cassandra-0.8.0:1125021-1130369
 /cassandra/branches/cassandra-0.8.1:1101014-1125018
 /cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689

Modified: cassandra/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1136007r1=1136006r2=1136007view=diff
==
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Wed Jun 15 11:57:44 2011
@@ -64,6 +64,7 @@
  * avoid skipping rows in scrub for counter column family (CASSANDRA-2759)
  * fix ConcurrentModificationException in repair when dealing with 0.7 node
(CASSANDRA-2767)
+ * avoid infinite loop when creating merkle tree (CASSANDRA-2758)
 
 
 0.8.0-final

Propchange: cassandra/trunk/contrib/
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jun 15 11:57:44 2011
@@ -1,7 +1,7 @@
 
/cassandra/branches/cassandra-0.6/contrib:922689-1052356,1052358-1053452,1053454,1053456-1068009
 /cassandra/branches/cassandra-0.7/contrib:1026516-1133874
 /cassandra/branches/cassandra-0.7.0/contrib:1053690-1055654
-/cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1135241,1135288,1135399,1135426,1135441
+/cassandra/branches/cassandra-0.8/contrib:1090934-1125013,1125019-1135241,1135288,1135399,1135426,1135441,1136006
 /cassandra/branches/cassandra-0.8.0/contrib:1125021-1130369
 /cassandra/branches/cassandra-0.8.1/contrib:1101014-1125018
 /cassandra/tags/cassandra-0.7.0-rc3/contrib:1051699-1053689

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jun 15 11:57:44 2011
@@ -1,7 +1,7 @@
 
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
 
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1133874
 
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654
-/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125019-1135241,1135288,1135399,1135426,1135441
+/cassandra/branches/cassandra-0.8/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1090934-1125013,1125019-1135241,1135288,1135399,1135426,1135441,1136006
 
/cassandra/branches/cassandra-0.8.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1125021-1130369
 
/cassandra/branches/cassandra-0.8.1/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1101014-1125018
 
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689

Propchange: 
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
--
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jun 15 11:57:44 2011
@@ -1,7 +1,7 @@
 
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1131291
 

svn commit: r1136008 - in /cassandra/trunk: CHANGES.txt src/java/org/apache/cassandra/dht/AbstractBounds.java test/unit/org/apache/cassandra/dht/AbstractBoundsTest.java

2011-06-15 Thread slebresne
Author: slebresne
Date: Wed Jun 15 12:01:21 2011
New Revision: 1136008

URL: http://svn.apache.org/viewvc?rev=1136008view=rev
Log:
Make AbstractBounds.normalize de-overlapp overlapping ranges
patch by slebresne; reviewed by stuhood for CASSANDRA-2641

Added:
cassandra/trunk/test/unit/org/apache/cassandra/dht/AbstractBoundsTest.java
Modified:
cassandra/trunk/CHANGES.txt
cassandra/trunk/src/java/org/apache/cassandra/dht/AbstractBounds.java

Modified: cassandra/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1136008r1=1136007r2=1136008view=diff
==
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Wed Jun 15 12:01:21 2011
@@ -2,6 +2,7 @@
  * removed binarymemtable (CASSANDRA-2692)
  * add commitlog_total_space_in_mb to prevent fragmented logs (CASSANDRA-2427)
  * removed commitlog_rotation_threshold_in_mb configuration (CASSANDRA-2771)
+ * make AbstractBounds.normalize de-overlapp overlapping ranges 
(CASSANDRA-2641)
 
 
 0.8.1

Modified: cassandra/trunk/src/java/org/apache/cassandra/dht/AbstractBounds.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/dht/AbstractBounds.java?rev=1136008r1=1136007r2=1136008view=diff
==
--- cassandra/trunk/src/java/org/apache/cassandra/dht/AbstractBounds.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/dht/AbstractBounds.java Wed 
Jun 15 12:01:21 2011
@@ -89,8 +89,8 @@ public abstract class AbstractBounds imp
 public abstract ListAbstractBounds unwrap();
 
 /**
- * @return A copy of the given list of non-intersecting bounds with all 
bounds unwrapped, sorted by bound.left.
- * This method does not allow overlapping ranges as input.
+ * @return A copy of the given list of with all bounds unwrapped, sorted 
by bound.left and with overlapping bounds merged.
+ * This method does not allow allow to mix Range and Bound in the input 
list.
  */
 public static ListAbstractBounds normalize(Collection? extends 
AbstractBounds bounds)
 {
@@ -107,6 +107,61 @@ public abstract class AbstractBounds imp
 return b1.left.compareTo(b2.left);
 }
 });
+
+// deoverlap
+return deoverlap(output);
+}
+
+/**
+ * Given a list of unwrapped bounds sorted by left token, return a list a 
equivalent
+ * list of bounds but with no overlapping bounds.
+ */
+private static ListAbstractBounds deoverlap(ListAbstractBounds bounds)
+{
+if (bounds.isEmpty())
+return bounds;
+
+ListAbstractBounds output = new ArrayListAbstractBounds();
+
+IteratorAbstractBounds iter = bounds.iterator();
+AbstractBounds current = iter.next();
+boolean isRange = current instanceof Range;
+
+Token min = current.partitioner.getMinimumToken();
+while (iter.hasNext())
+{
+if (current.right.equals(min))
+{
+// If one of the bound is the full range, we return only that
+if (current.left.equals(min))
+return Collections.AbstractBoundssingletonList(current);
+
+output.add(current.createFrom(min));
+return output;
+}
+
+AbstractBounds next = iter.next();
+assert isRange ? next instanceof Range : next instanceof Bounds;
+
+// For Ranges, if next left is equal to current right, we do not 
intersect per se, but replacing (A, B] and (B, C] by (A, C] is
+// legit, and since this actually avoid special casing and will 
result in more optimal ranges, we do this transformation
+if (next.left.compareTo(current.right) = 0)
+{
+// We do overlap
+// (we've handler current.right.equals(min) already)
+Token newRight = next.right.equals(min) || 
current.right.compareTo(next.right)  0 ? next.right : current.right;
+current = current.createFrom(newRight);
+if (current == null)
+// current is the full ring, can only happen for Range
+return Collections.AbstractBoundssingletonList(new 
Range(min, min));
+}
+else
+{
+output.add(current);
+current = next;
+}
+}
+output.add(current);
 return output;
 }
 

Added: 
cassandra/trunk/test/unit/org/apache/cassandra/dht/AbstractBoundsTest.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/dht/AbstractBoundsTest.java?rev=1136008view=auto
==
--- cassandra/trunk/test/unit/org/apache/cassandra/dht/AbstractBoundsTest.java 
(added)
+++ 

[jira] [Resolved] (CASSANDRA-2641) AbstractBounds.normalize should deal with overlapping ranges

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne resolved CASSANDRA-2641.
-

   Resolution: Fixed
Fix Version/s: (was: 0.8.1)
   1.0
 Reviewer: stuhood  (was: slebresne)
 Assignee: Sylvain Lebresne  (was: Stu Hood)

Committed to 1.0. Since I'm pretty sure we don't generate overlapping range so 
far, it's not worth taking the risk to put in 0.8.

 AbstractBounds.normalize should deal with overlapping ranges
 

 Key: CASSANDRA-2641
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2641
 Project: Cassandra
  Issue Type: Test
  Components: Core
Reporter: Stu Hood
Assignee: Sylvain Lebresne
Priority: Minor
 Fix For: 1.0

 Attachments: 0001-Assert-non-overlapping-ranges-in-normalize.txt, 
 0001-Make-normalize-deoverlap-ranges.patch, 
 0002-Don-t-use-overlapping-ranges-in-tests.txt


 Apparently no consumers have encountered it in production, but 
 AbstractBounds.normalize does not handle overlapping ranges. If given 
 overlapping ranges, the output will be sorted but still overlapping, for 
 which SSTableReader.getPositionsForRanges will choose ranges in an SSTable 
 that may overlap.
 We should either add an assert in normalize(), or in getPositionsForRanges() 
 to ensure that this never bites us in production.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2433) Failed Streams Break Repair

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne updated CASSANDRA-2433:


Attachment: (was: 
0001-Put-repair-session-on-a-Stage-and-add-a-method-to-re.patch)

 Failed Streams Break Repair
 ---

 Key: CASSANDRA-2433
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2433
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Benjamin Coverston
Assignee: Sylvain Lebresne
  Labels: repair
 Fix For: 0.8.1


 Running repair in cases where a stream fails we are seeing multiple problems.
 1. Although retry is initiated and completes, the old stream doesn't seem to 
 clean itself up and repair hangs.
 2. The temp files are left behind and multiple failures can end up filling up 
 the data partition.
 These issues together are making repair very difficult for nearly everyone 
 running repair on a non-trivial sized data set.
 This issue is also being worked on w.r.t CASSANDRA-2088, however that was 
 moved to 0.8 for a few reasons. This ticket is to fix the immediate issues 
 that we are seeing in 0.7.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2433) Failed Streams Break Repair

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne updated CASSANDRA-2433:


Attachment: (was: 
0002-Register-in-gossip-to-handle-node-failures-v3.patch)

 Failed Streams Break Repair
 ---

 Key: CASSANDRA-2433
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2433
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Benjamin Coverston
Assignee: Sylvain Lebresne
  Labels: repair
 Fix For: 0.8.1


 Running repair in cases where a stream fails we are seeing multiple problems.
 1. Although retry is initiated and completes, the old stream doesn't seem to 
 clean itself up and repair hangs.
 2. The temp files are left behind and multiple failures can end up filling up 
 the data partition.
 These issues together are making repair very difficult for nearly everyone 
 running repair on a non-trivial sized data set.
 This issue is also being worked on w.r.t CASSANDRA-2088, however that was 
 moved to 0.8 for a few reasons. This ticket is to fix the immediate issues 
 that we are seeing in 0.7.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2433) Failed Streams Break Repair

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne updated CASSANDRA-2433:


Attachment: (was: 
0002-Register-in-gossip-to-handle-node-failures-v2.patch)

 Failed Streams Break Repair
 ---

 Key: CASSANDRA-2433
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2433
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Benjamin Coverston
Assignee: Sylvain Lebresne
  Labels: repair
 Fix For: 0.8.1


 Running repair in cases where a stream fails we are seeing multiple problems.
 1. Although retry is initiated and completes, the old stream doesn't seem to 
 clean itself up and repair hangs.
 2. The temp files are left behind and multiple failures can end up filling up 
 the data partition.
 These issues together are making repair very difficult for nearly everyone 
 running repair on a non-trivial sized data set.
 This issue is also being worked on w.r.t CASSANDRA-2088, however that was 
 moved to 0.8 for a few reasons. This ticket is to fix the immediate issues 
 that we are seeing in 0.7.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2433) Failed Streams Break Repair

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne updated CASSANDRA-2433:


Attachment: (was: 
0001-Put-repair-session-on-a-Stage-and-add-a-method-to-re-v3.patch)

 Failed Streams Break Repair
 ---

 Key: CASSANDRA-2433
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2433
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Benjamin Coverston
Assignee: Sylvain Lebresne
  Labels: repair
 Fix For: 0.8.1


 Running repair in cases where a stream fails we are seeing multiple problems.
 1. Although retry is initiated and completes, the old stream doesn't seem to 
 clean itself up and repair hangs.
 2. The temp files are left behind and multiple failures can end up filling up 
 the data partition.
 These issues together are making repair very difficult for nearly everyone 
 running repair on a non-trivial sized data set.
 This issue is also being worked on w.r.t CASSANDRA-2088, however that was 
 moved to 0.8 for a few reasons. This ticket is to fix the immediate issues 
 that we are seeing in 0.7.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2433) Failed Streams Break Repair

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne updated CASSANDRA-2433:


Attachment: (was: 
0001-Put-repair-session-on-a-Stage-and-add-a-method-to-re-v2.patch)

 Failed Streams Break Repair
 ---

 Key: CASSANDRA-2433
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2433
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Benjamin Coverston
Assignee: Sylvain Lebresne
  Labels: repair
 Fix For: 0.8.1


 Running repair in cases where a stream fails we are seeing multiple problems.
 1. Although retry is initiated and completes, the old stream doesn't seem to 
 clean itself up and repair hangs.
 2. The temp files are left behind and multiple failures can end up filling up 
 the data partition.
 These issues together are making repair very difficult for nearly everyone 
 running repair on a non-trivial sized data set.
 This issue is also being worked on w.r.t CASSANDRA-2088, however that was 
 moved to 0.8 for a few reasons. This ticket is to fix the immediate issues 
 that we are seeing in 0.7.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2433) Failed Streams Break Repair

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne updated CASSANDRA-2433:


Attachment: (was: 0002-Register-in-gossip-to-handle-node-failures.patch)

 Failed Streams Break Repair
 ---

 Key: CASSANDRA-2433
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2433
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Benjamin Coverston
Assignee: Sylvain Lebresne
  Labels: repair
 Fix For: 0.8.1


 Running repair in cases where a stream fails we are seeing multiple problems.
 1. Although retry is initiated and completes, the old stream doesn't seem to 
 clean itself up and repair hangs.
 2. The temp files are left behind and multiple failures can end up filling up 
 the data partition.
 These issues together are making repair very difficult for nearly everyone 
 running repair on a non-trivial sized data set.
 This issue is also being worked on w.r.t CASSANDRA-2088, however that was 
 moved to 0.8 for a few reasons. This ticket is to fix the immediate issues 
 that we are seeing in 0.7.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2433) Failed Streams Break Repair

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne updated CASSANDRA-2433:


Attachment: (was: 
0004-Reports-validation-compaction-errors-back-to-repair-v2.patch)

 Failed Streams Break Repair
 ---

 Key: CASSANDRA-2433
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2433
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Benjamin Coverston
Assignee: Sylvain Lebresne
  Labels: repair
 Fix For: 0.8.1


 Running repair in cases where a stream fails we are seeing multiple problems.
 1. Although retry is initiated and completes, the old stream doesn't seem to 
 clean itself up and repair hangs.
 2. The temp files are left behind and multiple failures can end up filling up 
 the data partition.
 These issues together are making repair very difficult for nearly everyone 
 running repair on a non-trivial sized data set.
 This issue is also being worked on w.r.t CASSANDRA-2088, however that was 
 moved to 0.8 for a few reasons. This ticket is to fix the immediate issues 
 that we are seeing in 0.7.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2433) Failed Streams Break Repair

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne updated CASSANDRA-2433:


Attachment: (was: 
0004-Reports-validation-compaction-errors-back-to-repair.patch)

 Failed Streams Break Repair
 ---

 Key: CASSANDRA-2433
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2433
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Benjamin Coverston
Assignee: Sylvain Lebresne
  Labels: repair
 Fix For: 0.8.1


 Running repair in cases where a stream fails we are seeing multiple problems.
 1. Although retry is initiated and completes, the old stream doesn't seem to 
 clean itself up and repair hangs.
 2. The temp files are left behind and multiple failures can end up filling up 
 the data partition.
 These issues together are making repair very difficult for nearly everyone 
 running repair on a non-trivial sized data set.
 This issue is also being worked on w.r.t CASSANDRA-2088, however that was 
 moved to 0.8 for a few reasons. This ticket is to fix the immediate issues 
 that we are seeing in 0.7.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2433) Failed Streams Break Repair

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne updated CASSANDRA-2433:


Attachment: (was: 0003-Report-streaming-errors-back-to-repair-v2.patch)

 Failed Streams Break Repair
 ---

 Key: CASSANDRA-2433
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2433
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Benjamin Coverston
Assignee: Sylvain Lebresne
  Labels: repair
 Fix For: 0.8.1


 Running repair in cases where a stream fails we are seeing multiple problems.
 1. Although retry is initiated and completes, the old stream doesn't seem to 
 clean itself up and repair hangs.
 2. The temp files are left behind and multiple failures can end up filling up 
 the data partition.
 These issues together are making repair very difficult for nearly everyone 
 running repair on a non-trivial sized data set.
 This issue is also being worked on w.r.t CASSANDRA-2088, however that was 
 moved to 0.8 for a few reasons. This ticket is to fix the immediate issues 
 that we are seeing in 0.7.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2433) Failed Streams Break Repair

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne updated CASSANDRA-2433:


Attachment: (was: 0003-Report-streaming-errors-back-to-repair-v3.patch)

 Failed Streams Break Repair
 ---

 Key: CASSANDRA-2433
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2433
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Benjamin Coverston
Assignee: Sylvain Lebresne
  Labels: repair
 Fix For: 0.8.1


 Running repair in cases where a stream fails we are seeing multiple problems.
 1. Although retry is initiated and completes, the old stream doesn't seem to 
 clean itself up and repair hangs.
 2. The temp files are left behind and multiple failures can end up filling up 
 the data partition.
 These issues together are making repair very difficult for nearly everyone 
 running repair on a non-trivial sized data set.
 This issue is also being worked on w.r.t CASSANDRA-2088, however that was 
 moved to 0.8 for a few reasons. This ticket is to fix the immediate issues 
 that we are seeing in 0.7.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2433) Failed Streams Break Repair

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne updated CASSANDRA-2433:


Attachment: 
0004-Reports-validation-compaction-errors-back-to-repair-v4.patch
0003-Report-streaming-errors-back-to-repair-v4.patch
0002-Register-in-gossip-to-handle-node-failures-v4.patch

0001-Put-repair-session-on-a-Stage-and-add-a-method-to-re-v4.patch

Attaching v4 that is rebased and simply set the reties variable in 
StreamInSession volatile after all (I've removed old version because it was a 
mess).

 Failed Streams Break Repair
 ---

 Key: CASSANDRA-2433
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2433
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Benjamin Coverston
Assignee: Sylvain Lebresne
  Labels: repair
 Fix For: 0.8.1

 Attachments: 
 0001-Put-repair-session-on-a-Stage-and-add-a-method-to-re-v4.patch, 
 0002-Register-in-gossip-to-handle-node-failures-v4.patch, 
 0003-Report-streaming-errors-back-to-repair-v4.patch, 
 0004-Reports-validation-compaction-errors-back-to-repair-v4.patch


 Running repair in cases where a stream fails we are seeing multiple problems.
 1. Although retry is initiated and completes, the old stream doesn't seem to 
 clean itself up and repair hangs.
 2. The temp files are left behind and multiple failures can end up filling up 
 the data partition.
 These issues together are making repair very difficult for nearly everyone 
 running repair on a non-trivial sized data set.
 This issue is also being worked on w.r.t CASSANDRA-2088, however that was 
 moved to 0.8 for a few reasons. This ticket is to fix the immediate issues 
 that we are seeing in 0.7.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2732) StringIndexOutOfBoundsException when specifying JDBC connection string without user and password

2011-06-15 Thread Vivek Mishra (JIRA)

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

Vivek Mishra commented on CASSANDRA-2732:
-

Does it mean specifiying something like cassandra.properties to hold these 
parameters and loading them up with DriverManager. Will it make  getting a jdbc 
connection without even specifying a URI? 

In this we can remove such checks for '@' or something like this. 

As i believe username and password as part of connection parameters doesn't 
make much sense with Cassandra.



 StringIndexOutOfBoundsException when specifying JDBC connection string 
 without user and password
 

 Key: CASSANDRA-2732
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2732
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 0.8 beta 1
Reporter: Cathy Daw
Assignee: Rick Shaw
Priority: Trivial
  Labels: cql

 *PASS: specify connection string user and password*
 _connection = 
 DriverManager.getConnection(jdbc:cassandra:root/root@localhost:9170/default)_
 *FAIL: specify connection string without user and password*
 _connection = 
 DriverManager.getConnection(jdbc:cassandra://localhost:9170/default)_
 {code}
 [junit] String index out of range: -1
 [junit] java.lang.StringIndexOutOfBoundsException: String index out of range: 
 -1
 [junit] at java.lang.String.substring(String.java:1937)
 [junit] at 
 org.apache.cassandra.cql.jdbc.CassandraConnection.init(CassandraConnection.java:74)
 [junit] at 
 org.apache.cassandra.cql.jdbc.CassandraConnection.init(CassandraConnection.java:74)
 [junit] at 
 org.apache.cassandra.cql.jdbc.CassandraDriver.connect(CassandraDriver.java:86)
 [junit] at java.sql.DriverManager.getConnection(DriverManager.java:582)
 [junit] at java.sql.DriverManager.getConnection(DriverManager.java:207)
 [junit] at 
 com.datastax.cql.runJDBCSmokeTest.setUpBeforeClass(runJDBCSmokeTest.java:45)
 {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2732) StringIndexOutOfBoundsException when specifying JDBC connection string without user and password

2011-06-15 Thread Vivek Mishra (JIRA)

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

Vivek Mishra commented on CASSANDRA-2732:
-

Specifying property set is supported by JDBC. But putting something like 
cassandra.properties can be more useful as it will allow us to put more 
configurable parameters may be needed in future, like batch flush, batch fetch 
etc etc.

 StringIndexOutOfBoundsException when specifying JDBC connection string 
 without user and password
 

 Key: CASSANDRA-2732
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2732
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 0.8 beta 1
Reporter: Cathy Daw
Assignee: Rick Shaw
Priority: Trivial
  Labels: cql

 *PASS: specify connection string user and password*
 _connection = 
 DriverManager.getConnection(jdbc:cassandra:root/root@localhost:9170/default)_
 *FAIL: specify connection string without user and password*
 _connection = 
 DriverManager.getConnection(jdbc:cassandra://localhost:9170/default)_
 {code}
 [junit] String index out of range: -1
 [junit] java.lang.StringIndexOutOfBoundsException: String index out of range: 
 -1
 [junit] at java.lang.String.substring(String.java:1937)
 [junit] at 
 org.apache.cassandra.cql.jdbc.CassandraConnection.init(CassandraConnection.java:74)
 [junit] at 
 org.apache.cassandra.cql.jdbc.CassandraConnection.init(CassandraConnection.java:74)
 [junit] at 
 org.apache.cassandra.cql.jdbc.CassandraDriver.connect(CassandraDriver.java:86)
 [junit] at java.sql.DriverManager.getConnection(DriverManager.java:582)
 [junit] at java.sql.DriverManager.getConnection(DriverManager.java:207)
 [junit] at 
 com.datastax.cql.runJDBCSmokeTest.setUpBeforeClass(runJDBCSmokeTest.java:45)
 {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Issue Comment Edited] (CASSANDRA-2388) ColumnFamilyRecordReader fails for a given split because a host is down, even if records could reasonably be read from other replica.

2011-06-15 Thread Mck SembWever (JIRA)

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

Mck SembWever edited comment on CASSANDRA-2388 at 6/15/11 12:46 PM:


bq. [snip] One possibility is to use the ip octets like the 
RackInferringSnitch. 

In our usecase we have three nodes defined via 
PropertyFileSnitch:{noformat}152.90.241.22=DC1:RAC1 #node1
152.90.241.23=DC2:RAC1 #node2
152.90.241.24=DC1:RAC1 #node3{noformat}

When we make the connection through the other (node2) endpoint taking the 
rack inferring approach 152.90. will say it's in DC2. (again) this is the 
wrong DC and will return itself as a valid endpoint

Step (3) seems to me to be too specific to be included here.
If i go only with steps (1),(2),and (4) we get this code:{noformat}public 
String[] sort_endpoints_by_proximity(String endpoint, String[] endpoints, 
boolean restrictToSameDC) 
throws TException, InvalidRequestException
{
try
{
ListString results = new ArrayListString();
InetAddress address = InetAddress.getByName(endpoint);
boolean endpointValid = null != 
Gossiper.instance.getEndpointStateForEndpoint(address);
String datacenter = DatabaseDescriptor
.getEndpointSnitch().getDatacenter(endpointValid ? address 
: FBUtilities.getLocalAddress());
ListInetAddress addresses = new ArrayListInetAddress();
for(String ep : endpoints)
{
addresses.add(InetAddress.getByName(endpoint));
}
DatabaseDescriptor.getEndpointSnitch().sortByProximity(address, 
addresses);
for(InetAddress ep : addresses)
{
String dc = 
DatabaseDescriptor.getEndpointSnitch().getDatacenter(ep);
if(FailureDetector.instance.isAlive(ep)  (!restrictToSameDC 
|| datacenter.equals(dc)))
{
results.add(ep.getHostName());
}
}
return results.toArray(new String[results.size()]);
}
catch (UnknownHostException e)
{
throw new InvalidRequestException(e.getMessage());
}
}{noformat}

I'm happy with this (except that 
{{Gossiper.instance.getEndpointStateForEndpoint(address)}} is only my guess on 
how to tell if an endpoint is valid as such).

  was (Author: michaelsembwever):
bq. [snip] One possibility is to use the ip octets like the 
RackInferringSnitch. 

In our usecase we have three nodes defined via 
PropertyFileSnitch:{noformat}152.90.241.22=DC1:RAC1 #node1
152.90.241.23=DC2:RAC1 #node2
152.90.241.24=DC1:RAC1 #node3{noformat}

When we make the connection through the other (node2) endpoint taking the 
rack inferring approach 152.90. will say it's in DC2. (again) this is the 
wrong DC and will return itself as a valid endpoint

Step (3) seems to me to be too specific to be included here.
If i take it out we get this code:{noformat}public String[] 
sort_endpoints_by_proximity(String endpoint, String[] endpoints, boolean 
restrictToSameDC) 
throws TException, InvalidRequestException
{
try
{
ListString results = new ArrayListString();
InetAddress address = InetAddress.getByName(endpoint);
boolean endpointValid = null != 
Gossiper.instance.getEndpointStateForEndpoint(address);
String datacenter = DatabaseDescriptor
.getEndpointSnitch().getDatacenter(endpointValid ? address 
: FBUtilities.getLocalAddress());
ListInetAddress addresses = new ArrayListInetAddress();
for(String ep : endpoints)
{
addresses.add(InetAddress.getByName(endpoint));
}
DatabaseDescriptor.getEndpointSnitch().sortByProximity(address, 
addresses);
for(InetAddress ep : addresses)
{
String dc = 
DatabaseDescriptor.getEndpointSnitch().getDatacenter(ep);
if(FailureDetector.instance.isAlive(ep)  (!restrictToSameDC 
|| datacenter.equals(dc)))
{
results.add(ep.getHostName());
}
}
return results.toArray(new String[results.size()]);
}
catch (UnknownHostException e)
{
throw new InvalidRequestException(e.getMessage());
}
}{noformat}

I'm happy with this (except that 
{{Gossiper.instance.getEndpointStateForEndpoint(address)}} is only my guess on 
how to tell if an endpoint is valid as such).
  
 ColumnFamilyRecordReader fails for a given split because a host is down, even 
 if records could reasonably be read from other replica.
 -

[jira] [Commented] (CASSANDRA-2732) StringIndexOutOfBoundsException when specifying JDBC connection string without user and password

2011-06-15 Thread Rick Shaw (JIRA)

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

Rick Shaw commented on CASSANDRA-2732:
--

With the new changes a special cassandra properties file will not be necessary.

You may now use the properties argument in the DriverManager (or the username 
and password arguments) it is also fully supported in the factory methods. It 
works with Datasources as well.

I agree that the URI is not the right place for user and password but it will 
continue to be supported for convenience. The properties or the un/pw arguments 
to the Drivermanager will alway take precedence.

Any additional helpful parameters to give hints to the driver are supposed to 
be passed in this fashion. There just are not any that are supported yet. When 
we support built in pooling (external pooling of connection works now) those 
arguments you spoke of will be passed in the properties argument as well.

The goal is this should look and feel like any other JDBC driver for a DB with 
the few limitations that are unique to C*.

 StringIndexOutOfBoundsException when specifying JDBC connection string 
 without user and password
 

 Key: CASSANDRA-2732
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2732
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 0.8 beta 1
Reporter: Cathy Daw
Assignee: Rick Shaw
Priority: Trivial
  Labels: cql

 *PASS: specify connection string user and password*
 _connection = 
 DriverManager.getConnection(jdbc:cassandra:root/root@localhost:9170/default)_
 *FAIL: specify connection string without user and password*
 _connection = 
 DriverManager.getConnection(jdbc:cassandra://localhost:9170/default)_
 {code}
 [junit] String index out of range: -1
 [junit] java.lang.StringIndexOutOfBoundsException: String index out of range: 
 -1
 [junit] at java.lang.String.substring(String.java:1937)
 [junit] at 
 org.apache.cassandra.cql.jdbc.CassandraConnection.init(CassandraConnection.java:74)
 [junit] at 
 org.apache.cassandra.cql.jdbc.CassandraConnection.init(CassandraConnection.java:74)
 [junit] at 
 org.apache.cassandra.cql.jdbc.CassandraDriver.connect(CassandraDriver.java:86)
 [junit] at java.sql.DriverManager.getConnection(DriverManager.java:582)
 [junit] at java.sql.DriverManager.getConnection(DriverManager.java:207)
 [junit] at 
 com.datastax.cql.runJDBCSmokeTest.setUpBeforeClass(runJDBCSmokeTest.java:45)
 {code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2405) should expose 'time since last successful repair' for easier aes monitoring

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne commented on CASSANDRA-2405:
-

The problem with using the completion time as the (Super)Column name is that 
you have to wait the end of the repair to store anything. First, this will not 
capture started but failed session (which while not mandatory could be nice, 
especially as soon as we will start keeping a bit more info this could help 
troubleshooting). And Second, it will be a pain to have to keep some of the 
information until the end (the processingStartedAt is a first sign of this). 
And third, we may want to keep some info on say merkle tree creation on all 
replica participating in the repair, even though we only store the completed 
time on the node initiating the repair.

So I would propose to something like:
  row key: KS/CF
  super column name: repair session name (a TimeUUID)
  columns: the infos on the session (range, start and end time, number of range 
repaired, bytes transferred, ...)

That is roughly the same thing as you propose but with super column name being 
the repair session name.

Now, because the repair session names are TimeUUID (well, right now it is a 
sting including a UUID, we can change it to a simple TimeUUID easily), the 
session will be ordered by creation time. So getting the last successful repair 
is probably not too hard: just grab the last 1000 created sessions and find the 
last successful one.
And if we want, we can even use another specific index row that associate 
'completion time' - 'session UUID' (and thanks to the new DynamicCompositeType 
we can have some rows ordered by TimeUUIDType and some other ordered by 
LongType without the need of multiple system table).

 should expose 'time since last successful repair' for easier aes monitoring
 ---

 Key: CASSANDRA-2405
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2405
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Peter Schuller
Assignee: Pavel Yaskevich
Priority: Minor
 Fix For: 0.8.1

 Attachments: CASSANDRA-2405-v2.patch, CASSANDRA-2405-v3.patch, 
 CASSANDRA-2405.patch


 The practical implementation issues of actually ensuring repair runs is 
 somewhat of an undocumented/untreated issue.
 One hopefully low hanging fruit would be to at least expose the time since 
 last successful repair for a particular column family, to make it easier to 
 write a correct script to monitor for lack of repair in a non-buggy fashion.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2774) one way to make counter delete work better

2011-06-15 Thread Yang Yang (JIRA)

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

Yang Yang commented on CASSANDRA-2774:
--

--- the only valid answer not really

In fact this is the same reasoning that I explained in your
Net partition case on gmail.g list
You expect that it is  the only valid  case* * 
Because* ** of assumed timing order from client respective
but we know that timing
Is not trustworthy and this order on client is
Not respected because client does not participate
In the logical clock protocol of epoch generation

Btw we'd better force ROW for delete so we achieve
Faster agreement and lose fewer adds
On old epoch. 

I think with quorum delete you will guarantee
timing to be consistent eoyh client
And then achieve client expected result I. Your
Case, id like to hear your counter example


Pardon the typing, on phone, will be
On computer soon



 one way to make counter delete work better
 --

 Key: CASSANDRA-2774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2774
 Project: Cassandra
  Issue Type: New Feature
Affects Versions: 0.8.0
Reporter: Yang Yang
 Attachments: counter_delete.diff


 current Counter does not work with delete, because different merging order of 
 sstables would produces different result, for example:
 add 1
 delete 
 add 2
 if the merging happens by 1-2, (1,2)--3  order, the result we see will be 2
 if merging is: 1--3, (1,3)--2, the result will be 3.
 the issue is that delete now can not separate out previous adds and adds 
 later than the delete. supposedly a delete is to create a completely new 
 incarnation of the counter, or a new lifetime, or epoch. the new approach 
 utilizes the concept of epoch number, so that each delete bumps up the 
 epoch number. since each write is replicated (replicate on write is almost 
 always enabled in practice, if this is a concern, we could further force ROW 
 in case of delete ), so the epoch number is global to a replica set
 changes are attached, existing tests pass fine, some tests are modified since 
 the semantic is changed a bit. some cql tests do not pass in the original 
 0.8.0 source, that's not the fault of this change.
 see details at 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201106.mbox/%3cbanlktikqcglsnwtt-9hvqpseoo7sf58...@mail.gmail.com%3E
 the goal of this is to make delete work ( at least with consistent behavior, 
 yes in case of long network partition, the behavior is not ideal, but it's 
 consistent with the definition of logical clock), so that we could have 
 expiring Counters

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2405) should expose 'time since last successful repair' for easier aes monitoring

2011-06-15 Thread Pavel Yaskevich (JIRA)

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

Pavel Yaskevich commented on CASSANDRA-2405:


We need to decide - are we going with description of this task or trying to 
build logging for repair?

 should expose 'time since last successful repair' for easier aes monitoring
 ---

 Key: CASSANDRA-2405
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2405
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Peter Schuller
Assignee: Pavel Yaskevich
Priority: Minor
 Fix For: 0.8.1

 Attachments: CASSANDRA-2405-v2.patch, CASSANDRA-2405-v3.patch, 
 CASSANDRA-2405.patch


 The practical implementation issues of actually ensuring repair runs is 
 somewhat of an undocumented/untreated issue.
 One hopefully low hanging fruit would be to at least expose the time since 
 last successful repair for a particular column family, to make it easier to 
 write a correct script to monitor for lack of repair in a non-buggy fashion.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2405) should expose 'time since last successful repair' for easier aes monitoring

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne commented on CASSANDRA-2405:
-

I'm keen on adding persisted stats for repair for CASSANDRA-2698. Recording the 
start and end time of repair also amounts to persisting stats on repair. Given 
that, I don't care too much about what the description of this says, but I'm 
pretty much opposed to doing anything here that would make CASSANDRA-2698 much 
harder that it needs unless there is a good reason, and I don't see one. I'm 
happy with making this a duplicate or dependency of CASSANDRA-2698 though.

 should expose 'time since last successful repair' for easier aes monitoring
 ---

 Key: CASSANDRA-2405
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2405
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Peter Schuller
Assignee: Pavel Yaskevich
Priority: Minor
 Fix For: 0.8.1

 Attachments: CASSANDRA-2405-v2.patch, CASSANDRA-2405-v3.patch, 
 CASSANDRA-2405.patch


 The practical implementation issues of actually ensuring repair runs is 
 somewhat of an undocumented/untreated issue.
 One hopefully low hanging fruit would be to at least expose the time since 
 last successful repair for a particular column family, to make it easier to 
 write a correct script to monitor for lack of repair in a non-buggy fashion.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2774) one way to make counter delete work better

2011-06-15 Thread Yang Yang (JIRA)

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

Yang Yang commented on CASSANDRA-2774:
--

It's good to step back and ask  what is the contract ? Now
So far cassandra let time be dictated arbitrarily by client (
Client assigns timestamp) so it can afford to expect*  the* ***
Ordering and *the** result

In counters client-generated ts can't be used so we can't guarantee* the* 
expected
Result.

But we will guaranttee that all nodes on the system eventually agree on
*some* common result, this is actually consistent with the definition
Of eventual consistency brought forth by Dynamo


( if u look at client-generated ts. It could indeed produce some
Unintuitive results: if a client sets ts to be very late into
The future, latter writes could be wiped out. For regular columns
 This is in the same way against common client expectations about ordering as 
in the counter case)

In summary the current implementation cannot guarattee any 
common agreement on counter value but the new approach guarantees thecommon 
value

Achievement of some 

 one way to make counter delete work better
 --

 Key: CASSANDRA-2774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2774
 Project: Cassandra
  Issue Type: New Feature
Affects Versions: 0.8.0
Reporter: Yang Yang
 Attachments: counter_delete.diff


 current Counter does not work with delete, because different merging order of 
 sstables would produces different result, for example:
 add 1
 delete 
 add 2
 if the merging happens by 1-2, (1,2)--3  order, the result we see will be 2
 if merging is: 1--3, (1,3)--2, the result will be 3.
 the issue is that delete now can not separate out previous adds and adds 
 later than the delete. supposedly a delete is to create a completely new 
 incarnation of the counter, or a new lifetime, or epoch. the new approach 
 utilizes the concept of epoch number, so that each delete bumps up the 
 epoch number. since each write is replicated (replicate on write is almost 
 always enabled in practice, if this is a concern, we could further force ROW 
 in case of delete ), so the epoch number is global to a replica set
 changes are attached, existing tests pass fine, some tests are modified since 
 the semantic is changed a bit. some cql tests do not pass in the original 
 0.8.0 source, that's not the fault of this change.
 see details at 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201106.mbox/%3cbanlktikqcglsnwtt-9hvqpseoo7sf58...@mail.gmail.com%3E
 the goal of this is to make delete work ( at least with consistent behavior, 
 yes in case of long network partition, the behavior is not ideal, but it's 
 consistent with the definition of logical clock), so that we could have 
 expiring Counters

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2761) JDBC driver does not build

2011-06-15 Thread Rick Shaw (JIRA)

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

Rick Shaw updated CASSANDRA-2761:
-

Attachment: jdbc-driver-build-v2.txt

The v2 patch adds inclusion of classes that are required on the client side 
from the main C* build. 

 JDBC driver does not build
 --

 Key: CASSANDRA-2761
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2761
 Project: Cassandra
  Issue Type: Bug
  Components: API
Affects Versions: 1.0
Reporter: Jonathan Ellis
Assignee: Rick Shaw
 Fix For: 1.0

 Attachments: jdbc-driver-build-v1.txt, jdbc-driver-build-v2.txt


 Need a way to build (and run tests for) the Java driver.
 Also: still some vestigal references to drivers/ in trunk build.xml.
 Should we remove drivers/ from the 0.8 branch as well?

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Issue Comment Edited] (CASSANDRA-2774) one way to make counter delete work better

2011-06-15 Thread Yang Yang (JIRA)

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

Yang Yang edited comment on CASSANDRA-2774 at 6/15/11 3:48 PM:
---

It's good to step back and ask  what is the contract ? Now
So far cassandra let time be dictated arbitrarily by client (
Client assigns timestamp) so it can afford to expect *the*
Ordering and *the* result

In counters client-generated ts can't be used so we can't guarantee *the* 
expected
Result.

But we will guaranttee that all nodes on the system eventually agree on
*some* common result, this is actually consistent with the definition
Of eventual consistency brought forth by Dynamo


( if u look at client-generated ts. It could indeed produce some
Unintuitive results: if a client sets ts to be very late into
The future, latter writes could be wiped out. For regular columns
 This is in the same way against common client expectations about ordering as 
in the counter case)

In summary the current implementation cannot guarattee any 
common agreement on counter value but the new approach guarantees the 
achievement of *some* common value



  was (Author: yangyangyyy):
It's good to step back and ask  what is the contract ? Now
So far cassandra let time be dictated arbitrarily by client (
Client assigns timestamp) so it can afford to expect*  the* ***
Ordering and *the** result

In counters client-generated ts can't be used so we can't guarantee* the* 
expected
Result.

But we will guaranttee that all nodes on the system eventually agree on
*some* common result, this is actually consistent with the definition
Of eventual consistency brought forth by Dynamo


( if u look at client-generated ts. It could indeed produce some
Unintuitive results: if a client sets ts to be very late into
The future, latter writes could be wiped out. For regular columns
 This is in the same way against common client expectations about ordering as 
in the counter case)

In summary the current implementation cannot guarattee any 
common agreement on counter value but the new approach guarantees thecommon 
value

Achievement of some 
  
 one way to make counter delete work better
 --

 Key: CASSANDRA-2774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2774
 Project: Cassandra
  Issue Type: New Feature
Affects Versions: 0.8.0
Reporter: Yang Yang
 Attachments: counter_delete.diff


 current Counter does not work with delete, because different merging order of 
 sstables would produces different result, for example:
 add 1
 delete 
 add 2
 if the merging happens by 1-2, (1,2)--3  order, the result we see will be 2
 if merging is: 1--3, (1,3)--2, the result will be 3.
 the issue is that delete now can not separate out previous adds and adds 
 later than the delete. supposedly a delete is to create a completely new 
 incarnation of the counter, or a new lifetime, or epoch. the new approach 
 utilizes the concept of epoch number, so that each delete bumps up the 
 epoch number. since each write is replicated (replicate on write is almost 
 always enabled in practice, if this is a concern, we could further force ROW 
 in case of delete ), so the epoch number is global to a replica set
 changes are attached, existing tests pass fine, some tests are modified since 
 the semantic is changed a bit. some cql tests do not pass in the original 
 0.8.0 source, that's not the fault of this change.
 see details at 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201106.mbox/%3cbanlktikqcglsnwtt-9hvqpseoo7sf58...@mail.gmail.com%3E
 the goal of this is to make delete work ( at least with consistent behavior, 
 yes in case of long network partition, the behavior is not ideal, but it's 
 consistent with the definition of logical clock), so that we could have 
 expiring Counters

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Issue Comment Edited] (CASSANDRA-2774) one way to make counter delete work better

2011-06-15 Thread Yang Yang (JIRA)

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

Yang Yang edited comment on CASSANDRA-2774 at 6/15/11 3:51 PM:
---

--- the only valid answer not really

In fact this is the same reasoning that I explained in your
Net partition case on gmail.g list
You expect that it is  the only valid  case 
*because*  of assumed timing order from client respective
but we know that timing
Is not trustworthy and this order on client is
Not respected because client does not participate
In the logical clock protocol of epoch generation

Btw we'd better force ROW for delete so we achieve
Faster agreement and lose fewer adds
On old epoch. 

I think with quorum delete you will guarantee
timing to be consistent with client
And then achieve client expected result I. Your
Case, id like to hear your counter example


Pardon the typing, on phone, will be
On computer soon



  was (Author: yangyangyyy):
--- the only valid answer not really

In fact this is the same reasoning that I explained in your
Net partition case on gmail.g list
You expect that it is  the only valid  case* * 
Because* ** of assumed timing order from client respective
but we know that timing
Is not trustworthy and this order on client is
Not respected because client does not participate
In the logical clock protocol of epoch generation

Btw we'd better force ROW for delete so we achieve
Faster agreement and lose fewer adds
On old epoch. 

I think with quorum delete you will guarantee
timing to be consistent eoyh client
And then achieve client expected result I. Your
Case, id like to hear your counter example


Pardon the typing, on phone, will be
On computer soon


  
 one way to make counter delete work better
 --

 Key: CASSANDRA-2774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2774
 Project: Cassandra
  Issue Type: New Feature
Affects Versions: 0.8.0
Reporter: Yang Yang
 Attachments: counter_delete.diff


 current Counter does not work with delete, because different merging order of 
 sstables would produces different result, for example:
 add 1
 delete 
 add 2
 if the merging happens by 1-2, (1,2)--3  order, the result we see will be 2
 if merging is: 1--3, (1,3)--2, the result will be 3.
 the issue is that delete now can not separate out previous adds and adds 
 later than the delete. supposedly a delete is to create a completely new 
 incarnation of the counter, or a new lifetime, or epoch. the new approach 
 utilizes the concept of epoch number, so that each delete bumps up the 
 epoch number. since each write is replicated (replicate on write is almost 
 always enabled in practice, if this is a concern, we could further force ROW 
 in case of delete ), so the epoch number is global to a replica set
 changes are attached, existing tests pass fine, some tests are modified since 
 the semantic is changed a bit. some cql tests do not pass in the original 
 0.8.0 source, that's not the fault of this change.
 see details at 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201106.mbox/%3cbanlktikqcglsnwtt-9hvqpseoo7sf58...@mail.gmail.com%3E
 the goal of this is to make delete work ( at least with consistent behavior, 
 yes in case of long network partition, the behavior is not ideal, but it's 
 consistent with the definition of logical clock), so that we could have 
 expiring Counters

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Issue Comment Edited] (CASSANDRA-2774) one way to make counter delete work better

2011-06-15 Thread Yang Yang (JIRA)

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

Yang Yang edited comment on CASSANDRA-2774 at 6/15/11 3:49 PM:
---

It's good to step back and ask  what is the contract ? now.
So far cassandra lets time be dictated arbitrarily by client (
Client assigns timestamp) so it can afford to expect *the*
Ordering and *the* result

In counters client-generated ts can't be used so we can't guarantee *the* 
expected
Result.

But we will guaranttee that all nodes on the system eventually agree on
*some* common result, this is actually consistent with the definition
Of eventual consistency brought forth by Dynamo


( if u look at client-generated ts. It could indeed produce some
Unintuitive results: if a client sets ts to be very late into
The future, latter writes could be wiped out. For regular columns
 This is in the same way against common client expectations about ordering as 
in the counter case)

In summary the current implementation cannot guarattee any 
common agreement on counter value but the new approach guarantees the 
achievement of *some* common value



  was (Author: yangyangyyy):
It's good to step back and ask  what is the contract ? Now
So far cassandra let time be dictated arbitrarily by client (
Client assigns timestamp) so it can afford to expect *the*
Ordering and *the* result

In counters client-generated ts can't be used so we can't guarantee *the* 
expected
Result.

But we will guaranttee that all nodes on the system eventually agree on
*some* common result, this is actually consistent with the definition
Of eventual consistency brought forth by Dynamo


( if u look at client-generated ts. It could indeed produce some
Unintuitive results: if a client sets ts to be very late into
The future, latter writes could be wiped out. For regular columns
 This is in the same way against common client expectations about ordering as 
in the counter case)

In summary the current implementation cannot guarattee any 
common agreement on counter value but the new approach guarantees the 
achievement of *some* common value


  
 one way to make counter delete work better
 --

 Key: CASSANDRA-2774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2774
 Project: Cassandra
  Issue Type: New Feature
Affects Versions: 0.8.0
Reporter: Yang Yang
 Attachments: counter_delete.diff


 current Counter does not work with delete, because different merging order of 
 sstables would produces different result, for example:
 add 1
 delete 
 add 2
 if the merging happens by 1-2, (1,2)--3  order, the result we see will be 2
 if merging is: 1--3, (1,3)--2, the result will be 3.
 the issue is that delete now can not separate out previous adds and adds 
 later than the delete. supposedly a delete is to create a completely new 
 incarnation of the counter, or a new lifetime, or epoch. the new approach 
 utilizes the concept of epoch number, so that each delete bumps up the 
 epoch number. since each write is replicated (replicate on write is almost 
 always enabled in practice, if this is a concern, we could further force ROW 
 in case of delete ), so the epoch number is global to a replica set
 changes are attached, existing tests pass fine, some tests are modified since 
 the semantic is changed a bit. some cql tests do not pass in the original 
 0.8.0 source, that's not the fault of this change.
 see details at 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201106.mbox/%3cbanlktikqcglsnwtt-9hvqpseoo7sf58...@mail.gmail.com%3E
 the goal of this is to make delete work ( at least with consistent behavior, 
 yes in case of long network partition, the behavior is not ideal, but it's 
 consistent with the definition of logical clock), so that we could have 
 expiring Counters

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2774) one way to make counter delete work better

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne commented on CASSANDRA-2774:
-


bq. I think with quorum delete you will guarantee timing to be consistent eoyh 
client And then achieve client expected result I. Your Case, id like to hear 
your counter example

Consider a cluster with RF=3 and counter c replicated on node A, B and C.  
Consider that all operation are done by the same client connected to some other 
node (doesn't have to be the same each time but can be). All operations are 
performed at QUORUM consistency level.

The client does the following operations:
# increment c by 1
# delete c
# increment c by 1
# reads c

Because QUORUM is 2, depending on internal timings (latency on the wire and 
such), either only 2 or the 3 nodes will have seen each write once it is acked 
to the client. Again, for the same inputs and depending on timing, the client 
could get on the read a variety of results:
* 1 if each node have received each operation in the order issued.
* 0 or 2, if for instance, by the time the read is issued:
** the first increment only reached B and C
** the deletion only reached A and C
** the second increment only reached A and B and it happens that the two first 
node answering the read are B and C. The exact value depends on the exact rules 
for dealing with the epoch number, but in any case, B would only have the two 
increments and C would have the first increment and deletion (issued after the 
increment, so the deletion wins). So B will answer 2 and C will answer a 
tombstone. Whatever resolution the coordinator does, it just cannot return 1 
that time.


 one way to make counter delete work better
 --

 Key: CASSANDRA-2774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2774
 Project: Cassandra
  Issue Type: New Feature
Affects Versions: 0.8.0
Reporter: Yang Yang
 Attachments: counter_delete.diff


 current Counter does not work with delete, because different merging order of 
 sstables would produces different result, for example:
 add 1
 delete 
 add 2
 if the merging happens by 1-2, (1,2)--3  order, the result we see will be 2
 if merging is: 1--3, (1,3)--2, the result will be 3.
 the issue is that delete now can not separate out previous adds and adds 
 later than the delete. supposedly a delete is to create a completely new 
 incarnation of the counter, or a new lifetime, or epoch. the new approach 
 utilizes the concept of epoch number, so that each delete bumps up the 
 epoch number. since each write is replicated (replicate on write is almost 
 always enabled in practice, if this is a concern, we could further force ROW 
 in case of delete ), so the epoch number is global to a replica set
 changes are attached, existing tests pass fine, some tests are modified since 
 the semantic is changed a bit. some cql tests do not pass in the original 
 0.8.0 source, that's not the fault of this change.
 see details at 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201106.mbox/%3cbanlktikqcglsnwtt-9hvqpseoo7sf58...@mail.gmail.com%3E
 the goal of this is to make delete work ( at least with consistent behavior, 
 yes in case of long network partition, the behavior is not ideal, but it's 
 consistent with the definition of logical clock), so that we could have 
 expiring Counters

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2369) support replication decisions per-key

2011-06-15 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis commented on CASSANDRA-2369:
---

No, it's worse than that.

Let me give an example of a simple multi-node, multi-DC cluster: nodes A and M 
in DC1, nodes B and N in DC2.  So node A, M, B, and N have keys in ranges 
(M-A], (A, M], (N, B], (B, N], respectively.

If I write a row K with NTS {DC1: 1, DC2:2}, then I know it will be on nodes M 
and N. So far so good.

What if I now repair node M? It knows it has to compare its data for range (A, 
B] with that data on node B, and range (B, M] with that data on node N.  So it 
builds a merkle tree for each range, and requests that B and N do so as well, 
then they exchange trees to see if things are in sync.

How does this change if we introduce this partitioner? M can no longer assume 
that keys it has for range (A, B] should also be replicated to node M, and vice 
versa.  You would have to build a separate tree for each replica, i.e. instead 
of just a tree for (A, B], each replica would need to build a tree for (A, 
B]-that-belongs-on-M, and another tree for (A, B)-that-belongs-on-B, and so 
forth for as many possible replicas as exist.

There is a similar problem on bootstrap and node movement.  Instead of asking a 
single replica to stream data from the range a new node is assuming, it will 
have to ask _all_ replicas that may have rows for that range to make sure it 
doesn't miss any.

 support replication decisions per-key
 -

 Key: CASSANDRA-2369
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2369
 Project: Cassandra
  Issue Type: New Feature
Reporter: Jonathan Ellis
Assignee: Vijay
Priority: Minor
 Fix For: 1.0


 Currently the replicationstrategy gets a token and a keyspace with which to 
 decide how to place replicas.  for per-row replication this is insufficient 
 because tokenization is lossy (CASSANDRA-1034).

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2405) should expose 'time since last successful repair' for easier aes monitoring

2011-06-15 Thread Pavel Yaskevich (JIRA)

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

Pavel Yaskevich commented on CASSANDRA-2405:


I'm thinking of using range as supercolumn and storing session_id, 
start/completion times as subcolumns, that will give us possibility to log 
individually each of the repairs made in the session.

 should expose 'time since last successful repair' for easier aes monitoring
 ---

 Key: CASSANDRA-2405
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2405
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Peter Schuller
Assignee: Pavel Yaskevich
Priority: Minor
 Fix For: 0.8.1

 Attachments: CASSANDRA-2405-v2.patch, CASSANDRA-2405-v3.patch, 
 CASSANDRA-2405.patch


 The practical implementation issues of actually ensuring repair runs is 
 somewhat of an undocumented/untreated issue.
 One hopefully low hanging fruit would be to at least expose the time since 
 last successful repair for a particular column family, to make it easier to 
 write a correct script to monitor for lack of repair in a non-buggy fashion.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2774) one way to make counter delete work better

2011-06-15 Thread Yang Yang (JIRA)

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

Yang Yang commented on CASSANDRA-2774:
--

you are right it just cannot return 1 (at) *that time* , 0 or 2 is the value 
not stable that the system had from some past
snapshot in time.

but it will eventually come to answer 1:

since our edge case above assumes that B has not got the deletion yet, the 
leader in the second increment can not be A, cuz otherwise B must have got the 
deletion from A, since on A the increment comes later. so B was the leader in 
the second increment.


for C, it now has new epoch,  let's say A's second increment reaches C (through 
repair, since A is not the leader in second increment), this increment has new 
epoch, so it will be accepted by C; if B's second increment reaches C, it 
belongs to the old epoch, it will be rejected.

for B, it is still on the old epoch,  after the second increment, B's count is 
2 of the old epoch. but when A's increment goes to B through repair, or is 
reconciled in read with B, the result is going to be 1. if C's deletion goes to 
B, B is going to be brought more up to date to a value of 0 of new epoch. 



the above analysis does not go through all possible scenarios, but to give a 
definitive proof of the conjecture that all nodes return *the* ordering given 
by client , in case of quorum read/write, I need to think more. 

but as I stated in my last comment, at least we can be sure that the new 
approach guarantees *some* common agreement eventually. it would be nice if we 
achieve *the* agreement in case of quorum, but that's not my  main argument

 one way to make counter delete work better
 --

 Key: CASSANDRA-2774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2774
 Project: Cassandra
  Issue Type: New Feature
Affects Versions: 0.8.0
Reporter: Yang Yang
 Attachments: counter_delete.diff


 current Counter does not work with delete, because different merging order of 
 sstables would produces different result, for example:
 add 1
 delete 
 add 2
 if the merging happens by 1-2, (1,2)--3  order, the result we see will be 2
 if merging is: 1--3, (1,3)--2, the result will be 3.
 the issue is that delete now can not separate out previous adds and adds 
 later than the delete. supposedly a delete is to create a completely new 
 incarnation of the counter, or a new lifetime, or epoch. the new approach 
 utilizes the concept of epoch number, so that each delete bumps up the 
 epoch number. since each write is replicated (replicate on write is almost 
 always enabled in practice, if this is a concern, we could further force ROW 
 in case of delete ), so the epoch number is global to a replica set
 changes are attached, existing tests pass fine, some tests are modified since 
 the semantic is changed a bit. some cql tests do not pass in the original 
 0.8.0 source, that's not the fault of this change.
 see details at 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201106.mbox/%3cbanlktikqcglsnwtt-9hvqpseoo7sf58...@mail.gmail.com%3E
 the goal of this is to make delete work ( at least with consistent behavior, 
 yes in case of long network partition, the behavior is not ideal, but it's 
 consistent with the definition of logical clock), so that we could have 
 expiring Counters

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2369) support replication decisions per-key

2011-06-15 Thread Vijay (JIRA)

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

Vijay commented on CASSANDRA-2369:
--

Hi Jonathan, Yeah, i started coding the repair case (1 to 1 repair, something 
similar to what you mentioned above) quickly realized the complexity it buys... 
than any good... Max replication can help with the boot strap and repair (but 
wont be efficient at per sure)...

 support replication decisions per-key
 -

 Key: CASSANDRA-2369
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2369
 Project: Cassandra
  Issue Type: New Feature
Reporter: Jonathan Ellis
Assignee: Vijay
Priority: Minor
 Fix For: 1.0


 Currently the replicationstrategy gets a token and a keyspace with which to 
 decide how to place replicas.  for per-row replication this is insufficient 
 because tokenization is lossy (CASSANDRA-1034).

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2614) create Column and CounterColumn in the same column family

2011-06-15 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis commented on CASSANDRA-2614:
---

Not worth breaking Thrift compatibility means not in 1.0 either.

 create Column and CounterColumn in the same column family
 -

 Key: CASSANDRA-2614
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2614
 Project: Cassandra
  Issue Type: New Feature
  Components: Core
Reporter: Dave Rav
Assignee: Sylvain Lebresne
Priority: Minor
 Fix For: 0.8.1


 create Column and CounterColumn in the same column family

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2405) should expose 'time since last successful repair' for easier aes monitoring

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne commented on CASSANDRA-2405:
-

Hum, the thing is that there will be many repair sessions for a given set of 
KS/CF and range. So you need one of the key (either row key or supercolumn 
name) to be the session_id (or anything that is unique to a session). If you 
use a row for each KS/CF pair and one super column for each session, you will 
have one super column for each repair made in a session (or kind of, you will 
indeed have multiple merkle tree for instance, one for each replica, but we can 
easily prefix the column with the replica name if need be). 

 should expose 'time since last successful repair' for easier aes monitoring
 ---

 Key: CASSANDRA-2405
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2405
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Peter Schuller
Assignee: Pavel Yaskevich
Priority: Minor
 Fix For: 0.8.1

 Attachments: CASSANDRA-2405-v2.patch, CASSANDRA-2405-v3.patch, 
 CASSANDRA-2405.patch


 The practical implementation issues of actually ensuring repair runs is 
 somewhat of an undocumented/untreated issue.
 One hopefully low hanging fruit would be to at least expose the time since 
 last successful repair for a particular column family, to make it easier to 
 write a correct script to monitor for lack of repair in a non-buggy fashion.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2369) support replication decisions per-key

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne commented on CASSANDRA-2369:
-

Let me also add that if you allow that, load balancing will be a bitch. One may 
argue it should be the problem of whomever wants to use this, but I'm not sure 
that providing tools that make foot-shooting too easy is such a good idea.

 support replication decisions per-key
 -

 Key: CASSANDRA-2369
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2369
 Project: Cassandra
  Issue Type: New Feature
Reporter: Jonathan Ellis
Assignee: Vijay
Priority: Minor
 Fix For: 1.0


 Currently the replicationstrategy gets a token and a keyspace with which to 
 decide how to place replicas.  for per-row replication this is insufficient 
 because tokenization is lossy (CASSANDRA-1034).

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2774) one way to make counter delete work better

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne commented on CASSANDRA-2774:
-

bq. but as I stated in my last comment, at least we can be sure that the new 
approach guarantees some common agreement eventually. 

It is already the case with the current implementation. Once compaction has 
compacted the deletes, all node will reach common agreement.

bq. it would be nice if we achieve the agreement in case of quorum, but that's 
not my main argument

My main argument is that this patch slightly change the behavior here and there 
but I don't think it adds any tangible new guarantee that people can work with. 
On the other side, it adds a fairly heavy performance hit by adding a read 
before write on every replica (and though you won't necessary do a read for 
every write, you will do that read more often than not as soon as the set of 
counters you're incrementing is not small enough).

 one way to make counter delete work better
 --

 Key: CASSANDRA-2774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2774
 Project: Cassandra
  Issue Type: New Feature
Affects Versions: 0.8.0
Reporter: Yang Yang
 Attachments: counter_delete.diff


 current Counter does not work with delete, because different merging order of 
 sstables would produces different result, for example:
 add 1
 delete 
 add 2
 if the merging happens by 1-2, (1,2)--3  order, the result we see will be 2
 if merging is: 1--3, (1,3)--2, the result will be 3.
 the issue is that delete now can not separate out previous adds and adds 
 later than the delete. supposedly a delete is to create a completely new 
 incarnation of the counter, or a new lifetime, or epoch. the new approach 
 utilizes the concept of epoch number, so that each delete bumps up the 
 epoch number. since each write is replicated (replicate on write is almost 
 always enabled in practice, if this is a concern, we could further force ROW 
 in case of delete ), so the epoch number is global to a replica set
 changes are attached, existing tests pass fine, some tests are modified since 
 the semantic is changed a bit. some cql tests do not pass in the original 
 0.8.0 source, that's not the fault of this change.
 see details at 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201106.mbox/%3cbanlktikqcglsnwtt-9hvqpseoo7sf58...@mail.gmail.com%3E
 the goal of this is to make delete work ( at least with consistent behavior, 
 yes in case of long network partition, the behavior is not ideal, but it's 
 consistent with the definition of logical clock), so that we could have 
 expiring Counters

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




svn commit: r1136133 - /cassandra/branches/cassandra-0.8/test/system/test_cql.py

2011-06-15 Thread jbellis
Author: jbellis
Date: Wed Jun 15 17:45:00 2011
New Revision: 1136133

URL: http://svn.apache.org/viewvc?rev=1136133view=rev
Log:
r/m unused import

Modified:
cassandra/branches/cassandra-0.8/test/system/test_cql.py

Modified: cassandra/branches/cassandra-0.8/test/system/test_cql.py
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/test/system/test_cql.py?rev=1136133r1=1136132r2=1136133view=diff
==
--- cassandra/branches/cassandra-0.8/test/system/test_cql.py (original)
+++ cassandra/branches/cassandra-0.8/test/system/test_cql.py Wed Jun 15 
17:45:00 2011
@@ -24,7 +24,6 @@ import sys, uuid, time
 sys.path.append(join(abspath(dirname(__file__)), '../../drivers/py'))
 
 import cql
-from cql.connection import Connection
 from __init__ import ThriftTester
 from __init__ import thrift_client # TODO: temporary
 




[Cassandra Wiki] Trivial Update of ThirdPartySupport by JoseAvila

2011-06-15 Thread Apache Wiki
Dear Wiki user,

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

The ThirdPartySupport page has been changed by JoseAvila:
http://wiki.apache.org/cassandra/ThirdPartySupport?action=diffrev1=8rev2=9

Comment:
Updating company description

  Companies providing support for Apache Cassandra are not endorsed by the 
Apache Software Foundation, although some of these companies employ 
[[Committers]] to the Apache project.
  
  {{http://www.datastax.com/sites/all/themes/datastax20110201/logo.png}} 
[[http://datastax.com|Datastax]] provides professional Cassandra support and 
services.
+ 
+ {{http://www.onzra.com/images/Small-Logo.gif}} [[http://www.ONZRA.com|ONZRA]] 
has been around for over 10 years and specializes on enterprise grade 
architecture, development and security consulting services utilizing many large 
scale database technologies such as Cassandra, Oracle, AlegroGraph, and much 
more.
  
  {{http://acunu.com/images/logo.png}} [[http://www.acunu.com|Acunu]] provides 
software products for Cassandra applications, as well as Cassandra support and 
professional services.  
  
@@ -10, +12 @@

  
  MongoDB, and Other databases like Riak, Redis, Membase, Tokyocabinet, etc 
[[http://bigdata.impetus.com/# | More info about BigData @Impetus]]
  
- {{http://www.onzra.com/images/Small-Logo.gif}} [[http://www.ONZRA.com|ONZRA]] 
provides enterprise grade Cassandra architecture and development services.
  
  
  


[Cassandra Wiki] Trivial Update of ThirdPartySupport by JoseAvila

2011-06-15 Thread Apache Wiki
Dear Wiki user,

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

The ThirdPartySupport page has been changed by JoseAvila:
http://wiki.apache.org/cassandra/ThirdPartySupport?action=diffrev1=9rev2=10

  
  {{http://www.datastax.com/sites/all/themes/datastax20110201/logo.png}} 
[[http://datastax.com|Datastax]] provides professional Cassandra support and 
services.
  
- {{http://www.onzra.com/images/Small-Logo.gif}} [[http://www.ONZRA.com|ONZRA]] 
has been around for over 10 years and specializes on enterprise grade 
architecture, development and security consulting services utilizing many large 
scale database technologies such as Cassandra, Oracle, AlegroGraph, and much 
more.
+ {{http://www.onzra.com/images/Small-Logo.gif}} [[http://www.ONZRA.com|ONZRA]] 
has been around for over 10 years and specializes on enterprise grade 
architecture, development and security consulting services utilizing many large 
scale database technologies such as Cassandra, Oracle, Alegro Graph, and much 
more.
  
  {{http://acunu.com/images/logo.png}} [[http://www.acunu.com|Acunu]] provides 
software products for Cassandra applications, as well as Cassandra support and 
professional services.  
  


[jira] [Commented] (CASSANDRA-2769) Cannot Create Duplicate Compaction Marker

2011-06-15 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis commented on CASSANDRA-2769:
---

the 0.8 patch looks good.  (i did notice that some of the other 
post-markCompactiong code checks for null or empty, others just check for null 
-- one of these is probably wrong.)

 Cannot Create Duplicate Compaction Marker
 -

 Key: CASSANDRA-2769
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2769
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 0.8.0
Reporter: Benjamin Coverston
Assignee: Sylvain Lebresne
 Fix For: 0.8.1, 1.0

 Attachments: 
 0001-0.8.0-Remove-useless-unmarkCompacting-in-doCleanup.patch, 
 0001-Do-compact-only-smallerSSTables.patch, 
 0002-Only-compact-what-has-been-succesfully-marked-as-com.patch


 Concurrent compaction can trigger the following exception when two threads 
 compact the same sstable. DataTracker attempts to prevent this but apparently 
 not successfully.
 java.io.IOError: java.io.IOException: Unable to create compaction marker
   at 
 org.apache.cassandra.io.sstable.SSTableReader.markCompacted(SSTableReader.java:638)
   at 
 org.apache.cassandra.db.DataTracker.removeOldSSTablesSize(DataTracker.java:321)
   at org.apache.cassandra.db.DataTracker.replace(DataTracker.java:294)
   at 
 org.apache.cassandra.db.DataTracker.replaceCompactedSSTables(DataTracker.java:255)
   at 
 org.apache.cassandra.db.ColumnFamilyStore.replaceCompactedSSTables(ColumnFamilyStore.java:932)
   at 
 org.apache.cassandra.db.compaction.CompactionTask.execute(CompactionTask.java:173)
   at 
 org.apache.cassandra.db.compaction.CompactionManager$1.call(CompactionManager.java:119)
   at 
 org.apache.cassandra.db.compaction.CompactionManager$1.call(CompactionManager.java:102)
   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:680)
 Caused by: java.io.IOException: Unable to create compaction marker
   at 
 org.apache.cassandra.io.sstable.SSTableReader.markCompacted(SSTableReader.java:634)
   ... 12 more

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




svn commit: r1136135 - in /cassandra/branches/cassandra-0.8: CHANGES.txt src/java/org/apache/cassandra/db/compaction/CompactionManager.java

2011-06-15 Thread slebresne
Author: slebresne
Date: Wed Jun 15 17:55:31 2011
New Revision: 1136135

URL: http://svn.apache.org/viewvc?rev=1136135view=rev
Log:
Avoids unmarking compacting sstable prematurely during cleanup
patch by slebresne; reviewed by jbellis for CASSANDRA-2769

Modified:
cassandra/branches/cassandra-0.8/CHANGES.txt

cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/compaction/CompactionManager.java

Modified: cassandra/branches/cassandra-0.8/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/CHANGES.txt?rev=1136135r1=1136134r2=1136135view=diff
==
--- cassandra/branches/cassandra-0.8/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.8/CHANGES.txt Wed Jun 15 17:55:31 2011
@@ -57,6 +57,7 @@
(CASSANDRA-2767)
  * use threadsafe collections for StreamInSession (CASSANDRA-2766)
  * avoid infinite loop when creating merkle tree (CASSANDRA-2758)
+ * avoids unmarking compacting sstable prematurely in cleanup (CASSANDRA-2769)
 
 
 0.8.0-final

Modified: 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/compaction/CompactionManager.java?rev=1136135r1=1136134r2=1136135view=diff
==
--- 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
 (original)
+++ 
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
 Wed Jun 15 17:55:31 2011
@@ -845,56 +845,50 @@ public class CompactionManager implement
   logger.debug(Expected bloom filter size :  + 
expectedBloomFilterSize);
 
 SSTableWriter writer = null;
+
+logger.info(Cleaning up  + sstable);
+// Calculate the expected compacted filesize
+long expectedRangeFileSize = 
cfs.getExpectedCompactedFileSize(Arrays.asList(sstable)) / 2;
+String compactionFileLocation = 
table.getDataFileLocation(expectedRangeFileSize);
+if (compactionFileLocation == null)
+throw new IOException(disk full);
+
+SSTableScanner scanner = 
sstable.getDirectScanner(CompactionIterator.FILE_BUFFER_SIZE);
+SortedSetByteBuffer indexedColumns = cfs.getIndexedColumns();
+CleanupInfo ci = new CleanupInfo(sstable, scanner);
+executor.beginCompaction(ci);
 try
 {
-logger.info(Cleaning up  + sstable);
-// Calculate the expected compacted filesize
-long expectedRangeFileSize = 
cfs.getExpectedCompactedFileSize(Arrays.asList(sstable)) / 2;
-String compactionFileLocation = 
table.getDataFileLocation(expectedRangeFileSize);
-if (compactionFileLocation == null)
-throw new IOException(disk full);
-
-SSTableScanner scanner = 
sstable.getDirectScanner(CompactionIterator.FILE_BUFFER_SIZE);
-SortedSetByteBuffer indexedColumns = cfs.getIndexedColumns();
-CleanupInfo ci = new CleanupInfo(sstable, scanner);
-executor.beginCompaction(ci);
-try
+while (scanner.hasNext())
 {
-while (scanner.hasNext())
+SSTableIdentityIterator row = (SSTableIdentityIterator) 
scanner.next();
+if (Range.isTokenInRanges(row.getKey().token, ranges))
 {
-SSTableIdentityIterator row = 
(SSTableIdentityIterator) scanner.next();
-if (Range.isTokenInRanges(row.getKey().token, ranges))
-{
-writer = maybeCreateWriter(cfs, 
compactionFileLocation, expectedBloomFilterSize, writer, 
Collections.singletonList(sstable));
-writer.append(controller.getCompactedRow(row));
-totalkeysWritten++;
-}
-else
+writer = maybeCreateWriter(cfs, 
compactionFileLocation, expectedBloomFilterSize, writer, 
Collections.singletonList(sstable));
+writer.append(controller.getCompactedRow(row));
+totalkeysWritten++;
+}
+else
+{
+cfs.invalidateCachedRow(row.getKey());
+if (!indexedColumns.isEmpty() || isCommutative)
 {
-cfs.invalidateCachedRow(row.getKey());
-if (!indexedColumns.isEmpty() || isCommutative)
+while (row.hasNext())
 {
-while 

[jira] [Commented] (CASSANDRA-2769) Cannot Create Duplicate Compaction Marker

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne commented on CASSANDRA-2769:
-

Alright, I've committed the 0.8 patch. I'll have a look at the checks.

 Cannot Create Duplicate Compaction Marker
 -

 Key: CASSANDRA-2769
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2769
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 0.8.0
Reporter: Benjamin Coverston
Assignee: Sylvain Lebresne
 Fix For: 0.8.1, 1.0

 Attachments: 
 0001-0.8.0-Remove-useless-unmarkCompacting-in-doCleanup.patch, 
 0001-Do-compact-only-smallerSSTables.patch, 
 0002-Only-compact-what-has-been-succesfully-marked-as-com.patch


 Concurrent compaction can trigger the following exception when two threads 
 compact the same sstable. DataTracker attempts to prevent this but apparently 
 not successfully.
 java.io.IOError: java.io.IOException: Unable to create compaction marker
   at 
 org.apache.cassandra.io.sstable.SSTableReader.markCompacted(SSTableReader.java:638)
   at 
 org.apache.cassandra.db.DataTracker.removeOldSSTablesSize(DataTracker.java:321)
   at org.apache.cassandra.db.DataTracker.replace(DataTracker.java:294)
   at 
 org.apache.cassandra.db.DataTracker.replaceCompactedSSTables(DataTracker.java:255)
   at 
 org.apache.cassandra.db.ColumnFamilyStore.replaceCompactedSSTables(ColumnFamilyStore.java:932)
   at 
 org.apache.cassandra.db.compaction.CompactionTask.execute(CompactionTask.java:173)
   at 
 org.apache.cassandra.db.compaction.CompactionManager$1.call(CompactionManager.java:119)
   at 
 org.apache.cassandra.db.compaction.CompactionManager$1.call(CompactionManager.java:102)
   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:680)
 Caused by: java.io.IOException: Unable to create compaction marker
   at 
 org.apache.cassandra.io.sstable.SSTableReader.markCompacted(SSTableReader.java:634)
   ... 12 more

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2775) ant build-test is failing with 0.8.0

2011-06-15 Thread Vivek Mishra (JIRA)

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

Vivek Mishra commented on CASSANDRA-2775:
-

Indirectly yes. But changes which i am discussing are just to make build-test 
working with current cassandra release(without releasing driver seperatly). 
Same set of change is required for generate-eclipse-files 

 ant build-test is failing with 0.8.0
 

 Key: CASSANDRA-2775
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2775
 Project: Cassandra
  Issue Type: Bug
  Components: Tests
Affects Versions: 0.8.0
Reporter: Vivek Mishra
Assignee: Vivek Mishra
Priority: Minor
 Attachments: build.xml


 Steps to reproduce:
 1) ant clean build
 2) ant build-test
 It is failing for :
 build-test:
 [javac] 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\build.xml:975: 
 warning: 'includeantruntime' was not set, defaulting to 
 build.sysclasspath=last; set
 [javac] Compiling 124 source files to 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\build\test\classes
 [javac] 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\drivers\java\test\org\apache\cassandra\cql\jdbc\PreparedStatementTest.java:357:
  cannot find symbol
 [javac] symbol  : class CassandraPreparedStatement
 [javac] location: class 
 org.apache.cassandra.cql.jdbc.PreparedStatementTest
 [javac] CassandraPreparedStatement stmt = 
 (CassandraPreparedStatement)con.prepareStatement(q);
 [javac] ^
 [javac] 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\drivers\java\test\org\apache\cassandra\cql\jdbc\PreparedStatementTest.java:357:
  cannot find symbol
 [javac] symbol  : class CassandraPreparedStatement
 [javac] location: class 
 org.apache.cassandra.cql.jdbc.PreparedStatementTest
 [javac] CassandraPreparedStatement stmt = 
 (CassandraPreparedStatement)con.prepareStatement(q);
 [javac]^
 [javac] 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\drivers\java\test\org\apache\cassandra\cql\jdbc\PreparedStatementTest.java:365:
  cannot find symbol
 [javac] symbol  : class CassandraPreparedStatement
 [javac] location: class 
 org.apache.cassandra.cql.jdbc.PreparedStatementTest
 [javac] stmt = 
 (CassandraPreparedStatement)con.prepareStatement(q);
 [javac] ^
 [javac] 
 C:\vivek\apache-cassandra-0.8.0-src\apache-cassandra-0.8.0-src\drivers\java\test\org\apache\cassandra\cql\jdbc\PreparedStatementTest.java:377:
  cannot find symbol
 [javac] symbol  : class CassandraPreparedStatement
 [javac] location: class 
 org.apache.cassandra.cql.jdbc.PreparedStatementTest
 [javac] stmt = 
 (CassandraPreparedStatement)con.prepareStatement(q);
 [javac] ^
 [javac] Note: Some input files use or override a deprecated API.
 [javac] Note: Recompile with -Xlint:deprecation for details.
 [javac] Note: Some input files use unchecked or unsafe operations.
 [javac] Note: Recompile with -Xlint:unchecked for details.
 [javac] 4 errors

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2477) CQL support for describing keyspaces / column familes

2011-06-15 Thread Vivek Mishra (JIRA)

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

Vivek Mishra commented on CASSANDRA-2477:
-

Absolutly.. make more sense.

 CQL support for describing keyspaces / column familes
 -

 Key: CASSANDRA-2477
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2477
 Project: Cassandra
  Issue Type: Sub-task
  Components: API, Core
Reporter: Eric Evans
  Labels: cql
 Fix For: 0.8.1

 Attachments: 2477-virtual-cfs-false-start.txt




--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2629) Move key reads into SSTableIterators

2011-06-15 Thread Stu Hood (JIRA)

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

Stu Hood updated CASSANDRA-2629:


Attachment: (was: 
0001-CASSANDRA-2629-Move-key-and-row-size-reading-into-the-.txt)

 Move key reads into SSTableIterators
 

 Key: CASSANDRA-2629
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2629
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Stu Hood
Assignee: Stu Hood
 Fix For: 1.0


 All SSTableIterators have a constructor that assumes the key and length has 
 already been parsed. Moving this logic inside the iterator will improve 
 symmetry and allow the file format to change without iterator consumers 
 knowing it.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2629) Move key reads into SSTableIterators

2011-06-15 Thread Stu Hood (JIRA)

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

Stu Hood updated CASSANDRA-2629:


Attachment: 0002-CASSANDRA-2629-Remove-the-retry-with-key-from-index-st.txt
0001-CASSANDRA-2629-Move-key-and-row-size-reading-into-the-.txt

bq. move long rowSizeFromIndex = nextRowPositionFromIndex - 
currentRowPositionFromIndex; into the IF statement where it is needed
Done.

bq. in your log warnings, specifying the actual sstable will help with debugging
Scrub starts with a log entry to indicate which file is being scrubbed... this 
should be sufficient unless someone is running without INFO.

bq. remove this.key = key; for both constructors
Good catch... that line was a noop in the second constructor: we don't know the 
key until init() is called, so we can't make it final.

bq. *init() method should be more descriptive
Was supposed to say Reads the key and row length from the head of the row.: 
fixed.

bq. remove @param key comment from IFilter.java and SSTableSliceIterator.java
Fixed.

bq. safer to updateCache(iter) AFTER appending to writer
I think the whole thing is racey, because the entire rebuilding process can 
fail, which might mean that the cache was updated when it shouldn't have been.



I didn't make the close() change: we talked about close a little bit offline, I 
think we reached the consensus that having two methods that you must always 
call won't be an improvement over close. I also didn't add back the scrub 
retry: I agree that we can do better there, but I think it will be easier to 
improve once we have the checksumming from 674: at the moment the reasons for 
doing certain things with the API would not be clear at all.

Thanks for the review!

 Move key reads into SSTableIterators
 

 Key: CASSANDRA-2629
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2629
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Stu Hood
Assignee: Stu Hood
 Fix For: 1.0

 Attachments: 
 0001-CASSANDRA-2629-Move-key-and-row-size-reading-into-the-.txt, 
 0002-CASSANDRA-2629-Remove-the-retry-with-key-from-index-st.txt


 All SSTableIterators have a constructor that assumes the key and length has 
 already been parsed. Moving this logic inside the iterator will improve 
 symmetry and allow the file format to change without iterator consumers 
 knowing it.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2405) should expose 'time since last successful repair' for easier aes monitoring

2011-06-15 Thread Pavel Yaskevich (JIRA)

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

Pavel Yaskevich commented on CASSANDRA-2405:


I suggest to create 2 CFs: one as we have right now so users can easily trigger 
time since last successful repair and CF to hold detailed information about 
each repair session with the following structure: sessionId (key), range (super 
column), subcolumns: started_at (long), completed_at (long), failed (0 or 1) 

 should expose 'time since last successful repair' for easier aes monitoring
 ---

 Key: CASSANDRA-2405
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2405
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Peter Schuller
Assignee: Pavel Yaskevich
Priority: Minor
 Fix For: 0.8.1

 Attachments: CASSANDRA-2405-v2.patch, CASSANDRA-2405-v3.patch, 
 CASSANDRA-2405.patch


 The practical implementation issues of actually ensuring repair runs is 
 somewhat of an undocumented/untreated issue.
 One hopefully low hanging fruit would be to at least expose the time since 
 last successful repair for a particular column family, to make it easier to 
 write a correct script to monitor for lack of repair in a non-buggy fashion.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2477) CQL support for describing keyspaces / column familes

2011-06-15 Thread Vivek Mishra (JIRA)

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

Vivek Mishra commented on CASSANDRA-2477:
-

From KsMetadata, something which i can see to get CFMetadata, strategy_class 
and strategy options... Count on number of ColumnFamilies, fetch specific 
CfMetadata(via cfName)

Similarly from CFMetadata, we could fetch

CfName, Default validator, compare type, subcolumn comparator, Keyspace name 
and many more..

Is this what we are planning for Describe Ks or Describe cf?



 CQL support for describing keyspaces / column familes
 -

 Key: CASSANDRA-2477
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2477
 Project: Cassandra
  Issue Type: Sub-task
  Components: API, Core
Reporter: Eric Evans
  Labels: cql
 Fix For: 0.8.1

 Attachments: 2477-virtual-cfs-false-start.txt




--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2405) should expose 'time since last successful repair' for easier aes monitoring

2011-06-15 Thread Sylvain Lebresne (JIRA)

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

Sylvain Lebresne commented on CASSANDRA-2405:
-

Nothing against that, though if we're going to have only a handful of rows in 
each it could be more efficient/cleaner to use the DynamicCompositeType instead 
of the creating two different CFs. Though if you absolutely prefer 2 CFs I 
won't fight against it.

 should expose 'time since last successful repair' for easier aes monitoring
 ---

 Key: CASSANDRA-2405
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2405
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Peter Schuller
Assignee: Pavel Yaskevich
Priority: Minor
 Fix For: 0.8.1

 Attachments: CASSANDRA-2405-v2.patch, CASSANDRA-2405-v3.patch, 
 CASSANDRA-2405.patch


 The practical implementation issues of actually ensuring repair runs is 
 somewhat of an undocumented/untreated issue.
 One hopefully low hanging fruit would be to at least expose the time since 
 last successful repair for a particular column family, to make it easier to 
 write a correct script to monitor for lack of repair in a non-buggy fashion.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2761) JDBC driver does not build

2011-06-15 Thread Rick Shaw (JIRA)

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

Rick Shaw commented on CASSANDRA-2761:
--

I put together a patch that covered the obvious but I had strange problems in 
test. So I dug deeper and found a ton (over 50 I think) additional transitive 
dependencies that I had missed... (silly me) 

I can try an get them all in but I think we should seriously rethink that 
strategy for now. With this many dependancies they should probably be put in 
their own jar(s). It would really make the driver jar have to keep up with 
detailed dependency changes in the server code base. Miss one and it's messy 
and the errors are non-obvious.

I was a big whiner about not carrying around the whole server just for client 
access, but until it is re-factored, I can now appreciate the horror that will 
commence if we piece-meal drag over classes from the server into the JAR.

So fo now I suggest we keep the jar the way it is with just the 
o.a.c.cql.jdbc.* classes.

 JDBC driver does not build
 --

 Key: CASSANDRA-2761
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2761
 Project: Cassandra
  Issue Type: Bug
  Components: API
Affects Versions: 1.0
Reporter: Jonathan Ellis
Assignee: Rick Shaw
 Fix For: 1.0

 Attachments: jdbc-driver-build-v1.txt


 Need a way to build (and run tests for) the Java driver.
 Also: still some vestigal references to drivers/ in trunk build.xml.
 Should we remove drivers/ from the 0.8 branch as well?

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Reopened] (CASSANDRA-2681) Upgrade ConcurrentLinkedHashMap (v1.2)

2011-06-15 Thread Chris Burroughs (JIRA)

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

Chris Burroughs reopened CASSANDRA-2681:



Need to update in build.xml for the generated pom as well.

 Upgrade ConcurrentLinkedHashMap (v1.2)
 --

 Key: CASSANDRA-2681
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2681
 Project: Cassandra
  Issue Type: Task
  Components: Core
Reporter: Ben Manes
Assignee: Jonathan Ellis
Priority: Minor
 Fix For: 1.0


 This release has numerous performance improvements. See the change log for 
 details.
 It also includes a few useful features that may be of interest,
 - Snapshot iteration in order of hotness (CASSANDRA-1966)
 - Optionally defer LRU maintenance penalty to a background executor (instead 
 of amortized on caller threads) (Note that this setting is not advised if 
 write storms are not rate limited, since it defers eviction until the 
 executor runs.)
 http://code.google.com/p/concurrentlinkedhashmap/
 http://code.google.com/p/concurrentlinkedhashmap/wiki/ExampleUsage
 Verified compatibility with NonBlockingHashMap. Cassandra may want to 
 consider adding the java_util_concurrent_chm.jar to the bootclasspath to swap 
 all CHM usages with NBHM (CLHM is a decorator on top of CHM).
 http://high-scale-lib.cvs.sourceforge.net/viewvc/high-scale-lib/high-scale-lib/README

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2477) CQL support for describing keyspaces / column familes

2011-06-15 Thread Rick Shaw (JIRA)

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

Rick Shaw commented on CASSANDRA-2477:
--

How about a custom CF for each (KS/CF); that fully defines the schema entries 
for each piece of information to be returned about each KS and each CF.

Then DESCRIBE returns a CQLResult containing normal row content. The syntax of 
the DESCRIBE drives a flat set of rows returned to the caller. The CQL 
QueryProcessor returns the contents of the CQLRow items for information it 
already has access to in the internal metadata tables.

 CQL support for describing keyspaces / column familes
 -

 Key: CASSANDRA-2477
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2477
 Project: Cassandra
  Issue Type: Sub-task
  Components: API, Core
Reporter: Eric Evans
  Labels: cql
 Fix For: 0.8.1

 Attachments: 2477-virtual-cfs-false-start.txt




--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2774) one way to make counter delete work better

2011-06-15 Thread Yang Yang (JIRA)

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

Yang Yang commented on CASSANDRA-2774:
--

---Once compaction has compacted the deletes, all node will reach common 
agreement. 

we probably need to look at this more closely. I was going to use the example 
of a node always changing its report due to the different merging order in each 
read,
but since you pointed out that we should allow all compaction to finish before 
making the judgement, let's look at another ill-case:

the way I contrive the following case is very similar to the often-mentioned 
compaction ill-case, and we move that effect onto network messages, because
changing the order of merging sstables in compaction is very similar to 
changing the order of message deliveries.

let's say we have 4 nodes, A B C D. all the traffic we observe is, with 
increasing timestamp():

A leader  add 1  ts=100
B leader delete  ts=200
C leader  add 2  ts=300

now the updates so far start to replicate to D: assume that D sees the 
following order: A.(add 1), C.(add 2), B.(delete), after these, D's state is:
[A:1 C:2, last_delete=200, timestamp=300]  

now let's all the traffic between A,B,C go through, and they fully resolve 
(receiving pair-wise messages and etc), so A B C all come to state: [A:nil  
C:2,  last_delete=200  timestamp=300]

now A's state and D's state are different, let's say we let A repair D,  A's 
A-shard has a lower clock, so D will win; if we let D repair A, A's A-shard is 
isDelta(), so it trumps D. as  a result we never reach agreement between A and 
D, even though traffic is allowed to flow freely.

I just started looking inside the CounterContext logic, so I could very well be 
wrong. Thanks for your time looking through this.



as to performance, I don't think it will be a significant increase: 1) most 
application use cases will increment the same counter for many times, while it 
is in memtable. it's hard to imagine that most counters will be incremented 
only once before being dumped out to sstable. only the first increment in 
memtable for each counter will suffer a read into disk, if on average each 
counter is incremented 1000 times before being flushed, the disk read cost is 
amortized over 1000 increments; 2) even if  we do the disk read, any realistic 
counter setup already needs ROW and CLONE, so a disk read is needed anyway 
before the client is acked. here we do an extra disk read, but when we do the 
regular disk read for CounterMutation.makeReplicationMutation()  , the file 
blocks are already brought into cache by the new extra read, so it saves time, 
and total disk access time remains roughly the same.


 one way to make counter delete work better
 --

 Key: CASSANDRA-2774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2774
 Project: Cassandra
  Issue Type: New Feature
Affects Versions: 0.8.0
Reporter: Yang Yang
 Attachments: counter_delete.diff


 current Counter does not work with delete, because different merging order of 
 sstables would produces different result, for example:
 add 1
 delete 
 add 2
 if the merging happens by 1-2, (1,2)--3  order, the result we see will be 2
 if merging is: 1--3, (1,3)--2, the result will be 3.
 the issue is that delete now can not separate out previous adds and adds 
 later than the delete. supposedly a delete is to create a completely new 
 incarnation of the counter, or a new lifetime, or epoch. the new approach 
 utilizes the concept of epoch number, so that each delete bumps up the 
 epoch number. since each write is replicated (replicate on write is almost 
 always enabled in practice, if this is a concern, we could further force ROW 
 in case of delete ), so the epoch number is global to a replica set
 changes are attached, existing tests pass fine, some tests are modified since 
 the semantic is changed a bit. some cql tests do not pass in the original 
 0.8.0 source, that's not the fault of this change.
 see details at 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201106.mbox/%3cbanlktikqcglsnwtt-9hvqpseoo7sf58...@mail.gmail.com%3E
 the goal of this is to make delete work ( at least with consistent behavior, 
 yes in case of long network partition, the behavior is not ideal, but it's 
 consistent with the definition of logical clock), so that we could have 
 expiring Counters

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2774) one way to make counter delete work better

2011-06-15 Thread Yang Yang (JIRA)

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

Yang Yang commented on CASSANDRA-2774:
--

one further thing:
even if the current implementation reaches a common agreement, it can be some 
very arbitrary state:yes everyone uses the same rules so if messages are all 
played out, there is got to be the same final winner. but the winner wins by 
some very *arbitrary* rules---you can't reason about the final state. in the 
new implementation, the end result is a serializable state, meaning that 
there exists a sequence of a subset of incoming messages, so that if they are 
played out on a node in serial, we would achieve the final result, then the 
final result can be explained to users to be due to such a sequence of 
messages, after message loss and re-ordering.  I don't think the current 
implementation has this property



 one way to make counter delete work better
 --

 Key: CASSANDRA-2774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2774
 Project: Cassandra
  Issue Type: New Feature
Affects Versions: 0.8.0
Reporter: Yang Yang
 Attachments: counter_delete.diff


 current Counter does not work with delete, because different merging order of 
 sstables would produces different result, for example:
 add 1
 delete 
 add 2
 if the merging happens by 1-2, (1,2)--3  order, the result we see will be 2
 if merging is: 1--3, (1,3)--2, the result will be 3.
 the issue is that delete now can not separate out previous adds and adds 
 later than the delete. supposedly a delete is to create a completely new 
 incarnation of the counter, or a new lifetime, or epoch. the new approach 
 utilizes the concept of epoch number, so that each delete bumps up the 
 epoch number. since each write is replicated (replicate on write is almost 
 always enabled in practice, if this is a concern, we could further force ROW 
 in case of delete ), so the epoch number is global to a replica set
 changes are attached, existing tests pass fine, some tests are modified since 
 the semantic is changed a bit. some cql tests do not pass in the original 
 0.8.0 source, that's not the fault of this change.
 see details at 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201106.mbox/%3cbanlktikqcglsnwtt-9hvqpseoo7sf58...@mail.gmail.com%3E
 the goal of this is to make delete work ( at least with consistent behavior, 
 yes in case of long network partition, the behavior is not ideal, but it's 
 consistent with the definition of logical clock), so that we could have 
 expiring Counters

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Created] (CASSANDRA-2776) add ability to return endpoints to nodetool

2011-06-15 Thread Patricio Echague (JIRA)
add ability to return  endpoints to nodetool
--

 Key: CASSANDRA-2776
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2776
 Project: Cassandra
  Issue Type: Improvement
  Components: Tools
Reporter: Patricio Echague
Assignee: Patricio Echague
Priority: Minor
 Fix For: 0.8.1


- add nodetool endpoints 

- take care of this FIXME:
  {code} 
public ListInetAddress getEndpoints(String keyspace, String key)
{
// FIXME: string key
return ssProxy.getNaturalEndpoints(keyspace, key.getBytes(UTF_8));
}
  {code} 



--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2776) add ability to return endpoints to nodetool

2011-06-15 Thread Patricio Echague (JIRA)

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

Patricio Echague updated CASSANDRA-2776:


Description: 
- add nodetool endpoints 

- take care of this FIXME:
  {code} 
public ListInetAddress getEndpoints(String keyspace, String key)
{
// FIXME: string key
return ssProxy.getNaturalEndpoints(keyspace, key.getBytes(UTF_8));
}
  {code} 

NOTE: Use the key type info we have now, to decode the key-as-string.


  was:
- add nodetool endpoints 

- take care of this FIXME:
  {code} 
public ListInetAddress getEndpoints(String keyspace, String key)
{
// FIXME: string key
return ssProxy.getNaturalEndpoints(keyspace, key.getBytes(UTF_8));
}
  {code} 




 add ability to return  endpoints to nodetool
 --

 Key: CASSANDRA-2776
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2776
 Project: Cassandra
  Issue Type: Improvement
  Components: Tools
Reporter: Patricio Echague
Assignee: Patricio Echague
Priority: Minor
  Labels: nodetool, tools
 Fix For: 0.8.1


 - add nodetool endpoints 
 - take care of this FIXME:
   {code} 
 public ListInetAddress getEndpoints(String keyspace, String key)
 {
 // FIXME: string key
 return ssProxy.getNaturalEndpoints(keyspace, key.getBytes(UTF_8));
 }
   {code} 
 NOTE: Use the key type info we have now, to decode the key-as-string.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Assigned] (CASSANDRA-1248) ArrayIndexOutOfBoundsException thrown when reading partially-written sstable

2011-06-15 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis reassigned CASSANDRA-1248:
-

Assignee: Patricio Echague

Patricio, can you see if you can reproduce on a VM w/ a very small data 
partition?

Easiest way to make sure Cassandra's is there enough space left checks don't 
get in the way is probably to comment them out.

 ArrayIndexOutOfBoundsException thrown when reading partially-written sstable
 

 Key: CASSANDRA-1248
 URL: https://issues.apache.org/jira/browse/CASSANDRA-1248
 Project: Cassandra
  Issue Type: Bug
  Components: Core
 Environment: Cassandra 0.6.3
 java version 1.6.0_0
 IcedTea6 1.3.1 (6b12-0ubuntu6.6) Runtime Environment (build 1.6.0_0-b12)
 OpenJDK 64-Bit Server VM (build 1.6.0_0-b12, mixed mode)
 Ubuntu 8.10
 6 node cluster
 RF==3
Reporter: David King
Assignee: Patricio Echague
 Fix For: 0.8.2


 A node died by running out of disk space. After growing the volume, trying to 
 execute reads dies with:
 {quote}
 ERROR 11:02:51,957 Uncaught exception in thread 
 Thread[ROW-READ-STAGE:10,5,main]
 java.lang.ArrayIndexOutOfBoundsException
 at 
 org.apache.cassandra.io.util.BufferedRandomAccessFile.read(BufferedRandomAccessFile.java:326)
 at java.io.RandomAccessFile.readFully(RandomAccessFile.java:414)
 at java.io.DataInputStream.readUTF(DataInputStream.java:609)
 at java.io.RandomAccessFile.readUTF(RandomAccessFile.java:938)
 at 
 org.apache.cassandra.db.filter.SSTableSliceIterator$ColumnGroupReader.init(SSTableSliceIterator.java:125)
 at 
 org.apache.cassandra.db.filter.SSTableSliceIterator.init(SSTableSliceIterator.java:59)
 at 
 org.apache.cassandra.db.filter.SliceQueryFilter.getSSTableColumnIterator(SliceQueryFilter.java:63)
 at 
 org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:859)
 at 
 org.apache.cassandra.db.ColumnFamilyStore.cacheRow(ColumnFamilyStore.java:747)
 at 
 org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:772)
 at 
 org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:739)
 at org.apache.cassandra.db.Table.getRow(Table.java:381)
 at 
 org.apache.cassandra.db.SliceByNamesReadCommand.getRow(SliceByNamesReadCommand.java:56)
 at 
 org.apache.cassandra.db.ReadVerbHandler.doVerb(ReadVerbHandler.java:70)
 at 
 org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:40)
 at 
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
 at 
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
 at java.lang.Thread.run(Thread.java:636)
 {quote}
 The clients then die with TimeoutExceptions.
 It might be better to return an exception to the client immediately instead 
 of letting them die, and it would be helpful if this exception were 
 accompanied with a message indicating *which* SStable is malformed. 
 This command does *not* turn up the failed table (nor does the same with 
 sstablekeys):
 {quote}
 ri@pmc08:/cassandra/data$ for x in $(ls -t */*-Data.db); do ls -lh $x; 
 /usr/local/cassandra/bin/sstable2json $x  /dev/null; done
 {quote}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




svn commit: r1136218 - in /cassandra/drivers/py/cql: connection.py cursor.py

2011-06-15 Thread jbellis
Author: jbellis
Date: Wed Jun 15 22:00:02 2011
New Revision: 1136218

URL: http://svn.apache.org/viewvc?rev=1136218view=rev
Log:
cleanup

Modified:
cassandra/drivers/py/cql/connection.py
cassandra/drivers/py/cql/cursor.py

Modified: cassandra/drivers/py/cql/connection.py
URL: 
http://svn.apache.org/viewvc/cassandra/drivers/py/cql/connection.py?rev=1136218r1=1136217r2=1136218view=diff
==
--- cassandra/drivers/py/cql/connection.py (original)
+++ cassandra/drivers/py/cql/connection.py Wed Jun 15 22:00:02 2011
@@ -23,7 +23,6 @@ from cql.cassandra.ttypes import Authent
 
 
 class Connection(object):
-
 def __init__(self, host, port, keyspace, user=None, password=None):
 
 Params:

Modified: cassandra/drivers/py/cql/cursor.py
URL: 
http://svn.apache.org/viewvc/cassandra/drivers/py/cql/cursor.py?rev=1136218r1=1136217r2=1136218view=diff
==
--- cassandra/drivers/py/cql/cursor.py (original)
+++ cassandra/drivers/py/cql/cursor.py Wed Jun 15 22:00:02 2011
@@ -34,14 +34,13 @@ _COUNT_DESCRIPTION = (None, None, None, 
 _VOID_DESCRIPTION = (None)
 
 class Cursor:
-
 _keyspace_re = re.compile(USE (\w+);?, re.I | re.M)
 _cfamily_re = re.compile(\s*SELECT\s+.+\s+FROM\s+[\']?(\w+), re.I | re.M)
 _ddl_re = re.compile(\s*(CREATE|ALTER|DROP)\s+, re.I | re.M)
 
 def __init__(self, parent_connection):
 self.open_socket = True
-self.parent_connection = parent_connection
+self._connection = parent_connection
 
 self.description = None # A list of 7-tuples: 
 #  (column_name, type_code, none, none,
@@ -52,7 +51,7 @@ class Cursor:
 self.rowcount = -1  # Populate on execute()
 self.compression = 'GZIP'
 
-self._query_ks = self.parent_connection.keyspace
+self._query_ks = self._connection.keyspace
 self._query_cf = None
 self.decoder = SchemaDecoder(self.__get_schema())
 
@@ -103,7 +102,7 @@ class Cursor:
 return d
 
 schema = {}
-client = self.parent_connection.client
+client = self._connection.client
 for ksdef in client.describe_keyspaces():
 schema[ksdef.name] = column_families(ksdef.cf_defs)
 return schema
@@ -126,7 +125,7 @@ class Cursor:
 request_compression = getattr(Compression, self.compression)
 
 try:
-client = self.parent_connection.client
+client = self._connection.client
 response = client.execute_cql_query(compressed_q, 
request_compression)
 except InvalidRequestException, ire:
 raise cql.ProgrammingError(Bad Request: %s % ire.why)
@@ -186,11 +185,11 @@ class Cursor:
 
 row = self.result[self.rs_idx]
 self.rs_idx += 1
-if self.description != _COUNT_DESCRIPTION:
+if self.description == _COUNT_DESCRIPTION:
+return row
+else:
 self.description = self.decoder.decode_description(self._query_ks, 
self._query_cf, row)
 return self.decoder.decode_row(self._query_ks, self._query_cf, row)
-else:
-return row
 
 def fetchmany(self, size=None):
 self.__checksock()
@@ -249,4 +248,4 @@ class Cursor:
 def __checksock(self):
 if not self.open_socket:
 raise cql.InternalError(Cursor belonging to %s has been closed. %
-(self.parent_connection, ))
+(self._connection, ))




[jira] [Resolved] (CASSANDRA-2471) txcql driver broken

2011-06-15 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis resolved CASSANDRA-2471.
---

   Resolution: Later
Fix Version/s: (was: 0.8.2)
 Assignee: (was: paul cannon)

twisted driver has been broken for weeks (months?) and nobody has cared.  I've 
removed it from the drivers/ tree for now.

 txcql driver broken
 ---

 Key: CASSANDRA-2471
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2471
 Project: Cassandra
  Issue Type: Bug
  Components: API
Reporter: Eric Evans
  Labels: cql

 The Plain Old Python driver was updated for dbapi2, breaking txcql.  Please 
 do the needful.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-1974) PFEPS-like snitch that uses gossip instead of a property file

2011-06-15 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis updated CASSANDRA-1974:
--

 Priority: Minor  (was: Major)
Affects Version/s: (was: 0.7.0)
Fix Version/s: 0.8.2

 PFEPS-like snitch that uses gossip instead of a property file
 -

 Key: CASSANDRA-1974
 URL: https://issues.apache.org/jira/browse/CASSANDRA-1974
 Project: Cassandra
  Issue Type: New Feature
Reporter: Brandon Williams
Assignee: Brandon Williams
Priority: Minor
 Fix For: 0.8.2


 Now that we have an ec2 snitch that propagates its rack/dc info via gossip 
 from CASSANDRA-1654, it doesn't make a lot of sense to use PFEPS where you 
 have to rsync the property file across all the machines when you add a node.  
 Instead, we could have a snitch where you specify its rack/dc in a property 
 file, and propagate this via gossip like the ec2 snitch.  In order to not 
 break PFEPS, this should probably be a new snitch.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2769) Cannot Create Duplicate Compaction Marker

2011-06-15 Thread Alan Liang (JIRA)

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

Alan Liang commented on CASSANDRA-2769:
---

Instead of letting DataTracker#markCompacting modify the subset of sstables to 
be compacted, I think it might be cleaner if it didn't and relied on the 
CompactionStrategy to select the correct sstables. We can do this by having the 
CompactionStrategy get the non compacting sstables from the DataTracker and 
work with those to generate the buckets. The strategy should also be 
responsible for creating buckets that fit within the min/max thresholds. 
#markCompacting would then be changed such that it can either accept/reject a 
bucket to be compacted instead of modifying the subset. #markCompacting will 
also serve to handle the race condition of the DataTracker being inaccurate, 
whereby, it will move on to other buckets.

With this, we can avoid generating buckets that are already compacting and it 
gives full control of what actually is compacted by the CompactionStrategy.

What do you guys think?


 Cannot Create Duplicate Compaction Marker
 -

 Key: CASSANDRA-2769
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2769
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 0.8.0
Reporter: Benjamin Coverston
Assignee: Sylvain Lebresne
 Fix For: 0.8.2

 Attachments: 
 0001-0.8.0-Remove-useless-unmarkCompacting-in-doCleanup.patch, 
 0001-Do-compact-only-smallerSSTables.patch, 
 0002-Only-compact-what-has-been-succesfully-marked-as-com.patch


 Concurrent compaction can trigger the following exception when two threads 
 compact the same sstable. DataTracker attempts to prevent this but apparently 
 not successfully.
 java.io.IOError: java.io.IOException: Unable to create compaction marker
   at 
 org.apache.cassandra.io.sstable.SSTableReader.markCompacted(SSTableReader.java:638)
   at 
 org.apache.cassandra.db.DataTracker.removeOldSSTablesSize(DataTracker.java:321)
   at org.apache.cassandra.db.DataTracker.replace(DataTracker.java:294)
   at 
 org.apache.cassandra.db.DataTracker.replaceCompactedSSTables(DataTracker.java:255)
   at 
 org.apache.cassandra.db.ColumnFamilyStore.replaceCompactedSSTables(ColumnFamilyStore.java:932)
   at 
 org.apache.cassandra.db.compaction.CompactionTask.execute(CompactionTask.java:173)
   at 
 org.apache.cassandra.db.compaction.CompactionManager$1.call(CompactionManager.java:119)
   at 
 org.apache.cassandra.db.compaction.CompactionManager$1.call(CompactionManager.java:102)
   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:680)
 Caused by: java.io.IOException: Unable to create compaction marker
   at 
 org.apache.cassandra.io.sstable.SSTableReader.markCompacted(SSTableReader.java:634)
   ... 12 more

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Created] (CASSANDRA-2777) Pig storage handler should implement LoadMetadata

2011-06-15 Thread Brandon Williams (JIRA)
Pig storage handler should implement LoadMetadata
-

 Key: CASSANDRA-2777
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2777
 Project: Cassandra
  Issue Type: Improvement
  Components: Contrib
Reporter: Brandon Williams
Assignee: Brandon Williams
Priority: Minor


The reason for this is many builtin functions like SUM won't work on longs (you 
can workaround using LongSum, but that's lame) because the query planner 
doesn't know about the types beforehand, even though we are casting to native 
longs.

There is some impact to this, though.  With LoadMetadata implemented, existing 
scripts that specify schema will need to remove it (since LM is doing it for 
them) and they will need to conform to LM's terminology (key, columns, name, 
value) within the script.  This is trivial to change, however, and the 
increased functionality is worth the switch.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2491) A new config parameter, broadcast_address

2011-06-15 Thread Brandon Williams (JIRA)

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

Brandon Williams commented on CASSANDRA-2491:
-

One last thing I overlooked earlier is the snitches have getBCA().  This seems 
unnecessary since anything that needs it can access DD, which is all the 
snitches are doing.  This changes the snitch interface and breaks any custom 
snitches.

 A new config parameter, broadcast_address
 -

 Key: CASSANDRA-2491
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2491
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
 Environment: x86_64 GNU/Linux
Reporter: Khee Chin
Assignee: Khee Chin
Priority: Trivial
  Labels: patch
 Fix For: 1.0

 Attachments: 2491_broadcast_address.patch, 
 2491_broadcast_address_v2.patch, 2491_broadcast_address_v3.patch, 
 2491_broadcast_address_v4.patch

   Original Estimate: 336h
  Remaining Estimate: 336h

 A new config parameter, broadcast_address
 In a cluster setup where one or more nodes is behind a firewall and has a 
 private ip address, listen_address does not allow the hosts behind the 
 firewalls to be discovered by other nodes.
 Attached is a patch that introduces a new config parameter broadcast_address 
 which allows Cassandra nodes to explicitly specify their external ip address. 
 In addition, this allows listen_address to be set to 0.0.0.0 on the already 
 firewalled node.
 broadcast_address fallsback to listen_address when it is not stated.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2777) Pig storage handler should implement LoadMetadata

2011-06-15 Thread Jeremy Hanna (JIRA)

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

Jeremy Hanna updated CASSANDRA-2777:


Reviewer: jeromatron

 Pig storage handler should implement LoadMetadata
 -

 Key: CASSANDRA-2777
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2777
 Project: Cassandra
  Issue Type: Improvement
  Components: Contrib
Reporter: Brandon Williams
Assignee: Brandon Williams
Priority: Minor
 Attachments: 2777.txt


 The reason for this is many builtin functions like SUM won't work on longs 
 (you can workaround using LongSum, but that's lame) because the query planner 
 doesn't know about the types beforehand, even though we are casting to native 
 longs.
 There is some impact to this, though.  With LoadMetadata implemented, 
 existing scripts that specify schema will need to remove it (since LM is 
 doing it for them) and they will need to conform to LM's terminology (key, 
 columns, name, value) within the script.  This is trivial to change, however, 
 and the increased functionality is worth the switch.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2777) Pig storage handler should implement LoadMetadata

2011-06-15 Thread Brandon Williams (JIRA)

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

Brandon Williams updated CASSANDRA-2777:


Fix Version/s: 0.7.7

 Pig storage handler should implement LoadMetadata
 -

 Key: CASSANDRA-2777
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2777
 Project: Cassandra
  Issue Type: Improvement
  Components: Contrib
Reporter: Brandon Williams
Assignee: Brandon Williams
Priority: Minor
 Fix For: 0.7.7

 Attachments: 2777.txt


 The reason for this is many builtin functions like SUM won't work on longs 
 (you can workaround using LongSum, but that's lame) because the query planner 
 doesn't know about the types beforehand, even though we are casting to native 
 longs.
 There is some impact to this, though.  With LoadMetadata implemented, 
 existing scripts that specify schema will need to remove it (since LM is 
 doing it for them) and they will need to conform to LM's terminology (key, 
 columns, name, value) within the script.  This is trivial to change, however, 
 and the increased functionality is worth the switch.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2614) create Column and CounterColumn in the same column family

2011-06-15 Thread Dave Rav (JIRA)

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

Dave Rav commented on CASSANDRA-2614:
-

Is it possible to loop through all
the columns that need to be deleted
find there type (regular or counter)
and delete them base on there type?

 create Column and CounterColumn in the same column family
 -

 Key: CASSANDRA-2614
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2614
 Project: Cassandra
  Issue Type: New Feature
  Components: Core
Reporter: Dave Rav
Assignee: Sylvain Lebresne
Priority: Minor
 Fix For: 0.8.2


 create Column and CounterColumn in the same column family

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Created] (CASSANDRA-2778) Unable to set compaction strategy in cli using create column family command

2011-06-15 Thread Alan Liang (JIRA)
Unable to set compaction strategy in cli using create column family command
---

 Key: CASSANDRA-2778
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2778
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Alan Liang
Assignee: Alan Liang


The following command does not set compaction strategy and its options:
{code}
create column family Standard1
with comparator = BytesType
and compaction_strategy = 
'org.apache.cassandra.db.compaction.TimestampBucketedCompactionStrategy'
and compaction_strategy_options = [{max_sstable_size:504857600, 
retention_in_seconds:60}];
{code}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Issue Comment Edited] (CASSANDRA-2777) Pig storage handler should implement LoadMetadata

2011-06-15 Thread Jeremy Hanna (JIRA)

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

Jeremy Hanna edited comment on CASSANDRA-2777 at 6/16/11 12:21 AM:
---

while we're add it can we remove the redundant addMutation call on line 505 and 
on line 513 add the e param on:
{code}
throw new IOException(e +  Output must be (key, {(column,value)...}) for 
ColumnFamily or (key, {supercolumn:{(column,value)...}...}) for 
SuperColumnFamily, e);
{code}

  was (Author: jeromatron):
while we're add it can we remove the redundant addMutation call on line 505 
and on line 513 add the e param on:
{quote}
throw new IOException(e +  Output must be (key, {(column,value)...}) for 
ColumnFamily or (key, {supercolumn:{(column,value)...}...}) for 
SuperColumnFamily, e);
{quote}
  
 Pig storage handler should implement LoadMetadata
 -

 Key: CASSANDRA-2777
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2777
 Project: Cassandra
  Issue Type: Improvement
  Components: Contrib
Reporter: Brandon Williams
Assignee: Brandon Williams
Priority: Minor
 Fix For: 0.7.7

 Attachments: 2777.txt


 The reason for this is many builtin functions like SUM won't work on longs 
 (you can workaround using LongSum, but that's lame) because the query planner 
 doesn't know about the types beforehand, even though we are casting to native 
 longs.
 There is some impact to this, though.  With LoadMetadata implemented, 
 existing scripts that specify schema will need to remove it (since LM is 
 doing it for them) and they will need to conform to LM's terminology (key, 
 columns, name, value) within the script.  This is trivial to change, however, 
 and the increased functionality is worth the switch.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2777) Pig storage handler should implement LoadMetadata

2011-06-15 Thread Jeremy Hanna (JIRA)

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

Jeremy Hanna commented on CASSANDRA-2777:
-

while we're add it can we remove the redundant addMutation call on line 505 and 
on line 513 add the e param on:
{quote}
throw new IOException(e +  Output must be (key, {(column,value)...}) for 
ColumnFamily or (key, {supercolumn:{(column,value)...}...}) for 
SuperColumnFamily, e);
{quote}

 Pig storage handler should implement LoadMetadata
 -

 Key: CASSANDRA-2777
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2777
 Project: Cassandra
  Issue Type: Improvement
  Components: Contrib
Reporter: Brandon Williams
Assignee: Brandon Williams
Priority: Minor
 Fix For: 0.7.7

 Attachments: 2777.txt


 The reason for this is many builtin functions like SUM won't work on longs 
 (you can workaround using LongSum, but that's lame) because the query planner 
 doesn't know about the types beforehand, even though we are casting to native 
 longs.
 There is some impact to this, though.  With LoadMetadata implemented, 
 existing scripts that specify schema will need to remove it (since LM is 
 doing it for them) and they will need to conform to LM's terminology (key, 
 columns, name, value) within the script.  This is trivial to change, however, 
 and the increased functionality is worth the switch.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2777) Pig storage handler should implement LoadMetadata

2011-06-15 Thread Brandon Williams (JIRA)

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

Brandon Williams commented on CASSANDRA-2777:
-

Sure, will add those on commit.

 Pig storage handler should implement LoadMetadata
 -

 Key: CASSANDRA-2777
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2777
 Project: Cassandra
  Issue Type: Improvement
  Components: Contrib
Reporter: Brandon Williams
Assignee: Brandon Williams
Priority: Minor
 Fix For: 0.7.7

 Attachments: 2777.txt


 The reason for this is many builtin functions like SUM won't work on longs 
 (you can workaround using LongSum, but that's lame) because the query planner 
 doesn't know about the types beforehand, even though we are casting to native 
 longs.
 There is some impact to this, though.  With LoadMetadata implemented, 
 existing scripts that specify schema will need to remove it (since LM is 
 doing it for them) and they will need to conform to LM's terminology (key, 
 columns, name, value) within the script.  This is trivial to change, however, 
 and the increased functionality is worth the switch.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-2491) A new config parameter, broadcast_address

2011-06-15 Thread Vijay (JIRA)

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

Vijay updated CASSANDRA-2491:
-

Attachment: 2491_broadcast_address_v5.patch

Sure... will try that in another ticket... Thanks...

 A new config parameter, broadcast_address
 -

 Key: CASSANDRA-2491
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2491
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
 Environment: x86_64 GNU/Linux
Reporter: Khee Chin
Assignee: Khee Chin
Priority: Trivial
  Labels: patch
 Fix For: 1.0

 Attachments: 2491_broadcast_address.patch, 
 2491_broadcast_address_v2.patch, 2491_broadcast_address_v3.patch, 
 2491_broadcast_address_v4.patch, 2491_broadcast_address_v5.patch

   Original Estimate: 336h
  Remaining Estimate: 336h

 A new config parameter, broadcast_address
 In a cluster setup where one or more nodes is behind a firewall and has a 
 private ip address, listen_address does not allow the hosts behind the 
 firewalls to be discovered by other nodes.
 Attached is a patch that introduces a new config parameter broadcast_address 
 which allows Cassandra nodes to explicitly specify their external ip address. 
 In addition, this allows listen_address to be set to 0.0.0.0 on the already 
 firewalled node.
 broadcast_address fallsback to listen_address when it is not stated.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Issue Comment Edited] (CASSANDRA-2614) create Column and CounterColumn in the same column family

2011-06-15 Thread Dave Rav (JIRA)

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

Dave Rav edited comment on CASSANDRA-2614 at 6/16/11 2:48 AM:
--

Is it possible to loop through all
the columns that need to be deleted
find there type, 'validation_class' (regular or CounterColumnType)
and delete them base on there type?

  was (Author: daver...@yahoo.com):
Is it possible to loop through all
the columns that need to be deleted
find there type (regular or counter)
and delete them base on there type?
  
 create Column and CounterColumn in the same column family
 -

 Key: CASSANDRA-2614
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2614
 Project: Cassandra
  Issue Type: New Feature
  Components: Core
Reporter: Dave Rav
Assignee: Sylvain Lebresne
Priority: Minor
 Fix For: 0.8.2


 create Column and CounterColumn in the same column family

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Created] (CASSANDRA-2779) files not cleaned up by GC?

2011-06-15 Thread Terje Marthinussen (JIRA)
files not cleaned up by GC?
---

 Key: CASSANDRA-2779
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2779
 Project: Cassandra
  Issue Type: Bug
Reporter: Terje Marthinussen
Priority: Critical
 Fix For: 0.8.0


This is 0.8.0 + a few 0.8.1 patches on repair.

We tested repair on 2 nodes in the cluster last night. 
Interestingly enough, I don't believe the node described here is in any way 
neighbour of the nodes we tested repair on so I am not sure why it is streaming 
data both in and out, but in any case, it has joined the streaming party.

We now see:
ERROR [CompactionExecutor:5] 2011-06-16 09:12:23,928 CompactionManager.java 
(line 510) insufficient space to compact even the two smallest files, aborting
 INFO [CompactionExecutor:5] 2011-06-16 09:12:23,929 StorageService.java (line 
2071) requesting GC to free disk space

And we see a lot of them:
 INFO [CompactionExecutor:5] 2011-06-16 09:11:59,164 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:5] 2011-06-16 09:12:23,929 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:5] 2011-06-16 09:12:46,489 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:3] 2011-06-16 09:17:53,299 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:3] 2011-06-16 09:18:17,782 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:3] 2011-06-16 09:18:42,078 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:3] 2011-06-16 09:19:06,984 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:3] 2011-06-16 09:19:32,079 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:3] 2011-06-16 09:19:57,265 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:3] 2011-06-16 09:20:22,706 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:3] 2011-06-16 09:20:47,331 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:3] 2011-06-16 09:21:13,062 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:3] 2011-06-16 09:21:38,288 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:3] 2011-06-16 09:22:03,500 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:3] 2011-06-16 09:22:29,407 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:3] 2011-06-16 09:22:55,577 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:3] 2011-06-16 09:23:20,951 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:3] 2011-06-16 09:23:46,448 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:3] 2011-06-16 09:24:12,030 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:6] 2011-06-16 09:48:00,633 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:6] 2011-06-16 09:48:26,119 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:6] 2011-06-16 09:48:49,002 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:6] 2011-06-16 10:10:20,196 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:6] 2011-06-16 10:10:45,322 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:6] 2011-06-16 10:11:07,619 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:7] 2011-06-16 11:01:45,562 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:7] 2011-06-16 11:02:10,236 StorageService.java (line 
2071) requesting GC to free disk space
 INFO [CompactionExecutor:7] 2011-06-16 11:05:31,297 StorageService.java (line 
2071) requesting GC to free disk space

Available disk is 105GB and it is trying to compact a set of the largest 
sstables. There is probably easily enough disk to do so, but the estimation is 
not sufficient (lots of dupes here after streaming I think, probably heavily 
affected by CASSANDRA-2698). 

It is trying to compact 2 sstables of 58 and 41GB.

If I look at the data dir, I see 46 *Compacted files which makes up an 
additional 137GB of space.
The oldest of these Compacted files dates back to Jun 16th 01:26, so 10 hours 
old.

It does however succeed  at cleaning up some files. There are definitely files 
which do get deleted. Just that there is a lot which is not.

Either the GC cleanup tactic is seriously 

[jira] [Commented] (CASSANDRA-2779) files not cleaned up by GC?

2011-06-15 Thread Terje Marthinussen (JIRA)

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

Terje Marthinussen commented on CASSANDRA-2779:
---

Interestingly enough... Just as I posted this it started removing the files and 
the case study disappeared and started working fine.

A few minutes before doing so, if completed manual repair, so yes, I guess 
repair is a likely candidate for keeping file references.

If I remember right, it builds a list of files to stream at the start. They may 
not be dereferenced fully until the streaming finishes?


 files not cleaned up by GC?
 ---

 Key: CASSANDRA-2779
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2779
 Project: Cassandra
  Issue Type: Bug
Reporter: Terje Marthinussen
Priority: Critical
 Fix For: 0.8.0


 This is 0.8.0 + a few 0.8.1 patches on repair.
 We tested repair on 2 nodes in the cluster last night. 
 Interestingly enough, I don't believe the node described here is in any way 
 neighbour of the nodes we tested repair on so I am not sure why it is 
 streaming data both in and out, but in any case, it has joined the streaming 
 party.
 We now see:
 ERROR [CompactionExecutor:5] 2011-06-16 09:12:23,928 CompactionManager.java 
 (line 510) insufficient space to compact even the two smallest files, aborting
  INFO [CompactionExecutor:5] 2011-06-16 09:12:23,929 StorageService.java 
 (line 2071) requesting GC to free disk space
 And we see a lot of them:
  INFO [CompactionExecutor:5] 2011-06-16 09:11:59,164 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:5] 2011-06-16 09:12:23,929 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:5] 2011-06-16 09:12:46,489 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:17:53,299 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:18:17,782 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:18:42,078 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:19:06,984 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:19:32,079 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:19:57,265 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:20:22,706 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:20:47,331 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:21:13,062 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:21:38,288 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:22:03,500 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:22:29,407 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:22:55,577 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:23:20,951 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:23:46,448 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:24:12,030 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 09:48:00,633 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 09:48:26,119 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 09:48:49,002 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 10:10:20,196 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 10:10:45,322 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 10:11:07,619 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:7] 2011-06-16 11:01:45,562 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:7] 2011-06-16 11:02:10,236 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:7] 2011-06-16 11:05:31,297 

[jira] [Updated] (CASSANDRA-2779) files not cleaned up by GC?

2011-06-15 Thread Terje Marthinussen (JIRA)

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

Terje Marthinussen updated CASSANDRA-2779:
--

Priority: Major  (was: Critical)

Dropping to major again. Things do get cleaned up, eventually...

 files not cleaned up by GC?
 ---

 Key: CASSANDRA-2779
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2779
 Project: Cassandra
  Issue Type: Bug
Reporter: Terje Marthinussen
 Fix For: 0.8.0


 This is 0.8.0 + a few 0.8.1 patches on repair.
 We tested repair on 2 nodes in the cluster last night. 
 Interestingly enough, I don't believe the node described here is in any way 
 neighbour of the nodes we tested repair on so I am not sure why it is 
 streaming data both in and out, but in any case, it has joined the streaming 
 party.
 We now see:
 ERROR [CompactionExecutor:5] 2011-06-16 09:12:23,928 CompactionManager.java 
 (line 510) insufficient space to compact even the two smallest files, aborting
  INFO [CompactionExecutor:5] 2011-06-16 09:12:23,929 StorageService.java 
 (line 2071) requesting GC to free disk space
 And we see a lot of them:
  INFO [CompactionExecutor:5] 2011-06-16 09:11:59,164 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:5] 2011-06-16 09:12:23,929 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:5] 2011-06-16 09:12:46,489 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:17:53,299 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:18:17,782 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:18:42,078 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:19:06,984 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:19:32,079 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:19:57,265 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:20:22,706 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:20:47,331 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:21:13,062 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:21:38,288 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:22:03,500 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:22:29,407 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:22:55,577 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:23:20,951 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:23:46,448 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:24:12,030 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 09:48:00,633 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 09:48:26,119 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 09:48:49,002 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 10:10:20,196 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 10:10:45,322 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 10:11:07,619 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:7] 2011-06-16 11:01:45,562 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:7] 2011-06-16 11:02:10,236 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:7] 2011-06-16 11:05:31,297 StorageService.java 
 (line 2071) requesting GC to free disk space
 Available disk is 105GB and it is trying to compact a set of the largest 
 sstables. There is probably easily enough disk to do so, but the estimation 
 is not sufficient (lots of dupes here after streaming I think, probably 
 heavily affected by CASSANDRA-2698). 
 It is trying to compact 2 sstables of 58 and 41GB.
 If I 

[jira] [Commented] (CASSANDRA-2521) Move away from Phantom References for Compaction/Memtable

2011-06-15 Thread Jeff Kesselman (JIRA)

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

Jeff Kesselman commented on CASSANDRA-2521:
---

Relying on either finalizers or phantom references for your own clean up is not 
correct.  These mechanisms are not triggered when an object becomes a candidate 
for collection, but  only when the space is actually reclaimed.  

The time between these two states is up to the gc implementation and can be 
infinite in that the gc is never *required* to collect any given object unless 
failure to collect that object would result in an Out Of Memory condition.  GCs 
often only partially collect, choosing the easiest objects to clean up first 
and going no further if no more space is required.  A null gc that never 
collects space is actually perfectly legal under the java VM specification and 
has actually been used by IBM in the past for certain operational environments.

 Move away from Phantom References for Compaction/Memtable
 -

 Key: CASSANDRA-2521
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2521
 Project: Cassandra
  Issue Type: Improvement
Reporter: Chris Goffinet
Assignee: Sylvain Lebresne
 Fix For: 1.0


 http://wiki.apache.org/cassandra/MemtableSSTable
 Let's move to using reference counting instead of relying on GC to be called 
 in StorageService.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2521) Move away from Phantom References for Compaction/Memtable

2011-06-15 Thread Jeff Kesselman (JIRA)

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

Jeff Kesselman commented on CASSANDRA-2521:
---

It should also be noted that any object with either a finalizer or a phantom 
reference to it cannot be cleaned up in the eden by the hotspot generational 
collector and is forced to proceed to the next generation where gc is 
significantly more expensive.  Whether this has any real effect on your gc 
times depends on the lifetime of the object in question.  Creating a lot of 
short lived objects with finalizers or phantom references is bad.  Creating 
middle to long lived objects with finalizers or phantom references is less of a 
 problem.

 Move away from Phantom References for Compaction/Memtable
 -

 Key: CASSANDRA-2521
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2521
 Project: Cassandra
  Issue Type: Improvement
Reporter: Chris Goffinet
Assignee: Sylvain Lebresne
 Fix For: 1.0


 http://wiki.apache.org/cassandra/MemtableSSTable
 Let's move to using reference counting instead of relying on GC to be called 
 in StorageService.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Commented] (CASSANDRA-2762) Token cannot contain comma (possibly non-alpha/non-numeric too?) in OrderPreservingPartitioner

2011-06-15 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis commented on CASSANDRA-2762:
---

However we should make sure that we fail-fast invalid initial_token setting, as 
well as do not hand out bad tokens during auto bootstrap token selection

 Token cannot contain comma (possibly non-alpha/non-numeric too?) in 
 OrderPreservingPartitioner
 --

 Key: CASSANDRA-2762
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2762
 Project: Cassandra
  Issue Type: Bug
Reporter: Jackson Chung

 It'd appear that when the token contain comma in the 
 OrderPreservingPartitioner case, C* will fail with assert error:
 ERROR [GossipStage:1] 2011-06-09 16:01:05,063 AbstractCassandraDaemon.java 
 (line 112) Fatal exception in thread Thread[GossipStage:1,5,main]
 java.lang.AssertionError
 at 
 org.apache.cassandra.service.StorageService.handleStateBootstrap(StorageService.java:685)
 at 
 org.apache.cassandra.service.StorageService.onChange(StorageService.java:648)
 at org.apache.cassandra.gms.Gossiper.doNotifications(Gossiper.java:772)
 at 
 org.apache.cassandra.gms.Gossiper.applyApplicationStateLocally(Gossiper.java:737)
 at org.apache.cassandra.gms.Gossiper.applyStateLocally(Gossiper.java:679)
 at 
 org.apache.cassandra.gms.GossipDigestAck2VerbHandler.doVerb(GossipDigestAck2VerbHandler.java:60)
 at 
 org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:72)
 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)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Reopened] (CASSANDRA-2762) Token cannot contain comma (possibly non-alpha/non-numeric too?) in OrderPreservingPartitioner

2011-06-15 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis reopened CASSANDRA-2762:
---

  Assignee: Jonathan Ellis

 Token cannot contain comma (possibly non-alpha/non-numeric too?) in 
 OrderPreservingPartitioner
 --

 Key: CASSANDRA-2762
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2762
 Project: Cassandra
  Issue Type: Bug
Reporter: Jackson Chung
Assignee: Jonathan Ellis

 It'd appear that when the token contain comma in the 
 OrderPreservingPartitioner case, C* will fail with assert error:
 ERROR [GossipStage:1] 2011-06-09 16:01:05,063 AbstractCassandraDaemon.java 
 (line 112) Fatal exception in thread Thread[GossipStage:1,5,main]
 java.lang.AssertionError
 at 
 org.apache.cassandra.service.StorageService.handleStateBootstrap(StorageService.java:685)
 at 
 org.apache.cassandra.service.StorageService.onChange(StorageService.java:648)
 at org.apache.cassandra.gms.Gossiper.doNotifications(Gossiper.java:772)
 at 
 org.apache.cassandra.gms.Gossiper.applyApplicationStateLocally(Gossiper.java:737)
 at org.apache.cassandra.gms.Gossiper.applyStateLocally(Gossiper.java:679)
 at 
 org.apache.cassandra.gms.GossipDigestAck2VerbHandler.doVerb(GossipDigestAck2VerbHandler.java:60)
 at 
 org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:72)
 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)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Resolved] (CASSANDRA-2779) files not cleaned up by GC?

2011-06-15 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis resolved CASSANDRA-2779.
---

   Resolution: Not A Problem
Fix Version/s: (was: 0.8.0)

I don't see a problem here (I think repair holding references to files being 
streamed is totally reasonable)

 files not cleaned up by GC?
 ---

 Key: CASSANDRA-2779
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2779
 Project: Cassandra
  Issue Type: Bug
Reporter: Terje Marthinussen

 This is 0.8.0 + a few 0.8.1 patches on repair.
 We tested repair on 2 nodes in the cluster last night. 
 Interestingly enough, I don't believe the node described here is in any way 
 neighbour of the nodes we tested repair on so I am not sure why it is 
 streaming data both in and out, but in any case, it has joined the streaming 
 party.
 We now see:
 ERROR [CompactionExecutor:5] 2011-06-16 09:12:23,928 CompactionManager.java 
 (line 510) insufficient space to compact even the two smallest files, aborting
  INFO [CompactionExecutor:5] 2011-06-16 09:12:23,929 StorageService.java 
 (line 2071) requesting GC to free disk space
 And we see a lot of them:
  INFO [CompactionExecutor:5] 2011-06-16 09:11:59,164 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:5] 2011-06-16 09:12:23,929 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:5] 2011-06-16 09:12:46,489 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:17:53,299 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:18:17,782 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:18:42,078 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:19:06,984 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:19:32,079 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:19:57,265 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:20:22,706 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:20:47,331 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:21:13,062 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:21:38,288 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:22:03,500 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:22:29,407 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:22:55,577 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:23:20,951 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:23:46,448 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:24:12,030 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 09:48:00,633 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 09:48:26,119 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 09:48:49,002 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 10:10:20,196 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 10:10:45,322 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 10:11:07,619 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:7] 2011-06-16 11:01:45,562 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:7] 2011-06-16 11:02:10,236 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:7] 2011-06-16 11:05:31,297 StorageService.java 
 (line 2071) requesting GC to free disk space
 Available disk is 105GB and it is trying to compact a set of the largest 
 sstables. There is probably easily enough disk to do so, but the estimation 
 is not sufficient (lots of dupes here after streaming I think, probably 
 heavily affected by CASSANDRA-2698). 
 It is trying to 

svn commit: r1136287 - in /cassandra/trunk: ./ src/java/org/apache/cassandra/db/ src/java/org/apache/cassandra/db/columniterator/ src/java/org/apache/cassandra/db/compaction/ src/java/org/apache/cassa

2011-06-15 Thread jbellis
Author: jbellis
Date: Thu Jun 16 04:24:33 2011
New Revision: 1136287

URL: http://svn.apache.org/viewvc?rev=1136287view=rev
Log:
replace CollatingIterator, ReducingIterator with MergeIterator
patch by stuhood; reviewed by jbellis for CASSANDRA-2062

Added:
cassandra/trunk/test/unit/org/apache/cassandra/utils/MergeIteratorTest.java
Removed:
cassandra/trunk/src/java/org/apache/cassandra/db/RowIterator.java
cassandra/trunk/src/java/org/apache/cassandra/utils/ReducingIterator.java
Modified:
cassandra/trunk/CHANGES.txt
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
cassandra/trunk/src/java/org/apache/cassandra/db/RowIteratorFactory.java

cassandra/trunk/src/java/org/apache/cassandra/db/columniterator/IColumnIterator.java

cassandra/trunk/src/java/org/apache/cassandra/db/compaction/CompactionIterator.java

cassandra/trunk/src/java/org/apache/cassandra/db/compaction/CompactionManager.java

cassandra/trunk/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java
cassandra/trunk/src/java/org/apache/cassandra/db/filter/QueryFilter.java
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/KeyIterator.java

cassandra/trunk/src/java/org/apache/cassandra/io/sstable/ReducingKeyIterator.java
cassandra/trunk/src/java/org/apache/cassandra/io/sstable/SSTableScanner.java

cassandra/trunk/src/java/org/apache/cassandra/service/RangeSliceResponseResolver.java
cassandra/trunk/src/java/org/apache/cassandra/service/RowRepairResolver.java
cassandra/trunk/src/java/org/apache/cassandra/utils/FBUtilities.java

Modified: cassandra/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1136287r1=1136286r2=1136287view=diff
==
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Thu Jun 16 04:24:33 2011
@@ -3,6 +3,8 @@
  * add commitlog_total_space_in_mb to prevent fragmented logs (CASSANDRA-2427)
  * removed commitlog_rotation_threshold_in_mb configuration (CASSANDRA-2771)
  * make AbstractBounds.normalize de-overlapp overlapping ranges 
(CASSANDRA-2641)
+ * replace CollatingIterator, ReducingIterator with MergeIterator 
+   (CASSANDRA-2062)
 
 
 0.8.1

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java?rev=1136287r1=1136286r2=1136287view=diff
==
--- cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/ColumnFamilyStore.java Thu 
Jun 16 04:24:33 2011
@@ -32,7 +32,6 @@ import javax.management.MBeanServer;
 import javax.management.ObjectName;
 
 import com.google.common.collect.Iterables;
-import org.apache.commons.collections.IteratorUtils;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -1188,7 +1187,7 @@ public class ColumnFamilyStore implement
 
 IColumnIterator ci = filter.getMemtableColumnIterator(cached, null, 
getComparator());
 ColumnFamily cf = ci.getColumnFamily().cloneMeShallow();
-filter.collectCollatedColumns(cf, ci, gcBefore);
+filter.collateColumns(cf, Collections.singletonList(ci), 
getComparator(), gcBefore);
 // TODO this is necessary because when we collate supercolumns 
together, we don't check
 // their subcolumns for relevance, so we need to do a second prune 
post facto here.
 return cf.isSuper() ? removeDeleted(cf, gcBefore) : 
removeDeletedCF(cf, gcBefore);
@@ -1244,10 +1243,7 @@ public class ColumnFamilyStore implement
 if (iterators.size() == 0)
 return null;
 
-ComparatorIColumn comparator = 
filter.filter.getColumnComparator(getComparator());
-Iterator collated = IteratorUtils.collatedIterator(comparator, 
iterators);
-
-filter.collectCollatedColumns(returnCF, collated, gcBefore);
+filter.collateColumns(returnCF, iterators, getComparator(), 
gcBefore);
 
 // Caller is responsible for final removeDeletedCF.  This is 
important for cacheRow to work correctly:
 return returnCF;
@@ -1298,7 +1294,7 @@ public class ColumnFamilyStore implement
 // It is fine to aliases the View.sstables since it's an unmodifiable 
collection
 CollectionSSTableReader sstables = currentView.sstables;
 
-RowIterator iterator = RowIteratorFactory.getIterator(memtables, 
sstables, startWith, stopAt, filter, getComparator(), this);
+CloseableIteratorRow iterator = 
RowIteratorFactory.getIterator(memtables, sstables, startWith, stopAt, filter, 
getComparator(), this);
 ListRow rows = new ArrayListRow();
 
 try
@@ -1486,7 +1482,7 @@ public class 

[jira] [Commented] (CASSANDRA-2779) files not cleaned up by GC?

2011-06-15 Thread Terje Marthinussen (JIRA)

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

Terje Marthinussen commented on CASSANDRA-2779:
---

The problem is the disk use.

I have no problem with the disk use if all recommendations for Cassandra is 
changed from typically 2x disk space required to hold the dataset to 4x disk 
space vs. what is needed to hold the dataset.

Either we have to fix this issue to keep disk space down or we have to change 
the recommendations.

 files not cleaned up by GC?
 ---

 Key: CASSANDRA-2779
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2779
 Project: Cassandra
  Issue Type: Bug
Reporter: Terje Marthinussen

 This is 0.8.0 + a few 0.8.1 patches on repair.
 We tested repair on 2 nodes in the cluster last night. 
 Interestingly enough, I don't believe the node described here is in any way 
 neighbour of the nodes we tested repair on so I am not sure why it is 
 streaming data both in and out, but in any case, it has joined the streaming 
 party.
 We now see:
 ERROR [CompactionExecutor:5] 2011-06-16 09:12:23,928 CompactionManager.java 
 (line 510) insufficient space to compact even the two smallest files, aborting
  INFO [CompactionExecutor:5] 2011-06-16 09:12:23,929 StorageService.java 
 (line 2071) requesting GC to free disk space
 And we see a lot of them:
  INFO [CompactionExecutor:5] 2011-06-16 09:11:59,164 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:5] 2011-06-16 09:12:23,929 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:5] 2011-06-16 09:12:46,489 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:17:53,299 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:18:17,782 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:18:42,078 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:19:06,984 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:19:32,079 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:19:57,265 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:20:22,706 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:20:47,331 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:21:13,062 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:21:38,288 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:22:03,500 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:22:29,407 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:22:55,577 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:23:20,951 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:23:46,448 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:24:12,030 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 09:48:00,633 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 09:48:26,119 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 09:48:49,002 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 10:10:20,196 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 10:10:45,322 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 10:11:07,619 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:7] 2011-06-16 11:01:45,562 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:7] 2011-06-16 11:02:10,236 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:7] 2011-06-16 11:05:31,297 StorageService.java 
 (line 2071) requesting GC to free disk space
 Available disk is 105GB and it is trying to compact a set of the 

[jira] [Assigned] (CASSANDRA-2521) Move away from Phantom References for Compaction/Memtable

2011-06-15 Thread Jonathan Ellis (JIRA)

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

Jonathan Ellis reassigned CASSANDRA-2521:
-

Assignee: (was: Sylvain Lebresne)

Sylvain has the largest backlog of any contributor, so I'm going to take this 
off his plate so someone with more time (Jeffrey?) can take a stab at it.

 Move away from Phantom References for Compaction/Memtable
 -

 Key: CASSANDRA-2521
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2521
 Project: Cassandra
  Issue Type: Improvement
Reporter: Chris Goffinet
 Fix For: 1.0


 http://wiki.apache.org/cassandra/MemtableSSTable
 Let's move to using reference counting instead of relying on GC to be called 
 in StorageService.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Reopened] (CASSANDRA-2779) files not cleaned up by GC?

2011-06-15 Thread Terje Marthinussen (JIRA)

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

Terje Marthinussen reopened CASSANDRA-2779:
---


Reopening until a decision is made to fix either documentation or disk usage,

Things like:
http://wiki.apache.org/cassandra/CassandraHardware
As covered in MemtableSSTable, compactions can require up to 100% of your 
in-use space temporarily in the worst case

should not exist, and in addition to an up to 100% increase of data from 
streaming, you need 100% for compaction and headroom to avoid full GC from 
running every few minutes like occured in this Jira (basically an unusable 
service)

 files not cleaned up by GC?
 ---

 Key: CASSANDRA-2779
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2779
 Project: Cassandra
  Issue Type: Bug
Reporter: Terje Marthinussen

 This is 0.8.0 + a few 0.8.1 patches on repair.
 We tested repair on 2 nodes in the cluster last night. 
 Interestingly enough, I don't believe the node described here is in any way 
 neighbour of the nodes we tested repair on so I am not sure why it is 
 streaming data both in and out, but in any case, it has joined the streaming 
 party.
 We now see:
 ERROR [CompactionExecutor:5] 2011-06-16 09:12:23,928 CompactionManager.java 
 (line 510) insufficient space to compact even the two smallest files, aborting
  INFO [CompactionExecutor:5] 2011-06-16 09:12:23,929 StorageService.java 
 (line 2071) requesting GC to free disk space
 And we see a lot of them:
  INFO [CompactionExecutor:5] 2011-06-16 09:11:59,164 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:5] 2011-06-16 09:12:23,929 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:5] 2011-06-16 09:12:46,489 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:17:53,299 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:18:17,782 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:18:42,078 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:19:06,984 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:19:32,079 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:19:57,265 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:20:22,706 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:20:47,331 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:21:13,062 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:21:38,288 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:22:03,500 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:22:29,407 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:22:55,577 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:23:20,951 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:23:46,448 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:3] 2011-06-16 09:24:12,030 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 09:48:00,633 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 09:48:26,119 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 09:48:49,002 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 10:10:20,196 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 10:10:45,322 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:6] 2011-06-16 10:11:07,619 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:7] 2011-06-16 11:01:45,562 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:7] 2011-06-16 11:02:10,236 StorageService.java 
 (line 2071) requesting GC to free disk space
  INFO [CompactionExecutor:7] 2011-06-16 11:05:31,297 StorageService.java 
 

  1   2   >