[jira] [Created] (CASSANDRA-10467) QoS for Queries

2015-10-07 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-10467:
--

 Summary: QoS for Queries
 Key: CASSANDRA-10467
 URL: https://issues.apache.org/jira/browse/CASSANDRA-10467
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Benjamin Coverston


Background: As an OLTP system that is based on pipelined execution worker pools 
can be saturated with long(er) running calls. When the system is under stress, 
those long running calls can make requests that should be short lived requests 
take a much longer period of time.

Introduce the concept of QoS into Cassandra for client queries. A few ideas:

1. Allow clients to specify a QoS to be sent to Cassandra from the driver as 
part of the protocol.

2. Allow different requests to be tagged based on some simple criteria (perhaps 
configured) (i.e. ALLOW FILTERING was part of the query)

3. QOS based on the LUN that is accessed (SSDs get higher QOS than the RAID5)





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


[jira] [Commented] (CASSANDRA-9231) Support Routing Key as part of Partition Key

2015-06-15 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-9231?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14586256#comment-14586256
 ] 

Benjamin Coverston commented on CASSANDRA-9231:
---

I'm also -1 on adding UDFs into the mix, just on the merits of losing the token 
aware routing from the client. A simple designation of a some of the partition 
keys as routing keys would serve the use cases I'm aware of.

> Support Routing Key as part of Partition Key
> 
>
> Key: CASSANDRA-9231
> URL: https://issues.apache.org/jira/browse/CASSANDRA-9231
> Project: Cassandra
>  Issue Type: Wish
>  Components: Core
>Reporter: Matthias Broecheler
> Fix For: 3.x
>
>
> Provide support for sub-dividing the partition key into a routing key and a 
> non-routing key component. Currently, all columns that make up the partition 
> key of the primary key are also routing keys, i.e. they determine which nodes 
> store the data. This proposal would give the data modeler the ability to 
> designate only a subset of the columns that comprise the partition key to be 
> routing keys. The non-routing key columns of the partition key identify the 
> partition but are not used to determine where to store the data.
> Consider the following example table definition:
> CREATE TABLE foo (
>   a int,
>   b int,
>   c int,
>   d int,
>   PRIMARY KEY  (([a], b), c ) );
> (a,b) is the partition key, c is the clustering key, and d is just a column. 
> In addition, the square brackets identify the routing key as column a. This 
> means that only the value of column a is used to determine the node for data 
> placement (i.e. only the value of column a is murmur3 hashed to compute the 
> token). In addition, column b is needed to identify the partition but does 
> not influence the placement.
> This has the benefit that all rows with the same routing key (but potentially 
> different non-routing key columns of the partition key) are stored on the 
> same node and that knowledge of such co-locality can be exploited by 
> applications build on top of Cassandra.
> Currently, the only way to achieve co-locality is within a partition. 
> However, this approach has the limitations that: a) there are theoretical and 
> (more importantly) practical limitations on the size of a partition and b) 
> rows within a partition are ordered and an index is build to exploit such 
> ordering. For large partitions that overhead is significant if ordering isn't 
> needed.
> In other words, routing keys afford a simple means to achieve scalable 
> node-level co-locality without ordering while clustering keys afford 
> page-level co-locality with ordering. As such, they address different 
> co-locality needs giving the data modeler the flexibility to choose what is 
> needed for their application.



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


[jira] [Created] (CASSANDRA-9663) Support For varint Counter Type

2015-06-26 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-9663:
-

 Summary: Support For varint Counter Type
 Key: CASSANDRA-9663
 URL: https://issues.apache.org/jira/browse/CASSANDRA-9663
 Project: Cassandra
  Issue Type: New Feature
  Components: Core
Reporter: Benjamin Coverston


While 64 bits is enough for most counter use cases, it's pretty easy to 
overflow when doing some of squares (for example).



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


[jira] [Created] (CASSANDRA-7315) Hadoop Compatibility Broken

2014-05-28 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-7315:
-

 Summary: Hadoop Compatibility Broken
 Key: CASSANDRA-7315
 URL: https://issues.apache.org/jira/browse/CASSANDRA-7315
 Project: Cassandra
  Issue Type: Bug
  Components: Core, Hadoop
 Environment: Cassandra
Reporter: Benjamin Coverston
 Attachments: 0001-fix-hadoopcompat-issues.patch

Some enhancements we did recently for the CqlRecordReader are using the job 
context object directly to get the configuration. This patch fixes those issues 
so that we maintain compatibility with old and new mapreduce implementations.

Attached is a patch for the 2.0 branch.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (CASSANDRA-7340) CqlRecordWriter doesn't have user/password authentication

2014-06-09 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-7340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14025302#comment-14025302
 ] 

Benjamin Coverston commented on CASSANDRA-7340:
---

patch lgtm

> CqlRecordWriter doesn't have user/password authentication
> -
>
> Key: CASSANDRA-7340
> URL: https://issues.apache.org/jira/browse/CASSANDRA-7340
> Project: Cassandra
>  Issue Type: Bug
>  Components: Hadoop
>Reporter: Alex Liu
>Assignee: Alex Liu
> Fix For: 2.0.9
>
> Attachments: 7340.txt
>
>
> CqlRecordWriter doesn't create Cassandra client based on 
> "cassandra.output.keyspace.username"
> and "cassandra.output.keyspace.passwd" setting.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Created] (CASSANDRA-8944) Add double_counter Type

2015-03-12 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-8944:
-

 Summary: Add double_counter Type
 Key: CASSANDRA-8944
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8944
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Benjamin Coverston
 Fix For: 3.1


A double_counter type similar to the integer counter type that currently exists.



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


[jira] [Created] (CASSANDRA-8977) Potential DOS Exposure from Netty

2015-03-16 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-8977:
-

 Summary: Potential DOS Exposure from Netty
 Key: CASSANDRA-8977
 URL: https://issues.apache.org/jira/browse/CASSANDRA-8977
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Reporter: Benjamin Coverston


CVE-2014-3488 : The SslHandler in Netty before 3.9.2 allows remote attackers to 
cause a denial of service (infinite loop and CPU consumption) via a crafted 
SSLv2Hello message.

2.0 currently uses Netty 3.6.6 

Upgrading to 3.9.2+ will fix this issue, and patch a few other known 
vulnerabilities that we do not currently expose.



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


[jira] [Commented] (CASSANDRA-5553) Deterministic load ordering for keyspaces

2013-08-10 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-5553?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13736065#comment-13736065
 ] 

Benjamin Coverston commented on CASSANDRA-5553:
---

No, we can close it I think. We ended up doing it differently.

> Deterministic load ordering for keyspaces
> -
>
> Key: CASSANDRA-5553
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5553
> Project: Cassandra
>  Issue Type: Bug
>Affects Versions: 1.2.4
>Reporter: Benjamin Coverston
>Assignee: Benjamin Coverston
>
> I'm working on an extension to C* that would benefit from being able to load 
> column families in a particular order. Right now load order is determined by 
> a keyset which ends up being random. If we made this deterministic I could 
> get my keyspace loaded before the other CF needs it.

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


[jira] [Created] (CASSANDRA-5999) Modify PRSI interface and related callers to use the index method containing the updated key and cf.

2013-09-10 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-5999:
-

 Summary: Modify PRSI interface and related callers to use the 
index method containing the updated key and cf.
 Key: CASSANDRA-5999
 URL: https://issues.apache.org/jira/browse/CASSANDRA-5999
 Project: Cassandra
  Issue Type: Improvement
Reporter: Benjamin Coverston
Assignee: Benjamin Coverston
 Fix For: 1.2.10


This enhancement will allow for better support of custom indexes using CQL3.

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


[jira] [Updated] (CASSANDRA-6000) Enhance UntypedResultSet.Row by adding missing/additional helper methods

2013-09-10 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-6000:
--

Attachment: cassandra-6000.patch

Add support for getting list composition, and column metadata.

> Enhance UntypedResultSet.Row by adding missing/additional helper methods
> 
>
> Key: CASSANDRA-6000
> URL: https://issues.apache.org/jira/browse/CASSANDRA-6000
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Benjamin Coverston
> Fix For: 1.2.10
>
> Attachments: cassandra-6000.patch
>
>
> Add missing getList method, in addition it would be nice to have a method 
> that lets us get the column specifications.

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


[jira] [Updated] (CASSANDRA-5999) Modify PRSI interface and related callers to use the index method containing the updated key and cf.

2013-09-10 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-5999:
--

Attachment: cassandra-5999.patch

> Modify PRSI interface and related callers to use the index method containing 
> the updated key and cf.
> 
>
> Key: CASSANDRA-5999
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5999
> Project: Cassandra
>  Issue Type: Improvement
>Reporter: Benjamin Coverston
>Assignee: Benjamin Coverston
> Fix For: 1.2.10
>
> Attachments: cassandra-5999.patch
>
>
> This enhancement will allow for better support of custom indexes using CQL3.

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


[jira] [Created] (CASSANDRA-6000) Enhance UntypedResultSet.Row by adding missing/additional helper methods

2013-09-10 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-6000:
-

 Summary: Enhance UntypedResultSet.Row by adding missing/additional 
helper methods
 Key: CASSANDRA-6000
 URL: https://issues.apache.org/jira/browse/CASSANDRA-6000
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Benjamin Coverston
 Fix For: 1.2.10


Add missing getList method, in addition it would be nice to have a method that 
lets us get the column specifications.

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


[jira] [Commented] (CASSANDRA-6018) Add option to encrypt commitlog

2013-09-17 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-6018?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13769821#comment-13769821
 ] 

Benjamin Coverston commented on CASSANDRA-6018:
---

Perhaps what we really need here is a hook for a filter chain on the commit 
log. CASSANDRA-4148 would also need something like this.

> Add option to encrypt commitlog 
> 
>
> Key: CASSANDRA-6018
> URL: https://issues.apache.org/jira/browse/CASSANDRA-6018
> Project: Cassandra
>  Issue Type: Task
>  Components: Core
>Reporter: Jason Brown
>Assignee: Jason Brown
>  Labels: commit_log, encryption, security
> Fix For: 1.2.10, 2.0.1
>
>
> We are going to start using cassandra for a billing system, and while I can 
> encrypt sstables at rest (via Datastax Enterprise), commit logs are more or 
> less plain text. Thus, an attacker would be able to easily read, for example, 
> credit card numbers in the clear text commit log (if the calling app does not 
> encrypt the data itself before sending it to cassandra).
> I want to allow the option of encrypting the commit logs, most likely 
> controlled by a property in the yaml.

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


[jira] [Commented] (CASSANDRA-5351) Avoid repairing already-repaired data by default

2013-09-20 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-5351?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13773178#comment-13773178
 ] 

Benjamin Coverston commented on CASSANDRA-5351:
---

I think this is a good idea. In fact, triggering when the un-repaired size gets 
to be above some configured threshold means that repairs can be tuned for your 
environment. If we had a set of SSTables that are 'repaired', another 'pending 
repair', and another set of 'not yet scheduled for repair' (or queued for 
future repair) you could actually monitor your system to see if repairs are 
'keeping up' with your data volumes.

> Avoid repairing already-repaired data by default
> 
>
> Key: CASSANDRA-5351
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5351
> Project: Cassandra
>  Issue Type: Task
>  Components: Core
>Reporter: Jonathan Ellis
>Assignee: Lyuben Todorov
>  Labels: repair
> Fix For: 2.1
>
>
> Repair has always built its merkle tree from all the data in a columnfamily, 
> which is guaranteed to work but is inefficient.
> We can improve this by remembering which sstables have already been 
> successfully repaired, and only repairing sstables new since the last repair. 
>  (This automatically makes CASSANDRA-3362 much less of a problem too.)
> The tricky part is, compaction will (if not taught otherwise) mix repaired 
> data together with non-repaired.  So we should segregate unrepaired sstables 
> from the repaired ones.

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


[jira] [Resolved] (CASSANDRA-2264) Restore From Snapshot eg: nodetool restore [filename] | ([keyspace] [columnfamily])

2013-09-20 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston resolved CASSANDRA-2264.
---

Resolution: Not A Problem

A lot has changed since I created this. It doesn't make much sense to pursue 
this today.

> Restore From Snapshot eg: nodetool restore  [filename] | ([keyspace] 
> [columnfamily]) 
> -
>
> Key: CASSANDRA-2264
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2264
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Affects Versions: 0.7.2
>Reporter: Benjamin Coverston
>
> Store additional metadata in the SSTable including:
> generated_by: (From memtable, compaction, or cleanup)
> ancestors: A list of SSTableNames|MD5sum
> When executed it will copy the ancestors from the snapshot directory to the 
> data directory.
> If given Keyspace and ColumnFamily arguments it will attempt to restore all 
> SSTables in the Keyspace/Columnfamily on that node.

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


[jira] [Commented] (CASSANDRA-5351) Avoid repairing already-repaired data by default

2013-09-23 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-5351?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13775569#comment-13775569
 ] 

Benjamin Coverston commented on CASSANDRA-5351:
---

Worst case scenario we hit double the number of SSTables (assuming that 
un-repaired has the same number of levels and a key for the query in each).

Best case scenario you're not updating the same data, so it gets filtered out 
in the interval tree query. 

The interval tree doesn't really discriminate between levels, they're all in 
the same pool, you just get the set of intersected SSTables.

> Avoid repairing already-repaired data by default
> 
>
> Key: CASSANDRA-5351
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5351
> Project: Cassandra
>  Issue Type: Task
>  Components: Core
>Reporter: Jonathan Ellis
>Assignee: Lyuben Todorov
>  Labels: repair
> Fix For: 2.1
>
>
> Repair has always built its merkle tree from all the data in a columnfamily, 
> which is guaranteed to work but is inefficient.
> We can improve this by remembering which sstables have already been 
> successfully repaired, and only repairing sstables new since the last repair. 
>  (This automatically makes CASSANDRA-3362 much less of a problem too.)
> The tricky part is, compaction will (if not taught otherwise) mix repaired 
> data together with non-repaired.  So we should segregate unrepaired sstables 
> from the repaired ones.

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


[jira] [Created] (CASSANDRA-6135) Add beforeChange Notification to Gossiper State.

2013-10-02 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-6135:
-

 Summary: Add beforeChange Notification to Gossiper State.
 Key: CASSANDRA-6135
 URL: https://issues.apache.org/jira/browse/CASSANDRA-6135
 Project: Cassandra
  Issue Type: New Feature
Reporter: Benjamin Coverston
 Attachments: 
0001-New-Gossiper-notification-to-IEndpointStateChangeSub.patch

We would like an internal notification to be fired before state changes happen 
so we can intercept them, and in some cases defer them.



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Updated] (CASSANDRA-6135) Add beforeChange Notification to Gossiper State.

2013-10-02 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-6135:
--

Attachment: 0001-New-Gossiper-notification-to-IEndpointStateChangeSub.patch

Attached is Sergio's patch for 1.2

> Add beforeChange Notification to Gossiper State.
> 
>
> Key: CASSANDRA-6135
> URL: https://issues.apache.org/jira/browse/CASSANDRA-6135
> Project: Cassandra
>  Issue Type: New Feature
>Reporter: Benjamin Coverston
> Attachments: 
> 0001-New-Gossiper-notification-to-IEndpointStateChangeSub.patch
>
>
> We would like an internal notification to be fired before state changes 
> happen so we can intercept them, and in some cases defer them.



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Commented] (CASSANDRA-5201) Cassandra/Hadoop does not support current Hadoop releases

2014-01-06 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-5201?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13863170#comment-13863170
 ] 

Benjamin Coverston commented on CASSANDRA-5201:
---

I'll submit the reporter impl upstream. Thanks [~dvryaboy]!


> Cassandra/Hadoop does not support current Hadoop releases
> -
>
> Key: CASSANDRA-5201
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5201
> Project: Cassandra
>  Issue Type: Bug
>  Components: Hadoop
>Affects Versions: 1.2.0
>Reporter: Brian Jeltema
>Assignee: Dave Brosius
> Attachments: 5201_a.txt, hadoopCompat.patch
>
>
> Using Hadoop 0.22.0 with Cassandra results in the stack trace below.
> It appears that version 0.21+ changed org.apache.hadoop.mapreduce.JobContext
> from a class to an interface.
> Exception in thread "main" java.lang.IncompatibleClassChangeError: Found 
> interface org.apache.hadoop.mapreduce.JobContext, but class was expected
>   at 
> org.apache.cassandra.hadoop.ColumnFamilyInputFormat.getSplits(ColumnFamilyInputFormat.java:103)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:445)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:462)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:357)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1045)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1042)
>   at java.security.AccessController.doPrivileged(Native Method)
>   at javax.security.auth.Subject.doAs(Subject.java:415)
>   at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1153)
>   at org.apache.hadoop.mapreduce.Job.submit(Job.java:1042)
>   at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1062)
>   at MyHadoopApp.run(MyHadoopApp.java:163)
>   at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69)
>   at MyHadoopApp.main(MyHadoopApp.java:82)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:601)
>   at org.apache.hadoop.util.RunJar.main(RunJar.java:192)



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Updated] (CASSANDRA-5201) Cassandra/Hadoop does not support current Hadoop releases

2014-02-11 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-5201:
--

Attachment: hadoopcompat-trunk.patch

Attached trunk-rebased patch.

> Cassandra/Hadoop does not support current Hadoop releases
> -
>
> Key: CASSANDRA-5201
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5201
> Project: Cassandra
>  Issue Type: Bug
>  Components: Hadoop
>Affects Versions: 1.2.0
>Reporter: Brian Jeltema
>Assignee: Benjamin Coverston
> Attachments: 5201_a.txt, hadoopCompat.patch, hadoopcompat-trunk.patch
>
>
> Using Hadoop 0.22.0 with Cassandra results in the stack trace below.
> It appears that version 0.21+ changed org.apache.hadoop.mapreduce.JobContext
> from a class to an interface.
> Exception in thread "main" java.lang.IncompatibleClassChangeError: Found 
> interface org.apache.hadoop.mapreduce.JobContext, but class was expected
>   at 
> org.apache.cassandra.hadoop.ColumnFamilyInputFormat.getSplits(ColumnFamilyInputFormat.java:103)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:445)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:462)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:357)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1045)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1042)
>   at java.security.AccessController.doPrivileged(Native Method)
>   at javax.security.auth.Subject.doAs(Subject.java:415)
>   at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1153)
>   at org.apache.hadoop.mapreduce.Job.submit(Job.java:1042)
>   at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1062)
>   at MyHadoopApp.run(MyHadoopApp.java:163)
>   at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69)
>   at MyHadoopApp.main(MyHadoopApp.java:82)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:601)
>   at org.apache.hadoop.util.RunJar.main(RunJar.java:192)



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Updated] (CASSANDRA-5201) Cassandra/Hadoop does not support current Hadoop releases

2014-02-28 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-5201:
--

Attachment: progressable-fix.patch

Attaching a patch that will fix the issue with progressable when used on the 
jobcontext object. I've tested this with the latest HDP release, and it works 
with pig.

> Cassandra/Hadoop does not support current Hadoop releases
> -
>
> Key: CASSANDRA-5201
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5201
> Project: Cassandra
>  Issue Type: Bug
>  Components: Hadoop
>Affects Versions: 1.2.0
>Reporter: Brian Jeltema
>Assignee: Benjamin Coverston
> Fix For: 2.0.6
>
> Attachments: 5201_a.txt, hadoopCompat.patch, 
> hadoopcompat-trunk.patch, progressable-fix.patch
>
>
> Using Hadoop 0.22.0 with Cassandra results in the stack trace below.
> It appears that version 0.21+ changed org.apache.hadoop.mapreduce.JobContext
> from a class to an interface.
> Exception in thread "main" java.lang.IncompatibleClassChangeError: Found 
> interface org.apache.hadoop.mapreduce.JobContext, but class was expected
>   at 
> org.apache.cassandra.hadoop.ColumnFamilyInputFormat.getSplits(ColumnFamilyInputFormat.java:103)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:445)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:462)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:357)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1045)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1042)
>   at java.security.AccessController.doPrivileged(Native Method)
>   at javax.security.auth.Subject.doAs(Subject.java:415)
>   at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1153)
>   at org.apache.hadoop.mapreduce.Job.submit(Job.java:1042)
>   at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1062)
>   at MyHadoopApp.run(MyHadoopApp.java:163)
>   at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69)
>   at MyHadoopApp.main(MyHadoopApp.java:82)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:601)
>   at org.apache.hadoop.util.RunJar.main(RunJar.java:192)



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Comment Edited] (CASSANDRA-5201) Cassandra/Hadoop does not support current Hadoop releases

2014-02-28 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-5201?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13915996#comment-13915996
 ] 

Benjamin Coverston edited comment on CASSANDRA-5201 at 2/28/14 4:58 PM:


[~moliware],  attaching a patch that will fix the issue with progressable when 
used on the jobcontext object. I've tested this with the latest HDP release, 
and it works with pig. [~brandon.williams] take a look.


was (Author: bcoverston):
Attaching a patch that will fix the issue with progressable when used on the 
jobcontext object. I've tested this with the latest HDP release, and it works 
with pig.

> Cassandra/Hadoop does not support current Hadoop releases
> -
>
> Key: CASSANDRA-5201
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5201
> Project: Cassandra
>  Issue Type: Bug
>  Components: Hadoop
>Affects Versions: 1.2.0
>Reporter: Brian Jeltema
>Assignee: Benjamin Coverston
> Fix For: 2.0.6
>
> Attachments: 5201_a.txt, hadoopCompat.patch, 
> hadoopcompat-trunk.patch, progressable-fix.patch
>
>
> Using Hadoop 0.22.0 with Cassandra results in the stack trace below.
> It appears that version 0.21+ changed org.apache.hadoop.mapreduce.JobContext
> from a class to an interface.
> Exception in thread "main" java.lang.IncompatibleClassChangeError: Found 
> interface org.apache.hadoop.mapreduce.JobContext, but class was expected
>   at 
> org.apache.cassandra.hadoop.ColumnFamilyInputFormat.getSplits(ColumnFamilyInputFormat.java:103)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:445)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:462)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:357)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1045)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1042)
>   at java.security.AccessController.doPrivileged(Native Method)
>   at javax.security.auth.Subject.doAs(Subject.java:415)
>   at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1153)
>   at org.apache.hadoop.mapreduce.Job.submit(Job.java:1042)
>   at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1062)
>   at MyHadoopApp.run(MyHadoopApp.java:163)
>   at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69)
>   at MyHadoopApp.main(MyHadoopApp.java:82)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:601)
>   at org.apache.hadoop.util.RunJar.main(RunJar.java:192)



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)


[jira] [Commented] (CASSANDRA-5201) Cassandra/Hadoop does not support current Hadoop releases

2014-03-03 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-5201?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13918725#comment-13918725
 ] 

Benjamin Coverston commented on CASSANDRA-5201:
---

[~hkropp] I agree that we need to do the second change, but I don't see a need 
to add deployment classifiers. Because we're using Hadoop-Compat (from EB) a 
single binary will work for both.

There's a niggle right now with Progressable that I'm working on, but a single 
binary will work for new and legacy deployments.

> Cassandra/Hadoop does not support current Hadoop releases
> -
>
> Key: CASSANDRA-5201
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5201
> Project: Cassandra
>  Issue Type: Bug
>  Components: Hadoop
>Affects Versions: 1.2.0
>Reporter: Brian Jeltema
>Assignee: Benjamin Coverston
> Fix For: 2.0.6
>
> Attachments: 5201_a.txt, hadoopCompat.patch, 
> hadoopcompat-trunk.patch, progressable-fix.patch
>
>
> Using Hadoop 0.22.0 with Cassandra results in the stack trace below.
> It appears that version 0.21+ changed org.apache.hadoop.mapreduce.JobContext
> from a class to an interface.
> Exception in thread "main" java.lang.IncompatibleClassChangeError: Found 
> interface org.apache.hadoop.mapreduce.JobContext, but class was expected
>   at 
> org.apache.cassandra.hadoop.ColumnFamilyInputFormat.getSplits(ColumnFamilyInputFormat.java:103)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:445)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:462)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:357)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1045)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1042)
>   at java.security.AccessController.doPrivileged(Native Method)
>   at javax.security.auth.Subject.doAs(Subject.java:415)
>   at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1153)
>   at org.apache.hadoop.mapreduce.Job.submit(Job.java:1042)
>   at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1062)
>   at MyHadoopApp.run(MyHadoopApp.java:163)
>   at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69)
>   at MyHadoopApp.main(MyHadoopApp.java:82)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:601)
>   at org.apache.hadoop.util.RunJar.main(RunJar.java:192)



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (CASSANDRA-5201) Cassandra/Hadoop does not support current Hadoop releases

2014-03-04 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-5201?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13919579#comment-13919579
 ] 

Benjamin Coverston commented on CASSANDRA-5201:
---

Take a look at the code, it works for Hadoop1 and Hadoop2 without 
recompliation, and without shipping two sets of dependencies. Basically it 
detects the current version of Hadoop that you're running and dynamically 
determines which TaskAttemptContext to use, the Class, or the Interface. 
There's no need to use deployment classifiers to solve this particular problem.

> Cassandra/Hadoop does not support current Hadoop releases
> -
>
> Key: CASSANDRA-5201
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5201
> Project: Cassandra
>  Issue Type: Bug
>  Components: Hadoop
>Affects Versions: 1.2.0
>Reporter: Brian Jeltema
>Assignee: Benjamin Coverston
> Fix For: 2.0.6
>
> Attachments: 5201_a.txt, hadoopCompat.patch, 
> hadoopcompat-trunk.patch, progressable-fix.patch
>
>
> Using Hadoop 0.22.0 with Cassandra results in the stack trace below.
> It appears that version 0.21+ changed org.apache.hadoop.mapreduce.JobContext
> from a class to an interface.
> Exception in thread "main" java.lang.IncompatibleClassChangeError: Found 
> interface org.apache.hadoop.mapreduce.JobContext, but class was expected
>   at 
> org.apache.cassandra.hadoop.ColumnFamilyInputFormat.getSplits(ColumnFamilyInputFormat.java:103)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:445)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:462)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:357)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1045)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1042)
>   at java.security.AccessController.doPrivileged(Native Method)
>   at javax.security.auth.Subject.doAs(Subject.java:415)
>   at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1153)
>   at org.apache.hadoop.mapreduce.Job.submit(Job.java:1042)
>   at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1062)
>   at MyHadoopApp.run(MyHadoopApp.java:163)
>   at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69)
>   at MyHadoopApp.main(MyHadoopApp.java:82)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:601)
>   at org.apache.hadoop.util.RunJar.main(RunJar.java:192)



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Updated] (CASSANDRA-5201) Cassandra/Hadoop does not support current Hadoop releases

2014-03-04 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-5201:
--

Attachment: progressable-wrapper.patch

Attaching a patch that brings in hadoop-compat, and adds the progressable 
wrapper to it. I'm going to submit this upstream to the elephant bird project, 
so we should be able to remove this code and add the dependency in the future.

> Cassandra/Hadoop does not support current Hadoop releases
> -
>
> Key: CASSANDRA-5201
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5201
> Project: Cassandra
>  Issue Type: Bug
>  Components: Hadoop
>Affects Versions: 1.2.0
>Reporter: Brian Jeltema
>Assignee: Benjamin Coverston
> Fix For: 2.0.6
>
> Attachments: 5201_a.txt, hadoopCompat.patch, 
> hadoopcompat-trunk.patch, progressable-fix.patch, progressable-wrapper.patch
>
>
> Using Hadoop 0.22.0 with Cassandra results in the stack trace below.
> It appears that version 0.21+ changed org.apache.hadoop.mapreduce.JobContext
> from a class to an interface.
> Exception in thread "main" java.lang.IncompatibleClassChangeError: Found 
> interface org.apache.hadoop.mapreduce.JobContext, but class was expected
>   at 
> org.apache.cassandra.hadoop.ColumnFamilyInputFormat.getSplits(ColumnFamilyInputFormat.java:103)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:445)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:462)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:357)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1045)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1042)
>   at java.security.AccessController.doPrivileged(Native Method)
>   at javax.security.auth.Subject.doAs(Subject.java:415)
>   at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1153)
>   at org.apache.hadoop.mapreduce.Job.submit(Job.java:1042)
>   at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1062)
>   at MyHadoopApp.run(MyHadoopApp.java:163)
>   at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69)
>   at MyHadoopApp.main(MyHadoopApp.java:82)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:601)
>   at org.apache.hadoop.util.RunJar.main(RunJar.java:192)



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Updated] (CASSANDRA-5201) Cassandra/Hadoop does not support current Hadoop releases

2014-03-04 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-5201:
--

Attachment: (was: progressable-wrapper.patch)

> Cassandra/Hadoop does not support current Hadoop releases
> -
>
> Key: CASSANDRA-5201
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5201
> Project: Cassandra
>  Issue Type: Bug
>  Components: Hadoop
>Affects Versions: 1.2.0
>Reporter: Brian Jeltema
>Assignee: Benjamin Coverston
> Fix For: 2.0.6
>
> Attachments: 5201_a.txt, hadoopCompat.patch, 
> hadoopcompat-trunk.patch, progressable-fix.patch, progressable-wrapper.patch
>
>
> Using Hadoop 0.22.0 with Cassandra results in the stack trace below.
> It appears that version 0.21+ changed org.apache.hadoop.mapreduce.JobContext
> from a class to an interface.
> Exception in thread "main" java.lang.IncompatibleClassChangeError: Found 
> interface org.apache.hadoop.mapreduce.JobContext, but class was expected
>   at 
> org.apache.cassandra.hadoop.ColumnFamilyInputFormat.getSplits(ColumnFamilyInputFormat.java:103)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:445)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:462)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:357)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1045)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1042)
>   at java.security.AccessController.doPrivileged(Native Method)
>   at javax.security.auth.Subject.doAs(Subject.java:415)
>   at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1153)
>   at org.apache.hadoop.mapreduce.Job.submit(Job.java:1042)
>   at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1062)
>   at MyHadoopApp.run(MyHadoopApp.java:163)
>   at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69)
>   at MyHadoopApp.main(MyHadoopApp.java:82)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:601)
>   at org.apache.hadoop.util.RunJar.main(RunJar.java:192)



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Updated] (CASSANDRA-5201) Cassandra/Hadoop does not support current Hadoop releases

2014-03-04 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-5201:
--

Attachment: progressable-wrapper.patch

Updated progressable-wrapper.patch to conform to current namespaces.

> Cassandra/Hadoop does not support current Hadoop releases
> -
>
> Key: CASSANDRA-5201
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5201
> Project: Cassandra
>  Issue Type: Bug
>  Components: Hadoop
>Affects Versions: 1.2.0
>Reporter: Brian Jeltema
>Assignee: Benjamin Coverston
> Fix For: 2.0.6
>
> Attachments: 5201_a.txt, hadoopCompat.patch, 
> hadoopcompat-trunk.patch, progressable-fix.patch, progressable-wrapper.patch
>
>
> Using Hadoop 0.22.0 with Cassandra results in the stack trace below.
> It appears that version 0.21+ changed org.apache.hadoop.mapreduce.JobContext
> from a class to an interface.
> Exception in thread "main" java.lang.IncompatibleClassChangeError: Found 
> interface org.apache.hadoop.mapreduce.JobContext, but class was expected
>   at 
> org.apache.cassandra.hadoop.ColumnFamilyInputFormat.getSplits(ColumnFamilyInputFormat.java:103)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:445)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:462)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:357)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1045)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1042)
>   at java.security.AccessController.doPrivileged(Native Method)
>   at javax.security.auth.Subject.doAs(Subject.java:415)
>   at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1153)
>   at org.apache.hadoop.mapreduce.Job.submit(Job.java:1042)
>   at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1062)
>   at MyHadoopApp.run(MyHadoopApp.java:163)
>   at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69)
>   at MyHadoopApp.main(MyHadoopApp.java:82)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:601)
>   at org.apache.hadoop.util.RunJar.main(RunJar.java:192)



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Updated] (CASSANDRA-5201) Cassandra/Hadoop does not support current Hadoop releases

2014-03-04 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-5201:
--

Attachment: (was: progressable-wrapper.patch)

> Cassandra/Hadoop does not support current Hadoop releases
> -
>
> Key: CASSANDRA-5201
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5201
> Project: Cassandra
>  Issue Type: Bug
>  Components: Hadoop
>Affects Versions: 1.2.0
>Reporter: Brian Jeltema
>Assignee: Benjamin Coverston
> Fix For: 2.0.6
>
> Attachments: 5201_a.txt, hadoopCompat.patch, 
> hadoopcompat-trunk.patch, progressable-fix.patch
>
>
> Using Hadoop 0.22.0 with Cassandra results in the stack trace below.
> It appears that version 0.21+ changed org.apache.hadoop.mapreduce.JobContext
> from a class to an interface.
> Exception in thread "main" java.lang.IncompatibleClassChangeError: Found 
> interface org.apache.hadoop.mapreduce.JobContext, but class was expected
>   at 
> org.apache.cassandra.hadoop.ColumnFamilyInputFormat.getSplits(ColumnFamilyInputFormat.java:103)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:445)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:462)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:357)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1045)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1042)
>   at java.security.AccessController.doPrivileged(Native Method)
>   at javax.security.auth.Subject.doAs(Subject.java:415)
>   at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1153)
>   at org.apache.hadoop.mapreduce.Job.submit(Job.java:1042)
>   at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1062)
>   at MyHadoopApp.run(MyHadoopApp.java:163)
>   at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69)
>   at MyHadoopApp.main(MyHadoopApp.java:82)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:601)
>   at org.apache.hadoop.util.RunJar.main(RunJar.java:192)



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Updated] (CASSANDRA-5201) Cassandra/Hadoop does not support current Hadoop releases

2014-03-04 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-5201:
--

Attachment: progressable-wrapper.patch

I removed the hadoop-compat dependency, as maven couldn't resolve the 
dependencies, reverted to the old version. This won't stop our input/output 
formats from being compatible with past and future releases.

> Cassandra/Hadoop does not support current Hadoop releases
> -
>
> Key: CASSANDRA-5201
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5201
> Project: Cassandra
>  Issue Type: Bug
>  Components: Hadoop
>Affects Versions: 1.2.0
>Reporter: Brian Jeltema
>Assignee: Benjamin Coverston
> Fix For: 2.0.6
>
> Attachments: 5201_a.txt, hadoopCompat.patch, 
> hadoopcompat-trunk.patch, progressable-fix.patch, progressable-wrapper.patch
>
>
> Using Hadoop 0.22.0 with Cassandra results in the stack trace below.
> It appears that version 0.21+ changed org.apache.hadoop.mapreduce.JobContext
> from a class to an interface.
> Exception in thread "main" java.lang.IncompatibleClassChangeError: Found 
> interface org.apache.hadoop.mapreduce.JobContext, but class was expected
>   at 
> org.apache.cassandra.hadoop.ColumnFamilyInputFormat.getSplits(ColumnFamilyInputFormat.java:103)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:445)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:462)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:357)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1045)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1042)
>   at java.security.AccessController.doPrivileged(Native Method)
>   at javax.security.auth.Subject.doAs(Subject.java:415)
>   at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1153)
>   at org.apache.hadoop.mapreduce.Job.submit(Job.java:1042)
>   at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1062)
>   at MyHadoopApp.run(MyHadoopApp.java:163)
>   at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69)
>   at MyHadoopApp.main(MyHadoopApp.java:82)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:601)
>   at org.apache.hadoop.util.RunJar.main(RunJar.java:192)



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Updated] (CASSANDRA-5201) Cassandra/Hadoop does not support current Hadoop releases

2014-03-05 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-5201:
--

Attachment: hadoop-compat-2.1-merge.patch

Patch for 2.1 branch

> Cassandra/Hadoop does not support current Hadoop releases
> -
>
> Key: CASSANDRA-5201
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5201
> Project: Cassandra
>  Issue Type: Bug
>  Components: Hadoop
>Affects Versions: 1.2.0
>Reporter: Brian Jeltema
>Assignee: Benjamin Coverston
> Fix For: 2.0.6
>
> Attachments: 5201_a.txt, hadoop-compat-2.1-merge.patch, 
> hadoopCompat.patch, hadoopcompat-trunk.patch, progressable-fix.patch, 
> progressable-wrapper.patch
>
>
> Using Hadoop 0.22.0 with Cassandra results in the stack trace below.
> It appears that version 0.21+ changed org.apache.hadoop.mapreduce.JobContext
> from a class to an interface.
> Exception in thread "main" java.lang.IncompatibleClassChangeError: Found 
> interface org.apache.hadoop.mapreduce.JobContext, but class was expected
>   at 
> org.apache.cassandra.hadoop.ColumnFamilyInputFormat.getSplits(ColumnFamilyInputFormat.java:103)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:445)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:462)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:357)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1045)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1042)
>   at java.security.AccessController.doPrivileged(Native Method)
>   at javax.security.auth.Subject.doAs(Subject.java:415)
>   at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1153)
>   at org.apache.hadoop.mapreduce.Job.submit(Job.java:1042)
>   at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1062)
>   at MyHadoopApp.run(MyHadoopApp.java:163)
>   at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69)
>   at MyHadoopApp.main(MyHadoopApp.java:82)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:601)
>   at org.apache.hadoop.util.RunJar.main(RunJar.java:192)



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Created] (CASSANDRA-4665) Add Sanity Checks for User Modifiable Settings

2012-09-13 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-4665:
-

 Summary: Add Sanity Checks for User Modifiable Settings
 Key: CASSANDRA-4665
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4665
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Reporter: Benjamin Coverston
Priority: Trivial


I've looked at a several environments that have had some problems that may have 
been more easily identified if there was some type of warning or error thrown 
if some of the user modifiable settings had some sanity check associated with 
it.

In one instance I saw a cluster that was having memory issues. After looking at 
the YAML they had:

index_interval: 32

I'm not sure why anyone would set this lower than the default. They didn't even 
know what the setting did. Perhaps if we issued a warning on startup in cases 
like this it could have been resolved more quickly and easily.


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


[jira] [Created] (CASSANDRA-4745) Required field 'keyspace' was not present! when modifying a keyspace

2012-10-01 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-4745:
-

 Summary:  Required field 'keyspace' was not present! when 
modifying a keyspace
 Key: CASSANDRA-4745
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4745
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.1.4
Reporter: Benjamin Coverston


cassandra-cli gets stuck after updating an existing keyspace.

To reproduce, create the KS/CF through cassandra-stress then update the 
keyspace as shown below in the CLI.


notroot@datastax-training:~/cassandra$ bin/cassandra-cli 
Connected to: "Test Cluster" on 127.0.0.1/9160
Welcome to Cassandra CLI version 1.1.4

Type 'help;' or '?' for help.
Type 'quit;' or 'exit;' to quit.

[default@unknown] update keyspace Keyspace1 
... with placement_strategy = 'SimpleStrategy'
... and strategy_options = {replication_factor:2};
Not authenticated to a working keyspace.
fa270c1d-7c85-3dfc-98b0-db0755f853f3
Waiting for schema agreement...
... schemas agree across the cluster
org.apache.thrift.protocol.TProtocolException: Required field 'keyspace' was 
not present! Struct: describe_keyspace_args(keyspace:null)
[default@unknown] 
[default@unknown] use Keyspace1;
Login failure. Did you specify 'keyspace', 'username' and 'password'?


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


[jira] [Created] (CASSANDRA-4774) IndexOutOfBoundsException in org.apache.cassandra.gms.Gossiper.sendGossip

2012-10-06 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-4774:
-

 Summary: IndexOutOfBoundsException in 
org.apache.cassandra.gms.Gossiper.sendGossip
 Key: CASSANDRA-4774
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4774
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.0.0
 Environment: Saw this when looking through some logs in version 1.0.0 
system was under a lot of load.
Reporter: Benjamin Coverston


ERROR [GossipTasks:1] 2012-10-06 10:47:48,390 Gossiper.java (line 169) Gossip 
error
java.lang.IndexOutOfBoundsException: Index: 13, Size: 5
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at org.apache.cassandra.gms.Gossiper.sendGossip(Gossiper.java:541)
at 
org.apache.cassandra.gms.Gossiper.doGossipToUnreachableMember(Gossiper.java:575)
at org.apache.cassandra.gms.Gossiper.access$300(Gossiper.java:59)
at org.apache.cassandra.gms.Gossiper$GossipTask.run(Gossiper.java:141)
at 
org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor$UncomplainingRunnable.run(DebuggableScheduledThreadPoolExecutor.java:79)
at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at 
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)
at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)
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.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


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

2012-10-23 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston reassigned CASSANDRA-4784:
-

Assignee: Benjamin Coverston

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

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


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

2012-10-29 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston commented on CASSANDRA-4784:
---

I have a working implementation of this for STCS, one issue is it has the 
unfortunate (or fortunate) side effect of also partitioning up the SSTables for 
LCS as I put the implementation inside the CompactionTask making the currently 
(small) SSTables much smaller.

I feel like this puts us at a crossroads: Should we create a completely 
partitioned data strategy for vnodes (a directory per vnode), or should we 
continue to mix the data files in a single data directory?

L0 to L1 compactions become particularly hairy if we do that unless we first 
partition the L0 SSTables then subsequently compact the partitioned L0 with L1 
for the vnode.


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

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


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

2012-11-05 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-4784:
--

Attachment: 4784.patch

> Create separate sstables for each token range handled by a node
> ---
>
> Key: CASSANDRA-4784
> URL: https://issues.apache.org/jira/browse/CASSANDRA-4784
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Affects Versions: 1.2.0 beta 1
>Reporter: sankalp kohli
>Assignee: Benjamin Coverston
>Priority: Minor
>  Labels: perfomance
> Fix For: 1.3
>
> Attachments: 4784.patch
>
>
> Currently, each sstable has data for all the ranges that node is handling. If 
> we change that and rather have separate sstables for each range that node is 
> handling, it can lead to some improvements.
> Improvements
> 1) Node rebuild will be very fast as sstables can be directly copied over to 
> the bootstrapping node. It will minimize any application level logic. We can 
> directly use Linux native methods to transfer sstables without using CPU and 
> putting less pressure on the serving node. I think in theory it will be the 
> fastest way to transfer data. 
> 2) Backup can only transfer sstables for a node which belong to its primary 
> keyrange. 
> 3) ETL process can only copy one replica of data and will be much faster. 
> Changes:
> We can split the writes into multiple memtables for each range it is 
> handling. The sstables being flushed from these can have details of which 
> range of data it is handling.
> There will be no change I think for any reads as they work with interleaved 
> data anyway. But may be we can improve there as well? 
> Complexities:
> The change does not look very complicated. I am not taking into account how 
> it will work when ranges are being changed for nodes. 
> Vnodes might make this work more complicated. We can also have a bit on each 
> sstable which says whether it is primary data or not. 

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


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

2012-11-08 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston commented on CASSANDRA-4784:
---

Like this?

https://github.com/bcoverston/apache-hosted-cassandra/branches/4784

> Create separate sstables for each token range handled by a node
> ---
>
> Key: CASSANDRA-4784
> URL: https://issues.apache.org/jira/browse/CASSANDRA-4784
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Affects Versions: 1.2.0 beta 1
>Reporter: sankalp kohli
>Assignee: Benjamin Coverston
>Priority: Minor
>  Labels: perfomance
> Fix For: 1.3
>
> Attachments: 4784.patch
>
>
> Currently, each sstable has data for all the ranges that node is handling. If 
> we change that and rather have separate sstables for each range that node is 
> handling, it can lead to some improvements.
> Improvements
> 1) Node rebuild will be very fast as sstables can be directly copied over to 
> the bootstrapping node. It will minimize any application level logic. We can 
> directly use Linux native methods to transfer sstables without using CPU and 
> putting less pressure on the serving node. I think in theory it will be the 
> fastest way to transfer data. 
> 2) Backup can only transfer sstables for a node which belong to its primary 
> keyrange. 
> 3) ETL process can only copy one replica of data and will be much faster. 
> Changes:
> We can split the writes into multiple memtables for each range it is 
> handling. The sstables being flushed from these can have details of which 
> range of data it is handling.
> There will be no change I think for any reads as they work with interleaved 
> data anyway. But may be we can improve there as well? 
> Complexities:
> The change does not look very complicated. I am not taking into account how 
> it will work when ranges are being changed for nodes. 
> Vnodes might make this work more complicated. We can also have a bit on each 
> sstable which says whether it is primary data or not. 

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


[jira] [Created] (CASSANDRA-5484) Support custom secondary indexes in CQL

2013-04-16 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-5484:
-

 Summary: Support custom secondary indexes in CQL
 Key: CASSANDRA-5484
 URL: https://issues.apache.org/jira/browse/CASSANDRA-5484
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.2.4
Reporter: Benjamin Coverston


Through thrift users can add custom secondary indexes to the column metadata.

The following syntax is used in PLSQL, and I think we could use something 
similar.

CREATE INDEX  ON  (COLUMN) [INDEXTYPE IS () [PARAMETERS 
([, ])]

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


[jira] [Updated] (CASSANDRA-5484) Support custom secondary indexes in CQL

2013-04-16 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-5484:
--

Description: 
Through thrift users can add custom secondary indexes to the column metadata.

The following syntax is used in PLSQL, and I think we could use something 
similar.

CREATE INDEX  ON  () [INDEXTYPE IS () 
[PARAMETERS ([, ])]

  was:
Through thrift users can add custom secondary indexes to the column metadata.

The following syntax is used in PLSQL, and I think we could use something 
similar.

CREATE INDEX  ON  (COLUMN) [INDEXTYPE IS () [PARAMETERS 
([, ])]


> Support custom secondary indexes in CQL
> ---
>
> Key: CASSANDRA-5484
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5484
> Project: Cassandra
>  Issue Type: Bug
>  Components: Core
>Affects Versions: 1.2.4
>Reporter: Benjamin Coverston
>
> Through thrift users can add custom secondary indexes to the column metadata.
> The following syntax is used in PLSQL, and I think we could use something 
> similar.
> CREATE INDEX  ON  () [INDEXTYPE IS () 
> [PARAMETERS ([, ])]

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


[jira] [Commented] (CASSANDRA-5484) Support custom secondary indexes in CQL

2013-04-16 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-5484?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13633442#comment-13633442
 ] 

Benjamin Coverston commented on CASSANDRA-5484:
---

wfm

> Support custom secondary indexes in CQL
> ---
>
> Key: CASSANDRA-5484
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5484
> Project: Cassandra
>  Issue Type: Bug
>  Components: Core
>Affects Versions: 1.2.4
>Reporter: Benjamin Coverston
>
> Through thrift users can add custom secondary indexes to the column metadata.
> The following syntax is used in PLSQL, and I think we could use something 
> similar.
> CREATE INDEX  ON  () [INDEXTYPE IS () 
> [PARAMETERS ([, ])]

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


[jira] [Created] (CASSANDRA-5547) Multi-threaded scrub

2013-05-07 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-5547:
-

 Summary: Multi-threaded scrub
 Key: CASSANDRA-5547
 URL: https://issues.apache.org/jira/browse/CASSANDRA-5547
 Project: Cassandra
  Issue Type: Improvement
Reporter: Benjamin Coverston


Scrub (especially offline) could benefit from being multi-threaded, especially 
in the case where the SSTables are compressed.

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


[jira] [Created] (CASSANDRA-5553) Enforce load ordering for keyspaces

2013-05-09 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-5553:
-

 Summary: Enforce load ordering for keyspaces
 Key: CASSANDRA-5553
 URL: https://issues.apache.org/jira/browse/CASSANDRA-5553
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.2.4
Reporter: Benjamin Coverston
Assignee: Benjamin Coverston


I'm working on an extension to C* that would benefit from being able to load 
column families in a particular order. Right now load order is determined by a 
keyset which ends up being random.

I would like to allow the user to define a custom comparator to define load 
order.

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


[jira] [Updated] (CASSANDRA-5553) Deterministic load ordering for keyspaces

2013-05-09 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-5553:
--

Summary: Deterministic load ordering for keyspaces  (was: Enforce load 
ordering for keyspaces)

> Deterministic load ordering for keyspaces
> -
>
> Key: CASSANDRA-5553
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5553
> Project: Cassandra
>  Issue Type: Bug
>Affects Versions: 1.2.4
>Reporter: Benjamin Coverston
>Assignee: Benjamin Coverston
>
> I'm working on an extension to C* that would benefit from being able to load 
> column families in a particular order. Right now load order is determined by 
> a keyset which ends up being random.
> I would like to allow the user to define a custom comparator to define load 
> order.

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


[jira] [Updated] (CASSANDRA-5553) Deterministic load ordering for keyspaces

2013-05-09 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-5553:
--

Description: I'm working on an extension to C* that would benefit from 
being able to load column families in a particular order. Right now load order 
is determined by a keyset which ends up being random. If we made this 
deterministic I could get my keyspace loaded before the other CF needs it.  
(was: I'm working on an extension to C* that would benefit from being able to 
load column families in a particular order. Right now load order is determined 
by a keyset which ends up being random.

I would like to allow the user to define a custom comparator to define load 
order.)

> Deterministic load ordering for keyspaces
> -
>
> Key: CASSANDRA-5553
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5553
> Project: Cassandra
>  Issue Type: Bug
>Affects Versions: 1.2.4
>Reporter: Benjamin Coverston
>Assignee: Benjamin Coverston
>
> I'm working on an extension to C* that would benefit from being able to load 
> column families in a particular order. Right now load order is determined by 
> a keyset which ends up being random. If we made this deterministic I could 
> get my keyspace loaded before the other CF needs it.

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


[jira] [Created] (CASSANDRA-5614) W/O specified columns ASPCSI does not get notified of deletes

2013-06-04 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-5614:
-

 Summary: W/O specified columns ASPCSI does not get notified of 
deletes
 Key: CASSANDRA-5614
 URL: https://issues.apache.org/jira/browse/CASSANDRA-5614
 Project: Cassandra
  Issue Type: Bug
Affects Versions: 1.2.5, 2.0
Reporter: Benjamin Coverston


I'm working on a secondary index implementation based on the composite index 
type.

AbstractSimplePerColumnSecondaryIndex.java#delete is not called when CQL delete 
statements do not specify columns.

When I specify columns it is called. Pretty sure this is a bug.

Setup:
{code}
cqlsh> create KEYSPACE foo WITH replication = {'class': 'SimpleStrategy' , 
'replication_factor': 1};
cqlsh> use foo;
cqlsh:foo> CREATE TABLE albums (artist text, album text, rating int, release 
int, PRIMARY KEY (artist, album));
cqlsh:foo> CREATE INDEX ON albums (rating);
{code}

{code}
cqlsh:foo> insert into albums (artist, album, rating, release) VALUES 
('artist', 'album', 1, 2);
{code}

Does not get called here:
{code}
cqlsh:foo> DELETE FROM albums where artist='artist' and album='album';
{code}

{code}
cqlsh:foo> insert into albums (artist, album, rating, release) VALUES 
('artist', 'album', 1, 2);
{code}

gets called here:
{code}
cqlsh:foo> DELETE rating FROM albums where artist='artist' and album='album';
{code}


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


[jira] [Commented] (CASSANDRA-5611) OS X puts an icon for Cassandra in the dock

2013-06-04 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-5611?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=1367#comment-1367
 ] 

Benjamin Coverston commented on CASSANDRA-5611:
---

Nothing here:

{code}
Ben-Coverstons-MacBook-Pro:riptano-cassandra bcoverston$ java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06-451-11M4406)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01-451, mixed mode)
{code}

Also not getting anything after upgrading:

{code}
Ben-Coverstons-MacBook-Pro:riptano-cassandra bcoverston$ java -version
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b12)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)
{code}

> OS X puts an icon for Cassandra in the dock
> ---
>
> Key: CASSANDRA-5611
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5611
> Project: Cassandra
>  Issue Type: Improvement
>Affects Versions: 1.1.12, 1.2.5, 2.0
> Environment: OS X, JDK 1.7
>Reporter: Aleksey Yeschenko
>Priority: Trivial
>
> "Even when a Java program doesn't display any windows or other visible 
> elements, if it accesses the AWT subsystem in some way (e.g., to do image 
> processing internally), OS X will still put an icon for the Java program in 
> the dock as if it were a GUI-based app. (When the program quits, the dock 
> icon goes away as usual.)"
> (more details at 
> http://hints.macworld.com/article.php?story=20071208235352641)
> Can't remember when it started happening, but it wasn't always the case for 
> Cassandra. Now launching Cassandra puts an icon in the dock, and, worse, 
> running ant test puts an icon in the dock for each test, stealing focus, too. 
> This is extremely annoying.
> I ninja-d a workaround (-Djava.awt.headless=true) for ant test in 
> 99824496aa359fcbe5e71f4e54f2738f09524a87, but we should try and find the real 
> source of this (my guess is that some dependency of ours is to blame).

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


[jira] [Created] (CASSANDRA-5615) Allow Custom Indexes to Index Collections

2013-06-04 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-5615:
-

 Summary: Allow Custom Indexes to Index Collections
 Key: CASSANDRA-5615
 URL: https://issues.apache.org/jira/browse/CASSANDRA-5615
 Project: Cassandra
  Issue Type: Improvement
Affects Versions: 1.2.5
Reporter: Benjamin Coverston


Creating a custom index type that will index collections. Attaching a patch 
that bypasses an internal validation check preventing this type of index for 
custom indexes.

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


[jira] [Updated] (CASSANDRA-5615) Allow Custom Indexes to Index Collections

2013-06-04 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-5615:
--

Attachment: custom-index-keys.patch

Allows for custom indexes on collections

> Allow Custom Indexes to Index Collections
> -
>
> Key: CASSANDRA-5615
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5615
> Project: Cassandra
>  Issue Type: Improvement
>Affects Versions: 1.2.5
>Reporter: Benjamin Coverston
> Attachments: custom-index-keys.patch
>
>
> Creating a custom index type that will index collections. Attaching a patch 
> that bypasses an internal validation check preventing this type of index for 
> custom indexes.

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


[jira] [Commented] (CASSANDRA-5614) W/O specified columns ASPCSI does not get notified of deletes

2013-06-05 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-5614?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13676057#comment-13676057
 ] 

Benjamin Coverston commented on CASSANDRA-5614:
---

Instead of expanding them, at least for the purposes of what I'm doing I would 
be OK with just getting keybytes, and column if column had a special marker for 
a row tombstone.

> W/O specified columns ASPCSI does not get notified of deletes
> -
>
> Key: CASSANDRA-5614
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5614
> Project: Cassandra
>  Issue Type: Bug
>Affects Versions: 1.2.0
>Reporter: Benjamin Coverston
>Assignee: Sam Overton
>Priority: Minor
> Fix For: 1.2.6
>
>
> I'm working on a secondary index implementation based on the composite index 
> type.
> AbstractSimplePerColumnSecondaryIndex.java#delete is not called when CQL 
> delete statements do not specify columns.
> When I specify columns it is called. Pretty sure this is a bug.
> Setup:
> {code}
> cqlsh> create KEYSPACE foo WITH replication = {'class': 'SimpleStrategy' , 
> 'replication_factor': 1};
> cqlsh> use foo;
> cqlsh:foo> CREATE TABLE albums (artist text, album text, rating int, release 
> int, PRIMARY KEY (artist, album));
> cqlsh:foo> CREATE INDEX ON albums (rating);
> {code}
> {code}
> cqlsh:foo> insert into albums (artist, album, rating, release) VALUES 
> ('artist', 'album', 1, 2);
> {code}
> Does not get called here:
> {code}
> cqlsh:foo> DELETE FROM albums where artist='artist' and album='album';
> {code}
> {code}
> cqlsh:foo> insert into albums (artist, album, rating, release) VALUES 
> ('artist', 'album', 1, 2);
> {code}
> gets called here:
> {code}
> cqlsh:foo> DELETE rating FROM albums where artist='artist' and album='album';
> {code}

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


[jira] [Comment Edited] (CASSANDRA-5614) W/O specified columns ASPCSI does not get notified of deletes

2013-06-05 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-5614?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13676057#comment-13676057
 ] 

Benjamin Coverston edited comment on CASSANDRA-5614 at 6/5/13 3:55 PM:
---

Instead of expanding them, at least for the purposes of what I'm doing, I would 
be OK with just getting keybytes, and column if column had a special marker for 
a row tombstone. That way I know the whole row was deleted up front (and I can 
take one action) rather than getting a notification per column.

  was (Author: bcoverston):
Instead of expanding them, at least for the purposes of what I'm doing I 
would be OK with just getting keybytes, and column if column had a special 
marker for a row tombstone.
  
> W/O specified columns ASPCSI does not get notified of deletes
> -
>
> Key: CASSANDRA-5614
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5614
> Project: Cassandra
>  Issue Type: Bug
>Affects Versions: 1.2.0
>Reporter: Benjamin Coverston
>Assignee: Sam Overton
>Priority: Minor
> Fix For: 1.2.6
>
>
> I'm working on a secondary index implementation based on the composite index 
> type.
> AbstractSimplePerColumnSecondaryIndex.java#delete is not called when CQL 
> delete statements do not specify columns.
> When I specify columns it is called. Pretty sure this is a bug.
> Setup:
> {code}
> cqlsh> create KEYSPACE foo WITH replication = {'class': 'SimpleStrategy' , 
> 'replication_factor': 1};
> cqlsh> use foo;
> cqlsh:foo> CREATE TABLE albums (artist text, album text, rating int, release 
> int, PRIMARY KEY (artist, album));
> cqlsh:foo> CREATE INDEX ON albums (rating);
> {code}
> {code}
> cqlsh:foo> insert into albums (artist, album, rating, release) VALUES 
> ('artist', 'album', 1, 2);
> {code}
> Does not get called here:
> {code}
> cqlsh:foo> DELETE FROM albums where artist='artist' and album='album';
> {code}
> {code}
> cqlsh:foo> insert into albums (artist, album, rating, release) VALUES 
> ('artist', 'album', 1, 2);
> {code}
> gets called here:
> {code}
> cqlsh:foo> DELETE rating FROM albums where artist='artist' and album='album';
> {code}

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


[jira] [Updated] (CASSANDRA-6219) Add cause for IOException in OutboundTCPConnectio.WriteConnected

2013-10-18 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-6219:
--

Attachment: 0001-added-cause-to-logging-message.patch

> Add cause for IOException in OutboundTCPConnectio.WriteConnected
> 
>
> Key: CASSANDRA-6219
> URL: https://issues.apache.org/jira/browse/CASSANDRA-6219
> Project: Cassandra
>  Issue Type: Bug
>Reporter: Benjamin Coverston
>Priority: Minor
> Attachments: 0001-added-cause-to-logging-message.patch
>
>
> Can help for debugging connection issues. Attaching patch for 1.2.



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Created] (CASSANDRA-6219) Add cause for IOException in OutboundTCPConnectio.WriteConnected

2013-10-18 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-6219:
-

 Summary: Add cause for IOException in 
OutboundTCPConnectio.WriteConnected
 Key: CASSANDRA-6219
 URL: https://issues.apache.org/jira/browse/CASSANDRA-6219
 Project: Cassandra
  Issue Type: Bug
Reporter: Benjamin Coverston
Priority: Minor


Can help for debugging connection issues. Attaching patch for 1.2.



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Commented] (CASSANDRA-6219) Add cause for IOException in OutboundTCPConnectio.WriteConnected

2013-10-18 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-6219?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13799664#comment-13799664
 ] 

Benjamin Coverston commented on CASSANDRA-6219:
---

I think you're right, reading the IOException code agrees with what you're 
saying. It _may_ not be in the stack trace, but it is in the detail message.

> Add cause for IOException in OutboundTCPConnectio.WriteConnected
> 
>
> Key: CASSANDRA-6219
> URL: https://issues.apache.org/jira/browse/CASSANDRA-6219
> Project: Cassandra
>  Issue Type: Bug
>Reporter: Benjamin Coverston
>Priority: Minor
> Attachments: 0001-added-cause-to-logging-message.patch
>
>
> Can help for debugging connection issues. Attaching patch for 1.2.



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Updated] (CASSANDRA-5201) Cassandra/Hadoop does not support current Hadoop releases

2013-12-03 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-5201:
--

Attachment: hadoopCompat.patch

Poking around at other projects this generally gets solved in one of two ways: 
Ship two versions of their Hadoop integrations (one compiled for the old, and 
one compiled for the new), or use a little reflection to make things work 
across the board.

I'm attaching a patch that uses the hadoopCompat subproject of elephantbird. 
This will allow us to compile a single binary and run with the new and old 
context objects.

I've tested this patch with HDP 2.0, and Apache Hadoop 1.0.4 and it works fine 
with both (including Hive in DSE). With Pig I needed to compile our (optional) 
pig dependency with:

bq. ant clean jar-withouthadoop -Dhadoopversion=23

Only really needed if you're using one of the current versions of thrift with 
the new JobContext.


> Cassandra/Hadoop does not support current Hadoop releases
> -
>
> Key: CASSANDRA-5201
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5201
> Project: Cassandra
>  Issue Type: Bug
>  Components: Hadoop
>Affects Versions: 1.2.0
>Reporter: Brian Jeltema
>Assignee: Dave Brosius
> Attachments: 5201_a.txt, hadoopCompat.patch
>
>
> Using Hadoop 0.22.0 with Cassandra results in the stack trace below.
> It appears that version 0.21+ changed org.apache.hadoop.mapreduce.JobContext
> from a class to an interface.
> Exception in thread "main" java.lang.IncompatibleClassChangeError: Found 
> interface org.apache.hadoop.mapreduce.JobContext, but class was expected
>   at 
> org.apache.cassandra.hadoop.ColumnFamilyInputFormat.getSplits(ColumnFamilyInputFormat.java:103)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:445)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:462)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:357)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1045)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1042)
>   at java.security.AccessController.doPrivileged(Native Method)
>   at javax.security.auth.Subject.doAs(Subject.java:415)
>   at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1153)
>   at org.apache.hadoop.mapreduce.Job.submit(Job.java:1042)
>   at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1062)
>   at MyHadoopApp.run(MyHadoopApp.java:163)
>   at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69)
>   at MyHadoopApp.main(MyHadoopApp.java:82)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:601)
>   at org.apache.hadoop.util.RunJar.main(RunJar.java:192)



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Commented] (CASSANDRA-5201) Cassandra/Hadoop does not support current Hadoop releases

2013-12-03 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-5201?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13838325#comment-13838325
 ] 

Benjamin Coverston commented on CASSANDRA-5201:
---

These changes also depend on CASSANDRA-6309 for anything to work.

> Cassandra/Hadoop does not support current Hadoop releases
> -
>
> Key: CASSANDRA-5201
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5201
> Project: Cassandra
>  Issue Type: Bug
>  Components: Hadoop
>Affects Versions: 1.2.0
>Reporter: Brian Jeltema
>Assignee: Dave Brosius
> Attachments: 5201_a.txt, hadoopCompat.patch
>
>
> Using Hadoop 0.22.0 with Cassandra results in the stack trace below.
> It appears that version 0.21+ changed org.apache.hadoop.mapreduce.JobContext
> from a class to an interface.
> Exception in thread "main" java.lang.IncompatibleClassChangeError: Found 
> interface org.apache.hadoop.mapreduce.JobContext, but class was expected
>   at 
> org.apache.cassandra.hadoop.ColumnFamilyInputFormat.getSplits(ColumnFamilyInputFormat.java:103)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:445)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:462)
>   at 
> org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:357)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1045)
>   at org.apache.hadoop.mapreduce.Job$2.run(Job.java:1042)
>   at java.security.AccessController.doPrivileged(Native Method)
>   at javax.security.auth.Subject.doAs(Subject.java:415)
>   at 
> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1153)
>   at org.apache.hadoop.mapreduce.Job.submit(Job.java:1042)
>   at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1062)
>   at MyHadoopApp.run(MyHadoopApp.java:163)
>   at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:69)
>   at MyHadoopApp.main(MyHadoopApp.java:82)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:601)
>   at org.apache.hadoop.util.RunJar.main(RunJar.java:192)



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Commented] (CASSANDRA-2699) continuous incremental anti-entropy

2013-02-21 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-2699?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13583453#comment-13583453
 ] 

Benjamin Coverston commented on CASSANDRA-2699:
---

>From CASSANDRA-4482

{quote}
Instead, we maintain a Merkle Tree (MT) in memory and update it with every 
single column insert in ColumnFamilyStore.apply(). We use 
column.updateDigest(digest) on all the changes in order to create a hash per 
column update and then XOR this hash with the existing one in the Merkle Tree 
bucket for the corresponding row.
This Merkle Tree is created with the column family (one per range), initialized 
with zeros, and persisted to disk with regular snapshots.

The commutative properties of XOR make it possible to update the MT 
incrementally without having to read on write.
{quote}

I'm pretty sure this means that we should be able to XOR the buckets together 
from pre-computed merkle tree SSTable components.

We could just create these on flush, merge them on compaction, then validation 
compaction is just a read, MT components and merge.



> continuous incremental anti-entropy
> ---
>
> Key: CASSANDRA-2699
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2699
> Project: Cassandra
>  Issue Type: Improvement
>Reporter: Peter Schuller
>Assignee: Peter Schuller
>
> Currently, repair works by periodically running "bulk" jobs that (1)
> performs a validating compaction building up an in-memory merkle tree,
> and (2) streaming ring segments as needed according to differences
> indicated by the merkle tree.
> There are some disadvantages to this approach:
> * There is a trade-off between memory usage and the precision of the
>   merkle tree. Less precision means more data streamed relative to
>   what is strictly required.
> * Repair is a periodic "bulk" process that runs for a significant
>   period and, although possibly rate limited as compaction (if 0.8 or
>   backported throttling patch applied), is a divergence in terms of
>   performance characteristics from "normal" operation of the cluster.
> * The impact of imprecision can be huge on a workload dominated by I/O
>   and with cache locality being critical, since you will suddenly
>   transfers lots of data to the target node.
> I propose a more incremental process whereby anti-entropy is
> incremental and continuous over time. In order to avoid being
> seek-bound one still wants to do work in some form of bursty fashion,
> but the amount of data processed at a time could be sufficiently small
> that the impact on the cluster feels a lot more continuous, and that
> the page cache allows us to avoid re-reading differing data twice.
> Consider a process whereby a node is constantly performing a per-CF
> repair operation for each CF. The current state of the repair process
> is defined by:
> * A starting timestamp of the current iteration through the token
>   range the node is responsible for.
> * A "finger" indicating the current position along the token ring to
>   which iteration has completed.
> This information, other than being in-memory, could periodically (every
> few minutes or something) be stored persistently on disk.
> The finger advances by the node selecting the next small "bit" of the
> ring and doing whatever merkling/hashing/checksumming is necessary on
> that small part, and then asking neighbors to do the same, and
> arranging for neighbors to send the node data for mismatching
> ranges. The data would be sent either by way of mutations like with
> read repair, or by streaming sstables. But it would be small amounts
> of data that will act roughly the same as regular writes for the
> perspective of compaction.
> Some nice properties of this approach:
> * It's "always on"; no periodic sudden effects on cluster performance.
> * Restarting nodes never cancels or breaks anti-entropy.
> * Huge compactions of entire CF:s never clog up the compaction queue
>   (not necessarily a non-issue even with concurrent compactions in
>   0.8).
> * Because we're always operating on small chunks, there is never the
>   same kind of trade-off for memory use. A merkel tree or similar
>   could be calculated at a very detailed level potentially. Although
>   the precision from the perspective of reading from disk would likely
>   not matter much if we are in page cache anyway, very high precision
>   could be *very* useful when doing anti-entropy across data centers
>   on slow links.
> There are devils in details, like how to select an appropriate ring
> segment given that you don't have knowledge of the data density on
> other nodes. But I feel that the overall idea/process seems very
> promising.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
Fo

[jira] [Comment Edited] (CASSANDRA-2699) continuous incremental anti-entropy

2013-02-21 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-2699?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13583453#comment-13583453
 ] 

Benjamin Coverston edited comment on CASSANDRA-2699 at 2/21/13 7:19 PM:


>From CASSANDRA-4482

{quote}
Instead, we maintain a Merkle Tree (MT) in memory and update it with every 
single column insert in ColumnFamilyStore.apply(). We use 
column.updateDigest(digest) on all the changes in order to create a hash per 
column update and then XOR this hash with the existing one in the Merkle Tree 
bucket for the corresponding row.
This Merkle Tree is created with the column family (one per range), initialized 
with zeros, and persisted to disk with regular snapshots.

The commutative properties of XOR make it possible to update the MT 
incrementally without having to read on write.
{quote}

I'm pretty sure this means that we should be able to XOR the buckets together 
from pre-computed merkle tree SSTable components.

We could just create these on flush, merge them on compaction, then validation 
compaction is just a read of MT components and merge.



  was (Author: bcoverston):
From CASSANDRA-4482

{quote}
Instead, we maintain a Merkle Tree (MT) in memory and update it with every 
single column insert in ColumnFamilyStore.apply(). We use 
column.updateDigest(digest) on all the changes in order to create a hash per 
column update and then XOR this hash with the existing one in the Merkle Tree 
bucket for the corresponding row.
This Merkle Tree is created with the column family (one per range), initialized 
with zeros, and persisted to disk with regular snapshots.

The commutative properties of XOR make it possible to update the MT 
incrementally without having to read on write.
{quote}

I'm pretty sure this means that we should be able to XOR the buckets together 
from pre-computed merkle tree SSTable components.

We could just create these on flush, merge them on compaction, then validation 
compaction is just a read, MT components and merge.


  
> continuous incremental anti-entropy
> ---
>
> Key: CASSANDRA-2699
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2699
> Project: Cassandra
>  Issue Type: Improvement
>Reporter: Peter Schuller
>Assignee: Peter Schuller
>
> Currently, repair works by periodically running "bulk" jobs that (1)
> performs a validating compaction building up an in-memory merkle tree,
> and (2) streaming ring segments as needed according to differences
> indicated by the merkle tree.
> There are some disadvantages to this approach:
> * There is a trade-off between memory usage and the precision of the
>   merkle tree. Less precision means more data streamed relative to
>   what is strictly required.
> * Repair is a periodic "bulk" process that runs for a significant
>   period and, although possibly rate limited as compaction (if 0.8 or
>   backported throttling patch applied), is a divergence in terms of
>   performance characteristics from "normal" operation of the cluster.
> * The impact of imprecision can be huge on a workload dominated by I/O
>   and with cache locality being critical, since you will suddenly
>   transfers lots of data to the target node.
> I propose a more incremental process whereby anti-entropy is
> incremental and continuous over time. In order to avoid being
> seek-bound one still wants to do work in some form of bursty fashion,
> but the amount of data processed at a time could be sufficiently small
> that the impact on the cluster feels a lot more continuous, and that
> the page cache allows us to avoid re-reading differing data twice.
> Consider a process whereby a node is constantly performing a per-CF
> repair operation for each CF. The current state of the repair process
> is defined by:
> * A starting timestamp of the current iteration through the token
>   range the node is responsible for.
> * A "finger" indicating the current position along the token ring to
>   which iteration has completed.
> This information, other than being in-memory, could periodically (every
> few minutes or something) be stored persistently on disk.
> The finger advances by the node selecting the next small "bit" of the
> ring and doing whatever merkling/hashing/checksumming is necessary on
> that small part, and then asking neighbors to do the same, and
> arranging for neighbors to send the node data for mismatching
> ranges. The data would be sent either by way of mutations like with
> read repair, or by streaming sstables. But it would be small amounts
> of data that will act roughly the same as regular writes for the
> perspective of compaction.
> Some nice properties of this approach:
> * It's "always on"; no periodic sudden effects on cluster performance.
> * Restarting n

[jira] [Commented] (CASSANDRA-2699) continuous incremental anti-entropy

2013-02-27 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-2699?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13588347#comment-13588347
 ] 

Benjamin Coverston commented on CASSANDRA-2699:
---

You're right, which also means that in the face of idempotent writes and replay 
the incremental scenario is also broken with the in-memory tree.

> continuous incremental anti-entropy
> ---
>
> Key: CASSANDRA-2699
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2699
> Project: Cassandra
>  Issue Type: Improvement
>Reporter: Peter Schuller
>Assignee: Peter Schuller
>
> Currently, repair works by periodically running "bulk" jobs that (1)
> performs a validating compaction building up an in-memory merkle tree,
> and (2) streaming ring segments as needed according to differences
> indicated by the merkle tree.
> There are some disadvantages to this approach:
> * There is a trade-off between memory usage and the precision of the
>   merkle tree. Less precision means more data streamed relative to
>   what is strictly required.
> * Repair is a periodic "bulk" process that runs for a significant
>   period and, although possibly rate limited as compaction (if 0.8 or
>   backported throttling patch applied), is a divergence in terms of
>   performance characteristics from "normal" operation of the cluster.
> * The impact of imprecision can be huge on a workload dominated by I/O
>   and with cache locality being critical, since you will suddenly
>   transfers lots of data to the target node.
> I propose a more incremental process whereby anti-entropy is
> incremental and continuous over time. In order to avoid being
> seek-bound one still wants to do work in some form of bursty fashion,
> but the amount of data processed at a time could be sufficiently small
> that the impact on the cluster feels a lot more continuous, and that
> the page cache allows us to avoid re-reading differing data twice.
> Consider a process whereby a node is constantly performing a per-CF
> repair operation for each CF. The current state of the repair process
> is defined by:
> * A starting timestamp of the current iteration through the token
>   range the node is responsible for.
> * A "finger" indicating the current position along the token ring to
>   which iteration has completed.
> This information, other than being in-memory, could periodically (every
> few minutes or something) be stored persistently on disk.
> The finger advances by the node selecting the next small "bit" of the
> ring and doing whatever merkling/hashing/checksumming is necessary on
> that small part, and then asking neighbors to do the same, and
> arranging for neighbors to send the node data for mismatching
> ranges. The data would be sent either by way of mutations like with
> read repair, or by streaming sstables. But it would be small amounts
> of data that will act roughly the same as regular writes for the
> perspective of compaction.
> Some nice properties of this approach:
> * It's "always on"; no periodic sudden effects on cluster performance.
> * Restarting nodes never cancels or breaks anti-entropy.
> * Huge compactions of entire CF:s never clog up the compaction queue
>   (not necessarily a non-issue even with concurrent compactions in
>   0.8).
> * Because we're always operating on small chunks, there is never the
>   same kind of trade-off for memory use. A merkel tree or similar
>   could be calculated at a very detailed level potentially. Although
>   the precision from the perspective of reading from disk would likely
>   not matter much if we are in page cache anyway, very high precision
>   could be *very* useful when doing anti-entropy across data centers
>   on slow links.
> There are devils in details, like how to select an appropriate ring
> segment given that you don't have knowledge of the data density on
> other nodes. But I feel that the overall idea/process seems very
> promising.

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


[jira] [Commented] (CASSANDRA-14064) Allow using file based certificates instead of keystores

2020-02-27 Thread Benjamin Coverston (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-14064?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17047092#comment-17047092
 ] 

Benjamin Coverston commented on CASSANDRA-14064:


Before I came looking in the project I actually created a similar patch. Is 
this something that the project is still interested in? Removing the dependency 
on JKS opens a path to integration with ACME and a bunch of other possibilities.

> Allow using file based certificates instead of keystores
> 
>
> Key: CASSANDRA-14064
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14064
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Legacy/Streaming and Messaging
>Reporter: Stefan Podkowinski
>Priority: Normal
>  Labels: security
> Fix For: 4.x
>
> Attachments: 0001-Add-keystore-less-ssl-handling.patch
>
>
> The requirement of having to use a secure archive (keystore) for your 
> certificates and keys is not very common outside the Java ecosystem. Most 
> servers will accept individual certificate and key files and will come with 
> instructions how to generate those using openssl. This should also be an 
> option for Cassandra for users who see no reason in additionally having to 
> deal with keystores.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-4168) "Setup" section of tools/stress/README.txt needs update

2012-04-30 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-4168?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13265600#comment-13265600
 ] 

Benjamin Coverston commented on CASSANDRA-4168:
---

+1 ant jar should be the default target.

> "Setup" section of tools/stress/README.txt needs update
> ---
>
> Key: CASSANDRA-4168
> URL: https://issues.apache.org/jira/browse/CASSANDRA-4168
> Project: Cassandra
>  Issue Type: Bug
>  Components: Tools
>Affects Versions: 1.1.1
>Reporter: Tyler Patterson
>Assignee: Brandon Williams
>Priority: Minor
>  Labels: stress
>
> The README.txt file states "Run `ant` from the Cassandra source directory, 
> then Run `ant` from the contrib/stress directory."
> The file needs to reflect the changes in the way stress is built.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Created] (CASSANDRA-4286) Enhance "Write Survey" mode to use a custom range

2012-05-25 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-4286:
-

 Summary: Enhance "Write Survey" mode to use a custom range
 Key: CASSANDRA-4286
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4286
 Project: Cassandra
  Issue Type: New Feature
Reporter: Benjamin Coverston


Write survey mode could be more useful for sizing and tuning if you could 
define a custom range to survey.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Updated] (CASSANDRA-3983) Change order of directory searching for c*.in.sh

2012-06-13 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-3983:
--

Attachment: 3983.txt

Attaching a new set of scripts that all use the same resolution strategy for 
the include file starting first with the local directory, then the configured 
$HOME finally using the remaining directories where the packages may live.

This patch does not address any issues with current packaging setting, or not 
setting the proper environment variables.

> Change order of directory searching for c*.in.sh
> 
>
> Key: CASSANDRA-3983
> URL: https://issues.apache.org/jira/browse/CASSANDRA-3983
> Project: Cassandra
>  Issue Type: Improvement
>Reporter: Nick Bailey
>Assignee: paul cannon
>Priority: Minor
> Attachments: 3983.txt
>
>
> When you have a c* package installed but attempt to run from a source build, 
> 'bin/cassandra' will search the packaged dirs for 'cassandra.in.sh' before 
> searching the dirs in your source build. We should reverse the order of that 
> search so it checks locally first. Also the init scripts for a package should 
> set the environment variables correctly so no searching needs to be done and 
> there is no worry of the init scripts loading the wrong file.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Created] (CASSANDRA-4341) Small SSTable Segments Can Hurt Leveling Process

2012-06-14 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-4341:
-

 Summary: Small SSTable Segments Can Hurt Leveling Process
 Key: CASSANDRA-4341
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4341
 Project: Cassandra
  Issue Type: Bug
Reporter: Benjamin Coverston


This concerns:

static int MAX_COMPACTING_L0 = 32;

Repair can create very small SSTable segments. We should consider moving to a 
threshold that takes into account the size of the files brought into compaction 
rather than the number of files for this and similar situations. Bringing the 
small files from L0 to L1 magnifies the issue.

If there are too many very small files in L0 perhaps even an intermediate 
compaction would even reduce the magnifying effect of a L0 to L1 compaction.



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Created] (CASSANDRA-4345) New (bootstrapping) Supplant Healthy Nodes

2012-06-15 Thread Benjamin Coverston (JIRA)
Benjamin Coverston created CASSANDRA-4345:
-

 Summary: New (bootstrapping) Supplant Healthy Nodes
 Key: CASSANDRA-4345
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4345
 Project: Cassandra
  Issue Type: Improvement
Affects Versions: 1.0.9
Reporter: Benjamin Coverston


Copied a config from an existing node and fired up a new node, which happily 
inserted itself at token 0 of a running ring. The surprising and worrisome part 
is that EVERY node started throwing:

java.lang.NullPointerException
ERROR [RPC-Thread:205459] 2012-06-14 19:16:31,948 Cassandra.java (line 3041) 
Internal error processing get_slice
java.lang.NullPointerException
ERROR [RPC-Thread:205427] 2012-06-14 19:16:31,949 Cassandra.java (line 3041) 
Internal error processing get_slice
java.lang.NullPointerException
ERROR [RPC-Thread:205459] 2012-06-14 19:16:31,952 Cassandra.java (line 3041) 
Internal error processing get_slice
java.lang.NullPointerException

---

Resulting in:
INFO [GossipStage:1] 2012-06-14 18:24:37,472 Gossiper.java (line 838) Node 
/192.168.88.48 is now part of the cluster
 INFO [GossipStage:1] 2012-06-14 18:24:37,473 Gossiper.java (line 804) 
InetAddress /192.168.88.48 is now UP
 INFO [GossipStage:1] 2012-06-14 18:24:37,473 StorageService.java (line 1008) 
Nodes /192.168.88.48 and /192.168.88.70 have the same token 0.  /192.168.88
.48 is the new owner
 WARN [GossipStage:1] 2012-06-14 18:24:37,474 TokenMetadata.java (line 135) 
Token 0 changing ownership from /192.168.88.70 to /192.168.88.48
 INFO [GossipStage:1] 2012-06-14 18:24:37,475 ColumnFamilyStore.java (line 705) 
Enqueuing flush of Memtable-LocationInfo@961917618(20/25 serialized/live 
bytes, 1 ops)
 INFO [FlushWriter:1272] 2012-06-14 18:24:37,475 Memtable.java (line 246) 
Writing Memtable-LocationInfo@961917618(20/25 serialized/live bytes, 1 ops)
 INFO [FlushWriter:1272] 2012-06-14 18:24:37,492 Memtable.java (line 283) 
Completed flushing /cass_ssd/system/LocationInfo-hc-23-Data.db (74 bytes)
ERROR [RPC-Thread:200943] 2012-06-14 18:24:38,007 Cassandra.java (line 3041) 
Internal error processing get_slice
java.lang.NullPointerException
at 
org.apache.cassandra.locator.PropertyFileSnitch.getDatacenter(PropertyFileSnitch.java:104)
at 
org.apache.cassandra.locator.DynamicEndpointSnitch.getDatacenter(DynamicEndpointSnitch.java:122)
at 
org.apache.cassandra.locator.NetworkTopologyStrategy.calculateNaturalEndpoints(NetworkTopologyStrategy.java:93)
at 
org.apache.cassandra.locator.AbstractReplicationStrategy.getNaturalEndpoints(AbstractReplicationStrategy.java:100)
at 
org.apache.cassandra.service.StorageService.getLiveNaturalEndpoints(StorageService.java:2002)
at 
org.apache.cassandra.service.StorageService.getLiveNaturalEndpoints(StorageService.java:1996)
at 
org.apache.cassandra.service.StorageProxy.fetchRows(StorageProxy.java:604)
at org.apache.cassandra.service.StorageProxy.read(StorageProxy.java:564)
at 
org.apache.cassandra.thrift.CassandraServer.readColumnFamily(CassandraServer.java:128)
at 
org.apache.cassandra.thrift.CassandraServer.getSlice(CassandraServer.java:283)
at 
org.apache.cassandra.thrift.CassandraServer.multigetSliceInternal(CassandraServer.java:365)
at 
org.apache.cassandra.thrift.CassandraServer.get_slice(CassandraServer.java:326)
at 
org.apache.cassandra.thrift.Cassandra$Processor$get_slice.process(Cassandra.java:3033)
at 
org.apache.cassandra.thrift.Cassandra$Processor.process(Cassandra.java:2889)
at 
org.apache.thrift.server.TNonblockingServer$FrameBuffer.invoke(TNonblockingServer.java:631)
at 
org.apache.cassandra.thrift.CustomTHsHaServer$Invocation.run(CustomTHsHaServer.java:105)
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.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira




[jira] [Created] (CASSANDRA-2470) Secondary Indexes Build Very Slowly

2011-04-14 Thread Benjamin Coverston (JIRA)
Secondary Indexes Build Very Slowly
---

 Key: CASSANDRA-2470
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2470
 Project: Cassandra
  Issue Type: Improvement
Reporter: Benjamin Coverston


While running repair I noticed that the time it took to run was easily 
dominated by building the secondary indexes. They currently build at a rate of 
< 200KB/Second. This means that indexing a 500MB file takes nearly an hour to 
index the file.

Because this happens on the compaction thread it also causes repair to back up 
in general, which for very active systems is a very bad thing.

I suggest we look at it in the hope that we can improve the rate in which we 
build the indexes by an order of magnitude.

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


[jira] [Commented] (CASSANDRA-2346) Windows: SSTableWriterTest Fails

2011-05-11 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-2346?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13032195#comment-13032195
 ] 

Benjamin Coverston commented on CASSANDRA-2346:
---

Ran this with the patch and I'm still getting an failure for this test [1].

I'm also seeing a number of other failures in my tests, so I'm not sure if it's 
an environment issue or what. I'm going to tool around with it a bit more to 
see if it's java that's holding on to the file handles or something else.



https://issues.apache.org/jira/browse/CASSANDRA-2346



> Windows: SSTableWriterTest Fails
> 
>
> Key: CASSANDRA-2346
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2346
> Project: Cassandra
>  Issue Type: Bug
>  Components: Tests
>Affects Versions: 0.7.0
> Environment: Windows
>Reporter: Benjamin Coverston
>Assignee: Jonathan Ellis
>Priority: Minor
>  Labels: windows
> Fix For: 0.7.6
>
> Attachments: 2346.txt
>
>
> Fails with the following exception[1]
> Which looks like there's a stream keeping this file open somewhere.
> I looked for the culprit, but I was unable to identify it. Following it 
> through it appears that if the following two lines of code are executed from 
> IndexWriter.afterAppend:
> ByteBufferUtil.writeWithShortLength(key.key, indexFile);
> indexFile.writeLong(dataPosition);
> Then the indexFile gets touched and that generally triggers this situation. 
> One thing interesting here is that an index file without any rows will 
> trigger a divide by zero exception [2].
> I looked at this quite a bit without being able to make much progress.
> [1]
> java.io.IOException: Failed to delete 
> C:\Users\Ben\AppData\Local\Temp\Keyspace12505092819180437091Indexed1\Keyspace1\Indexed1-f-0-Index.db
>   at 
> org.apache.cassandra.io.util.FileUtils.deleteWithConfirm(FileUtils.java:51)
>   at 
> org.apache.cassandra.io.util.FileUtils.deleteWithConfirm(FileUtils.java:41)
>   at 
> org.apache.cassandra.io.sstable.SSTableWriterTest.testRecoverAndOpen(SSTableWriterTest.java:79)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>   at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
>   at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>   at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
>   at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
>   at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
>   at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:44)
>   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
>   at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
>   at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
>   at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
>   at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
>   at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
>   at org.junit.runner.JUnitCore.run(JUnitCore.java:159)
>   at 
> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:97)
>   at 
> com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:196)
>   at 
> com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>   at com.intellij.rt.execution.application.AppMain.main(AppMain.java:115)
> [2]
> ERROR 16:57:48,119 Error in ThreadPoolExecutor
> java.lang.ArithmeticException: / by zero
>   at 
> org.apache.cassandra.io.sstable.SSTable.estimateRowsFromData(SSTable.java:218)
>   at 
> org.apache.cassandra.io.sstable.SSTableWriter$Builder.build(SSTableWriter.java:291)
>   at 
> org.apache.cassandra.db.CompactionManager$9.call(CompactionManager.java:942)
>   at 
> org.apache.cassandra.db.CompactionManager$9.call(CompactionManager.java:935)
>   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>   at java.util.concurrent.Futu

[jira] [Commented] (CASSANDRA-1608) Redesigned Compaction

2011-05-15 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-1608?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13033870#comment-13033870
 ] 

Benjamin Coverston commented on CASSANDRA-1608:
---

I like the LevelDB approach in almost every way except that recovery becomes 
more complicated than our current scenario. Right now we can basically ship 
files from one server to another without any special consideration, the 
reliance on a manifest requires us to solve a new problem in the case where a 
manifest is lost, or we want to recover from a snapshot.




> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

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


[jira] [Commented] (CASSANDRA-1608) Redesigned Compaction

2011-05-27 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-1608?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13040541#comment-13040541
 ] 

Benjamin Coverston commented on CASSANDRA-1608:
---

There's probably nothing that prevents us from doing that. Is our goal here to 
replace compaction entirely?

The manifest information consists, minimally of the level information and 
ranges. For us ranges are easy as they are readily available when the SSTables 
are read in at restart, flushing, or compaction.

Taking a stab at this I made the compaction manager abstract, then created a 
concrete implementation for the current compaction implementation. Happily 
hacking on a level based compaction manager I kept running into a delemma: 
Where do I store the level information. There are a few options:

1. The descriptor A hack, simple, but also adds information that probably 
wouldn't be used by any other compaction manager, yet it would be there. Unless 
we're moving head-long into a level-db approach I'm not super excited about 
this.

2. Store it on a per-sstable basis -in- the sstable: To continue along this 
path I would like to have a standard place to put "extra" metadata in the 
sstables. A header of some sort. I like the idea of using a metadata block in 
the SSTables to store this type of information.

3. Use an on-disk manifest. -- Pro: only my compaction manager needs to deal 
with this information, but there is a non-trivial amount of bookeeping that 
would need to be done to ensure this is kept up to day and valid.


> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

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


[jira] [Issue Comment Edited] (CASSANDRA-1608) Redesigned Compaction

2011-05-28 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-1608?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13040541#comment-13040541
 ] 

Benjamin Coverston edited comment on CASSANDRA-1608 at 5/28/11 5:11 PM:


There's probably nothing that prevents us from doing that. Is our goal here to 
replace compaction entirely?

The manifest information consists, minimally of the level information and 
ranges. For us ranges are easy as they are readily available when the SSTables 
are read in at restart, flushing, or compaction.

Taking a stab at this I made the compaction manager abstract, then created a 
concrete implementation for the current compaction implementation. Happily 
hacking on a level based compaction manager I kept running into a delemma: 
Where do I store the level information. There are a few options:

1. The descriptor A hack, simple, but also adds information that probably 
wouldn't be used by any other compaction manager, yet it would be there. Unless 
we're moving head-long into a level-db approach I'm not super excited about 
this.

2. Store it on a per-sstable basis -in- the sstable: To continue along this 
path I would like to have a standard place to put "extra" metadata in the 
sstables. A header of some sort. I like the idea of using a metadata block in 
the SSTables to store this type of information.

3. Use an on-disk manifest. -- Pro: only my compaction manager needs to deal 
with this information, but there is a non-trivial amount of bookeeping that 
would need to be done to ensure this is kept up to day and valid.

EDIT:
4. This is probably the best option, create a new component type: 
METADATA_STORE which will hold namespaced key/value pairs on a per-sstable 
basis.

  was (Author: bcoverston):
There's probably nothing that prevents us from doing that. Is our goal here 
to replace compaction entirely?

The manifest information consists, minimally of the level information and 
ranges. For us ranges are easy as they are readily available when the SSTables 
are read in at restart, flushing, or compaction.

Taking a stab at this I made the compaction manager abstract, then created a 
concrete implementation for the current compaction implementation. Happily 
hacking on a level based compaction manager I kept running into a delemma: 
Where do I store the level information. There are a few options:

1. The descriptor A hack, simple, but also adds information that probably 
wouldn't be used by any other compaction manager, yet it would be there. Unless 
we're moving head-long into a level-db approach I'm not super excited about 
this.

2. Store it on a per-sstable basis -in- the sstable: To continue along this 
path I would like to have a standard place to put "extra" metadata in the 
sstables. A header of some sort. I like the idea of using a metadata block in 
the SSTables to store this type of information.

3. Use an on-disk manifest. -- Pro: only my compaction manager needs to deal 
with this information, but there is a non-trivial amount of bookeeping that 
would need to be done to ensure this is kept up to day and valid.

  
> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

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


[jira] [Commented] (CASSANDRA-1610) Pluggable Compaction

2011-06-03 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-1610?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13043890#comment-13043890
 ] 

Benjamin Coverston commented on CASSANDRA-1610:
---

These changes are good. There is an added import to the StreamingTransferTest 
that doesn't need to be there:

import org.apache.cassandra.db.compaction.CompactionManager;

Overall the changes are good, I'm concerned that a few of the tests seem to 
fail with this patch when they don't fail in trunk right now.

Get the fixes in and also add some documentation for the new switches in the 
cassandra.yaml then a +1.



> Pluggable Compaction
> 
>
> Key: CASSANDRA-1610
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1610
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
>Assignee: Alan Liang
>Priority: Minor
>  Labels: compaction
> Fix For: 1.0
>
> Attachments: 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0002-Pluggable-Compaction-and-Expiration.patch, 
> 0002-pluggable-compaction.patch, 0002-pluggable-compaction.patch
>
>
> In CASSANDRA-1608, I proposed some changes on how compaction works. I think 
> it also makes sense to allow the ability to have pluggable compaction per CF. 
> There could be many types of workloads where this makes sense. One example we 
> had at Digg was to completely throw away certain SSTables after N days.
> This ticket addresses making compaction pluggable only.

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


[jira] [Commented] (CASSANDRA-1610) Pluggable Compaction

2011-06-04 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-1610?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13044357#comment-13044357
 ] 

Benjamin Coverston commented on CASSANDRA-1610:
---

Still looking at it, I'm still seeing failures on the 
org.apache.cassandra.db.KeyCacheTest and 
org.apache.cassandra.db.compaction.CompactionsPurgeTest.

If you'er sure you're not seeing failures I'll push these changes out to 
another computer and test them there.

Ben

> Pluggable Compaction
> 
>
> Key: CASSANDRA-1610
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1610
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
>Assignee: Alan Liang
>Priority: Minor
>  Labels: compaction
> Fix For: 1.0
>
> Attachments: 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0002-Pluggable-Compaction-and-Expiration.patch, 
> 0002-pluggable-compaction.patch, 0002-pluggable-compaction.patch, 
> 0002-pluggable-compaction.patch
>
>
> In CASSANDRA-1608, I proposed some changes on how compaction works. I think 
> it also makes sense to allow the ability to have pluggable compaction per CF. 
> There could be many types of workloads where this makes sense. One example we 
> had at Digg was to completely throw away certain SSTables after N days.
> This ticket addresses making compaction pluggable only.

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


[jira] [Commented] (CASSANDRA-1610) Pluggable Compaction

2011-06-04 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-1610?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13044432#comment-13044432
 ] 

Benjamin Coverston commented on CASSANDRA-1610:
---

CompactionManager.java has a number of duplicate imports you probably want to 
clean up.

Other than that this looks good.
+1



> Pluggable Compaction
> 
>
> Key: CASSANDRA-1610
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1610
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
>Assignee: Alan Liang
>Priority: Minor
>  Labels: compaction
> Fix For: 1.0
>
> Attachments: 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0002-Pluggable-Compaction-and-Expiration.patch, 
> 0002-pluggable-compaction.patch, 0002-pluggable-compaction.patch, 
> 0002-pluggable-compaction.patch, 0002-pluggable-compaction.patch
>
>
> In CASSANDRA-1608, I proposed some changes on how compaction works. I think 
> it also makes sense to allow the ability to have pluggable compaction per CF. 
> There could be many types of workloads where this makes sense. One example we 
> had at Digg was to completely throw away certain SSTables after N days.
> This ticket addresses making compaction pluggable only.

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


[jira] [Updated] (CASSANDRA-1610) Pluggable Compaction

2011-06-06 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-1610:
--

Attachment: 0002-pluggable-compaction.patch

Moved the AbstractCompactionStrategy to be an interface.

> Pluggable Compaction
> 
>
> Key: CASSANDRA-1610
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1610
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
>Assignee: Alan Liang
>Priority: Minor
>  Labels: compaction
> Fix For: 1.0
>
> Attachments: 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0002-Pluggable-Compaction-and-Expiration.patch, 
> 0002-pluggable-compaction.patch, 0002-pluggable-compaction.patch, 
> 0002-pluggable-compaction.patch, 0002-pluggable-compaction.patch, 
> 0002-pluggable-compaction.patch, 0002-pluggable-compaction.patch
>
>
> In CASSANDRA-1608, I proposed some changes on how compaction works. I think 
> it also makes sense to allow the ability to have pluggable compaction per CF. 
> There could be many types of workloads where this makes sense. One example we 
> had at Digg was to completely throw away certain SSTables after N days.
> This ticket addresses making compaction pluggable only.

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


[jira] [Updated] (CASSANDRA-1610) Pluggable Compaction

2011-06-06 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-1610:
--

Attachment: 0002-pluggable-compaction.patch

Removed extraneous .orig 

> Pluggable Compaction
> 
>
> Key: CASSANDRA-1610
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1610
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
>Assignee: Alan Liang
>Priority: Minor
>  Labels: compaction
> Fix For: 1.0
>
> Attachments: 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0001-move-compaction-code-into-own-package.patch, 
> 0002-Pluggable-Compaction-and-Expiration.patch, 
> 0002-pluggable-compaction.patch, 0002-pluggable-compaction.patch, 
> 0002-pluggable-compaction.patch, 0002-pluggable-compaction.patch, 
> 0002-pluggable-compaction.patch, 0002-pluggable-compaction.patch, 
> 0002-pluggable-compaction.patch
>
>
> In CASSANDRA-1608, I proposed some changes on how compaction works. I think 
> it also makes sense to allow the ability to have pluggable compaction per CF. 
> There could be many types of workloads where this makes sense. One example we 
> had at Digg was to completely throw away certain SSTables after N days.
> This ticket addresses making compaction pluggable only.

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


[jira] [Created] (CASSANDRA-2765) DataTracker.View.MarkCompacting adds ALL sstables and marks them as compacting

2011-06-13 Thread Benjamin Coverston (JIRA)
DataTracker.View.MarkCompacting adds ALL sstables and marks them as compacting
--

 Key: CASSANDRA-2765
 URL: https://issues.apache.org/jira/browse/CASSANDRA-2765
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 0.8.0
Reporter: Benjamin Coverston


At some point if the list isn't cleaned up with this symptom compactions will 
stop until the server is restarted.


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




[jira] [Updated] (CASSANDRA-2765) DataTracker.View.MarkCompacting adds ALL sstables and marks them as compacting

2011-06-13 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-2765:
--

Attachment: 0001-removed-code-adding-all-sstables-to-the-view-builder.patch

Attached patch removes code that adds all sstables to the compacting set.

> DataTracker.View.MarkCompacting adds ALL sstables and marks them as compacting
> --
>
> Key: CASSANDRA-2765
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2765
> Project: Cassandra
>  Issue Type: Bug
>  Components: Core
>Affects Versions: 0.8.0
>Reporter: Benjamin Coverston
> Attachments: 
> 0001-removed-code-adding-all-sstables-to-the-view-builder.patch
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> At some point if the list isn't cleaned up with this symptom compactions will 
> stop until the server is restarted.

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




[jira] [Assigned] (CASSANDRA-2765) DataTracker.View.MarkCompacting adds ALL sstables and marks them as compacting

2011-06-13 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston reassigned CASSANDRA-2765:
-

Assignee: Benjamin Coverston

> DataTracker.View.MarkCompacting adds ALL sstables and marks them as compacting
> --
>
> Key: CASSANDRA-2765
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2765
> Project: Cassandra
>  Issue Type: Bug
>  Components: Core
>Affects Versions: 0.8.0
>Reporter: Benjamin Coverston
>Assignee: Benjamin Coverston
> Attachments: 
> 0001-removed-code-adding-all-sstables-to-the-view-builder.patch
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> At some point if the list isn't cleaned up with this symptom compactions will 
> stop until the server is restarted.

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




[jira] [Commented] (CASSANDRA-2765) DataTracker.View.MarkCompacting adds ALL sstables and marks them as compacting

2011-06-13 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-2765?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13048782#comment-13048782
 ] 

Benjamin Coverston commented on CASSANDRA-2765:
---

Good call, I missed that part :).

> DataTracker.View.MarkCompacting adds ALL sstables and marks them as compacting
> --
>
> Key: CASSANDRA-2765
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2765
> Project: Cassandra
>  Issue Type: Bug
>  Components: Core
>Affects Versions: 0.8.0
>Reporter: Benjamin Coverston
>Assignee: Benjamin Coverston
> Attachments: 
> 0001-removed-code-adding-all-sstables-to-the-view-builder.patch, 2765-v2.txt
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> At some point if the list isn't cleaned up with this symptom compactions will 
> stop until the server is restarted.

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




[jira] [Commented] (CASSANDRA-2765) DataTracker.View.MarkCompacting adds ALL sstables and marks them as compacting

2011-06-13 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-2765?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13048789#comment-13048789
 ] 

Benjamin Coverston commented on CASSANDRA-2765:
---

+1

> DataTracker.View.MarkCompacting adds ALL sstables and marks them as compacting
> --
>
> Key: CASSANDRA-2765
> URL: https://issues.apache.org/jira/browse/CASSANDRA-2765
> Project: Cassandra
>  Issue Type: Bug
>  Components: Core
>Affects Versions: 0.8.0
>Reporter: Benjamin Coverston
>Assignee: Benjamin Coverston
> Fix For: 0.8.1
>
> Attachments: 
> 0001-removed-code-adding-all-sstables-to-the-view-builder.patch, 2765-v2.txt
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> At some point if the list isn't cleaned up with this symptom compactions will 
> stop until the server is restarted.

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




[jira] [Updated] (CASSANDRA-1608) Redesigned Compaction

2011-06-14 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-1608:
--

Attachment: 0001-leveldb-style-compaction.patch

Adding a patch for leveldb style compaction. I see this as a 'good start' and 
I'm looking for some further input. I'm not going to be able to work on this 
for the next week or so so I'm putting it here to start some discussion on this 
approach.

This implementation requires no durable manifest.

Ranges are created at SSTable creation (flush or compaction) or sstable index 
creation.

Exponent used for levels is 10.

Preliminary runs show that high write rates do make level 0 to level 1 
promotions back up substantially, but when cleared promotions out of level one 
seem to be very fast.

I found the best performance by removing the compaction throughput throttling 
and setting concurrent compactors to 1.

The SSTable size in this implementation is determined by the flush size in mb 
setting.

The recovery path reads the list of SSTables, groups them by non-overlapping 
ranges then places each range in its appropriate level.

Finally credit is due to the leveldb team as this design was inspired by the 
leveldb implementation.

> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
> Attachments: 0001-leveldb-style-compaction.patch
>
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

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




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

2011-06-14 Thread Benjamin Coverston (JIRA)
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


Concurrent compaction can trigger the following exception: I'll attach a patch 
to fix this.

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-2769) Cannot Create Duplicate Compaction Marker

2011-06-14 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston commented on CASSANDRA-2769:
---

Yes

> 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
>
> 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] [Issue Comment Edited] (CASSANDRA-2769) Cannot Create Duplicate Compaction Marker

2011-06-14 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston edited comment on CASSANDRA-2769 at 6/15/11 5:37 AM:


Yes, in both.

  was (Author: bcoverston):
Yes
  
> 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
>
> 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-2769) Cannot Create Duplicate Compaction Marker

2011-06-16 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston commented on CASSANDRA-2769:
---

I think Alan has a good point. I don't think it's an appropriate role of the 
data tracker to modify the set of sstables to be compacted in a task. It's been 
a bit of a struggle to hack around the behavior of the DataTracker to ensure my 
compactions happen in the order I want with the SSTables that I want. That 
should probably be the exclusive domain compaction strategy.

> 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] [Commented] (CASSANDRA-1608) Redesigned Compaction

2011-06-16 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-1608?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13050908#comment-13050908
 ] 

Benjamin Coverston commented on CASSANDRA-1608:
---

The LDBCompaction task was changed to limit the size of the SSTables that are 
output by the compaction itself. Once the size of rows compacted exceeds the 
size of the default size in MB then it creates a new SSTable:

>>

if(position > cfs.metadata.getMemtableThroughputInMb() * 1024 * 1024
|| nni.hasNext() == false)
{
<<

It feels like a bit of a hack because an optimal flush size may not always be 
an optimal storage size, but my goal was to try to keep the SSTable size in a 
reasonably small range to make compactions into into level 1 fast.

I'll make some more modifications to the manifest s.t. there is a single path 
for getting new SSTables (flushed and streamed) into the manifest. I found a 
bug on the plane today where they were getting added to the manifest, but they 
weren't being added to the queue that I was adding flushed SSTables to. I'll 
get that into my next revision.

>>
In promote, do we need to check for all the removed ones being on the same 
level? I can't think of a scenario where we're not merging from multiple 
levels. If so I'd change that to an assert. (In fact there should be exactly 
two levels involved, right?)
<<

I considered this. There are some boundary cases where every SSTable that gets 
compacted will be in the same level. Most of them have to do with L+1 being 
empty. Also sending the SSTables through the same compaction path will evict 
expired tombstones before they end up in the next level where compactions 
become increasingly unlikely.

>>
Did some surgery on getCompactionCandidates. Generally renamed things to be 
more succinct. Feels like we getCompactionCandidates should do lower levels 
before doing higher levels?
<<

Let's just say my naming conventions have been shaped by different influences 
:) I wouldn't object to any of the new names you chose however.

RE: the order, it does feel like we should do lower levels before higher 
levels, however one thing that we have to do is make sure that level-1 stays at 
10 SSTables. The algorithm dictates that all of the level-0 candidates get 
compacted with all of the candidates at level-1. This means that you need to 
promote out of level-1 so that it is ~10 SSTables before you schedule a 
compaction for level-0 promotion. Right now tuning this so that it is 
performant is the biggest hurdle, I have made some improvements by watching the 
CompactionExecutor, but I have a feeling that making this work is going to 
require some subtle manipulation of the way that the CompactionExecutor handles 
tasks.



> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
> Attachments: 0001-leveldb-style-compaction.patch, 1608-v2.txt
>
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

--
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-17 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston commented on CASSANDRA-2769:
---

I'm sorry I didn't mean to imply it should be fixed _here_. I'll find a more 
appropriate venue to vent these frustrations :)

> 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-v2.patch, 
> 0001-Do-compact-only-smallerSSTables.patch, 
> 0002-Only-compact-what-has-been-succesfully-marked-as-com-v2.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] [Updated] (CASSANDRA-1608) Redesigned Compaction

2011-06-20 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-1608:
--

Attachment: 1608-v3.txt

Attaching the latest version.

Levels are scored according to size rather than number of SSTables.

Performance kind of sucked until I made a few tweaks.

You can modify the LevelDB SSTable size by the following command (example) in 
the CLI:

update column family Standard1 with compaction_strategy_options=[{ 
sstable_size_in_mb : 10 }];


Using a flush size of 64MB and an sstable_size_in_mb of 5 worked pretty well 
for keeping compactions moving through the levels and handling new SSTables as 
they entered the system.

I also enabled concurrent compactions which, to my surprise, helped 
considerably. In testing I also removed compaction throttling, but in the end I 
don't think it mattered too much for me.

This version also adds a manifest and recovery code to the mix. While running 
you can cat the manifest, it's human readable, and quite beautiful to see the 
levels interact with each other as SSTables are flushed and compactions roll 
through the levels.

Right now I'm getting an exception on startup from the keycache, I'm going to 
investigate that, but I think it may have to do with the fact that I am not 
initializing the compaction manager _after_ the CFS.








> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
> Attachments: 0001-leveldb-style-compaction.patch, 1608-v2.txt, 
> 1608-v3.txt
>
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

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




[jira] [Issue Comment Edited] (CASSANDRA-1608) Redesigned Compaction

2011-06-20 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-1608?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13052212#comment-13052212
 ] 

Benjamin Coverston edited comment on CASSANDRA-1608 at 6/20/11 11:30 PM:
-

Attaching the latest version.

Levels are scored according to size rather than number of SSTables.

Performance kind of sucked until I made a few tweaks.

You can modify the LevelDB SSTable size by the following command (example) in 
the CLI:

update column family Standard1 with compaction_strategy_options=[{ 
sstable_size_in_mb : 10 }];


Using a flush size of 64MB and an sstable_size_in_mb of 5 worked pretty well 
for keeping compactions moving through the levels and handling new SSTables as 
they entered the system.

I also enabled concurrent compactions which, to my surprise, helped 
considerably. In testing I also removed compaction throttling, but in the end I 
don't think it mattered too much for me.

This version also adds a manifest and recovery code to the mix. While running 
you can cat the manifest, it's human readable, and quite beautiful to see the 
levels interact with each other as SSTables are flushed and compactions roll 
through the levels.

Right now I'm getting an exception on startup from the keycache, I'm going to 
investigate that, but I think it may have to do with the fact that I am 
initializing the compaction manager _after_ the CFS.








  was (Author: bcoverston):
Attaching the latest version.

Levels are scored according to size rather than number of SSTables.

Performance kind of sucked until I made a few tweaks.

You can modify the LevelDB SSTable size by the following command (example) in 
the CLI:

update column family Standard1 with compaction_strategy_options=[{ 
sstable_size_in_mb : 10 }];


Using a flush size of 64MB and an sstable_size_in_mb of 5 worked pretty well 
for keeping compactions moving through the levels and handling new SSTables as 
they entered the system.

I also enabled concurrent compactions which, to my surprise, helped 
considerably. In testing I also removed compaction throttling, but in the end I 
don't think it mattered too much for me.

This version also adds a manifest and recovery code to the mix. While running 
you can cat the manifest, it's human readable, and quite beautiful to see the 
levels interact with each other as SSTables are flushed and compactions roll 
through the levels.

Right now I'm getting an exception on startup from the keycache, I'm going to 
investigate that, but I think it may have to do with the fact that I am not 
initializing the compaction manager _after_ the CFS.







  
> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
> Attachments: 0001-leveldb-style-compaction.patch, 1608-v2.txt, 
> 1608-v3.txt
>
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

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




[jira] [Updated] (CASSANDRA-1608) Redesigned Compaction

2011-06-20 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-1608:
--

Attachment: 1608-v4.txt

Fixed exception on startup.

> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
> Attachments: 0001-leveldb-style-compaction.patch, 1608-v2.txt, 
> 1608-v3.txt, 1608-v4.txt
>
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

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




[jira] [Updated] (CASSANDRA-1608) Redesigned Compaction

2011-06-21 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-1608:
--

Attachment: 1608-v5.txt

Added range filters to reads.

> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
> Attachments: 0001-leveldb-style-compaction.patch, 1608-v2.txt, 
> 1608-v3.txt, 1608-v4.txt, 1608-v5.txt
>
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

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




[jira] [Updated] (CASSANDRA-1608) Redesigned Compaction

2011-06-24 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-1608:
--

Attachment: 2608-v6.txt

Added a patch with fixed range filters.

With ~1100 sstables average latency is substantially increased (~5-10x). I'm 
pretty sure that in order to improve on this well need to implement an interval 
tree to get a non-linear search time for overlapping sstables in interval 
queries.

The problem here is that there aren't any really good RBtree or even binary 
tree implementations that I have found in the dependencies that we currently 
have, and I really don't want to muddy this ticket up with that effort.

There are some potentially useful structures in UIMA that I can use to base the 
implementation of an interval tree off of, but right now I'm leaning toward 
doing this in a separate ticket. 

> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
>Assignee: Benjamin Coverston
> Attachments: 0001-leveldb-style-compaction.patch, 1608-v2.txt, 
> 1608-v3.txt, 1608-v4.txt, 1608-v5.txt, 2608-v6.txt
>
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

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




[jira] [Updated] (CASSANDRA-1608) Redesigned Compaction

2011-06-24 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-1608:
--

Attachment: (was: 2608-v6.txt)

> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
>Assignee: Benjamin Coverston
> Attachments: 0001-leveldb-style-compaction.patch, 1608-v2.txt, 
> 1608-v3.txt, 1608-v4.txt, 1608-v5.txt
>
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

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




[jira] [Commented] (CASSANDRA-1608) Redesigned Compaction

2011-06-24 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-1608?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13054592#comment-13054592
 ] 

Benjamin Coverston commented on CASSANDRA-1608:
---

It won't because you can't do a simple binary search for a range, it's really a 
problem of intersection rather than matching, and comparators alone don't solve 
problem of: give me all the intersecting ranges for this set without having to 
compare every range for intersection.

Nearly every interval intersection algorithm depends on tree traversal, and 
while many of the existing collections are based on binary, or red-black trees 
they don't expose the methods necessary for traversal, only the comparator is 
exposed used to build the tree and the models only expose either "iterate over 
everything" or "search for the thing I want".

> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
>Assignee: Benjamin Coverston
> Attachments: 0001-leveldb-style-compaction.patch, 1608-v2.txt, 
> 1608-v3.txt, 1608-v4.txt, 1608-v5.txt
>
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

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




[jira] [Commented] (CASSANDRA-1608) Redesigned Compaction

2011-06-24 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-1608?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13054628#comment-13054628
 ] 

Benjamin Coverston commented on CASSANDRA-1608:
---

You're right, I'm thick. I just had to go down to the node itself, the 
Entry object gives me the interface I need.


-- 
Ben Coverston
Director of Operations
DataStax -- The Apache Cassandra Company
http://www.datastax.com/



> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
>Assignee: Benjamin Coverston
> Attachments: 0001-leveldb-style-compaction.patch, 1608-v2.txt, 
> 1608-v3.txt, 1608-v4.txt, 1608-v5.txt
>
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

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




[jira] [Issue Comment Edited] (CASSANDRA-1608) Redesigned Compaction

2011-06-24 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-1608?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13054628#comment-13054628
 ] 

Benjamin Coverston edited comment on CASSANDRA-1608 at 6/24/11 7:26 PM:


You're right, I'm thick. I just had to go down to the node itself, the 
Entry object gives me the interface I need.




  was (Author: ben.covers...@datastax.com):
You're right, I'm thick. I just had to go down to the node itself, the 
Entry object gives me the interface I need.


-- 
Ben Coverston
Director of Operations
DataStax -- The Apache Cassandra Company
http://www.datastax.com/


  
> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
>Assignee: Benjamin Coverston
> Attachments: 0001-leveldb-style-compaction.patch, 1608-v2.txt, 
> 1608-v3.txt, 1608-v4.txt, 1608-v5.txt
>
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

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




[jira] [Updated] (CASSANDRA-1608) Redesigned Compaction

2011-06-27 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-1608:
--

Attachment: 1608-v7.txt

Added an interval tree to cull sstables that are not needed for point and range 
queries.

> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
>Assignee: Benjamin Coverston
> Attachments: 0001-leveldb-style-compaction.patch, 1608-v2.txt, 
> 1608-v3.txt, 1608-v4.txt, 1608-v5.txt, 1608-v7.txt
>
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

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




[jira] [Updated] (CASSANDRA-1608) Redesigned Compaction

2011-06-29 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-1608:
--

Attachment: 1608-v8.txt

First the good:

1. Modified the code s.t. tombstone purge during minor compactions use the 
interval tree to prune the list of SSTables speeding up compactions by at least 
an order of magnitude where the number of SSTables in a column family exceeds 
~500.

2. Tested reads and writes. Write speeds (unsurprisingly) are not affected by 
this compaction strategy. Reads seem to keep up as well. The interval tree does 
a good job here making sure that bloom filters are only queried only for those 
SSTables that fall into the queried range.

3. Three successive runs of stress inserting 10M keys resulted in ~3GB of data 
stored in leveldb. By comparison, the same run using the tiered (default) 
strategy resulted in ~8GB of data.

The Meh:

Compactions do back up when setting the flush size to 64MB and the leveled 
SSTable size to anywhere between 5-10MB. On the upside, if your load has peaks 
and quieter times this compaction strategy will trigger a periodic check to 
"catch up" if all event-scheduled compactions complete.

Interestingly this extra IO has an upside. For datasets that frequently 
overwrite old data that has already been flushed to disk there is the potential 
for substantial de-duplication of data. Further, during reads the number of 
rows that would need to be merged for a single row is bound by the number of 
levels + the number of un-leveled sstables.

> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
>Assignee: Benjamin Coverston
> Attachments: 0001-leveldb-style-compaction.patch, 1608-v2.txt, 
> 1608-v3.txt, 1608-v4.txt, 1608-v5.txt, 1608-v7.txt, 1608-v8.txt
>
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

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




[jira] [Commented] (CASSANDRA-47) SSTable compression

2011-07-08 Thread Benjamin Coverston (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-47?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13062244#comment-13062244
 ] 

Benjamin Coverston commented on CASSANDRA-47:
-

I was worried a bit about this ticket while working on 1608 because it had the 
potential to be a hairy merge. Looking through the patch however the 
implementation looks clean, unobtrusive and well encapsulated. This makes me 
really excited. Contrary to my initial fears I'm anticipating that this will 
actually help with 1608 and probably even help increase IO throughput in the 
data directory in a dramatic way.

+1 for this approach.

> SSTable compression
> ---
>
> Key: CASSANDRA-47
> URL: https://issues.apache.org/jira/browse/CASSANDRA-47
> Project: Cassandra
>  Issue Type: New Feature
>  Components: Core
>Reporter: Jonathan Ellis
>Assignee: Pavel Yaskevich
>  Labels: compression
> Fix For: 1.0
>
> Attachments: CASSANDRA-47.patch, snappy-java-1.0.3-rc4.jar
>
>
> We should be able to do SSTable compression which would trade CPU for I/O 
> (almost always a good trade).

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




[jira] [Updated] (CASSANDRA-1608) Redesigned Compaction

2011-07-26 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-1608:
--

Attachment: (was: 1608-v4.txt)

> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
>Assignee: Benjamin Coverston
> Attachments: 1608-v2.txt, 1608-v8.txt
>
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

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




[jira] [Updated] (CASSANDRA-1608) Redesigned Compaction

2011-07-26 Thread Benjamin Coverston (JIRA)

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

Benjamin Coverston updated CASSANDRA-1608:
--

Attachment: (was: 0001-leveldb-style-compaction.patch)

> Redesigned Compaction
> -
>
> Key: CASSANDRA-1608
> URL: https://issues.apache.org/jira/browse/CASSANDRA-1608
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Core
>Reporter: Chris Goffinet
>Assignee: Benjamin Coverston
> Attachments: 1608-v2.txt, 1608-v8.txt
>
>
> After seeing the I/O issues in CASSANDRA-1470, I've been doing some more 
> thinking on this subject that I wanted to lay out.
> I propose we redo the concept of how compaction works in Cassandra. At the 
> moment, compaction is kicked off based on a write access pattern, not read 
> access pattern. In most cases, you want the opposite. You want to be able to 
> track how well each SSTable is performing in the system. If we were to keep 
> statistics in-memory of each SSTable, prioritize them based on most accessed, 
> and bloom filter hit/miss ratios, we could intelligently group sstables that 
> are being read most often and schedule them for compaction. We could also 
> schedule lower priority maintenance on SSTable's not often accessed.
> I also propose we limit the size of each SSTable to a fix sized, that gives 
> us the ability to  better utilize our bloom filters in a predictable manner. 
> At the moment after a certain size, the bloom filters become less reliable. 
> This would also allow us to group data most accessed. Currently the size of 
> an SSTable can grow to a point where large portions of the data might not 
> actually be accessed as often.

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




  1   2   >