Re: Cassandra on iSCSI?

2011-01-21 Thread Mick Semb Wever

 Of course with a SAN you'd want RF=1 since it's replicating
 internally. 

Isn't this the same case for raid-5 as well?

And we want RF=2 if we need to keep reading while doing rolling
restarts?

~mck

-- 
“Anyone who lives within their means suffers from a lack of
imagination.” - Oscar Wilde 
| http://semb.wever.org | http://sesat.no
| http://finn.no   | Java XSS Filter


signature.asc
Description: This is a digitally signed message part


Re: Cassandra on iSCSI?

2011-01-21 Thread Mick Semb Wever
 [OT] They're quoting roughly the same price for both (claiming
 that the
 extra cost goes into having for each node a separate disk
 cabinet to run
 local raid-5).
 
 You might not need raid-5 for local attached storage. 

Yes we did ask. But raid-5 is the minimum being offered from our hosting
provider... We could go to raid 10, but raid 0 is out of the question...

~mck

-- 
To be young, really young, takes a very long time. Picasso 
| http://semb.wever.org | http://sesat.no
| http://finn.no   | Java XSS Filter


signature.asc
Description: This is a digitally signed message part


Re: Use Cassandra to store 2 million records of persons

2011-01-21 Thread Dave Gardner
Our experience of Cassandra+Hadoop is good.

We have a 16 node Cassandra cluster storing 110m users plus a 5 node
Hadoop cluster. We can scan through all rows in about 2.5 hours.

Dave


On Thursday, 20 January 2011, David G. Boney
dbon...@semanticartifacts.com wrote:
 I don't think the below statement accurately describes data mining or using 
 Cassandra for data mining. All the techniques I am familiar with for either 
 data mining or machine learning, which data mining is a subset, make one or 
 more sequential scans through the data to abstract statistics or build 
 models. The question is how well does Cassandra perform with sequential scans 
 through the data? The Hadoop model works very well for many machine learning 
 problems because it is oriented toward sequential scans through the data. The 
 speed of the Hadoop interface to Cassandra would have a lot of bearing on the 
 application of Cassandra to data mining or machine learning problems.

 -Sincerely,David G. 
 Boneydboney1@semanticartifacts.comhttp://www.semanticartifacts.com




 On Jan 20, 2011, at 6:35 AM, David Boxenhorn wrote:
 Cassandra is not a good solution for data mining type problems, since it 
 doesn't have ad-hoc queries. Cassandra is designed to maximize throughput, 
 which is not usually a problem for data mining.

 On Thu, Jan 20, 2011 at 2:07 PM, Surender Singh suriait2...@gmail.com wrote:

 Hi All

 I want to use Apache Cassandra to store information (like first name, last
 name, gender, address)  about 2 million people.  Then need to perform
 analytic and reporting on that data.
 is need to store information about 2 million people in Mysql and then
 transfer that information into Cassandra.?

 Please help me as i m new to Apache Cassandra.

 if you have any use case like that, please share.

 Thanks and regards

 Surender Singh






-- 
*Dave Gardner*
Technical Architect

[image: imagini_58mmX15mm.png]   [image: VisualDNA-Logo-small.png]

*Imagini Europe Limited*
7 Moor Street, London W1D 5NB

[image: phone_icon.png] +44 20 7734 7033
[image: skype_icon.png] daveg79
[image: emailIcon.png] dave.gard...@imagini.net
[image: icon-web.png] http://www.visualdna.com

Imagini Europe Limited, Company number 5565112 (England
and Wales), Registered address: c/o Bird  Bird,
90 Fetter Lane, London, EC4A 1EQ, United Kingdom


Re: Upgrading from 0.6 to 0.7.0

2011-01-21 Thread Daniel Josefsson
No, what I'm thinking of is having two clusters (0.6 and 0.7) running on
different ports so they can't find each other. Or isn't that configurable?

Then, when I have the two clusters, I could upgrade all of the clients to
run against the new cluster, and finally upgrade the rest of the Cassandra
nodes.

I don't know how the new cluster would cope with having new data in the old
cluster when they are upgraded though.

/Daniel

2011/1/20 Aaron Morton aa...@thelastpickle.com

 I'm not sure if your suggesting running a mixed mode cluster there, but
 AFAIK the changes to the internode protocol prohibit this. The nodes will
 probable see each either via gossip, but the way the messages define their
 purpose (their verb handler) has been changed.

 Out of interest which is more painful, stopping the cluster and upgrading
 it or upgrading your client code?

 Aaron

 On 21/01/2011, at 12:35 AM, Daniel Josefsson jid...@gmail.com wrote:

 In our case our replication factor is more than half the number of nodes in
 the cluster.

 Would it be possible to do the following:

- Upgrade half of them
- Change Thrift Port and inter-server port (is this the storage_port?)
- Start them up
- Upgrade clients one by one
- Upgrade the the rest of the servers

 Or might we get some kind of data collision when still writing to the old
 cluster as the new storage is being used?

 /Daniel




Re: Upgrading from 0.6 to 0.7.0

2011-01-21 Thread Dave Gardner
What about executing writes against both clusters during the changeover?
Interested in this topic because we're currently thinking about the same
thing - how to upgrade to 0.7 without any interruption.

Dave

On 21 January 2011 09:20, Daniel Josefsson jid...@gmail.com wrote:

 No, what I'm thinking of is having two clusters (0.6 and 0.7) running on
 different ports so they can't find each other. Or isn't that configurable?

 Then, when I have the two clusters, I could upgrade all of the clients to
 run against the new cluster, and finally upgrade the rest of the Cassandra
 nodes.

 I don't know how the new cluster would cope with having new data in the old
 cluster when they are upgraded though.

 /Daniel

 2011/1/20 Aaron Morton aa...@thelastpickle.com

 I'm not sure if your suggesting running a mixed mode cluster there, but
 AFAIK the changes to the internode protocol prohibit this. The nodes will
 probable see each either via gossip, but the way the messages define their
 purpose (their verb handler) has been changed.

 Out of interest which is more painful, stopping the cluster and upgrading
 it or upgrading your client code?

 Aaron

 On 21/01/2011, at 12:35 AM, Daniel Josefsson jid...@gmail.com wrote:

 In our case our replication factor is more than half the number of nodes
 in the cluster.

 Would it be possible to do the following:

- Upgrade half of them
- Change Thrift Port and inter-server port (is this the storage_port?)
- Start them up
- Upgrade clients one by one
- Upgrade the the rest of the servers

 Or might we get some kind of data collision when still writing to the old
 cluster as the new storage is being used?

 /Daniel





client threads locked up - JIRA ISSUE 1594

2011-01-21 Thread Arijit Mukherjee
Hi All

I'm facing the same issue as this one mentioned here -
https://issues.apache.org/jira/browse/CASSANDRA-1594

Is there any solution or work-around for this?

Regards
Arijit


-- 
And when the night is cloudy,
There is still a light that shines on me,
Shine on until tomorrow, let it be.


Re: Does Major Compaction work on dropped CFs? Doesn't seem so.

2011-01-21 Thread Maxim Potekhin

Thanks Jonathan,

sorry for confusing terms. In any event -- does one have to whack the 
obsoleted

data manually on all nodes??

Regards
Maxim

On 1/20/2011 10:51 PM, Jonathan Ellis wrote:

obsolete sstables are not the same thing as tombstones.

On Thu, Jan 20, 2011 at 8:11 PM, buddhasystempotek...@bnl.gov  wrote:

Thanks!

What's strange anyhow is that the GC period for these cfs expired some days
ago. I thought that a compaction would take care of these tombstones. I used
nodetool to compact.

--
View this message in context: 
http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/Does-Major-Compaction-work-on-dropped-CFs-Doesn-t-seem-so-tp5946031p5946231.html
Sent from the cassandra-u...@incubator.apache.org mailing list archive at 
Nabble.com.








the java client problem

2011-01-21 Thread raoyixuan (Shandy)
I exec the code as below by hector client:

package com.riptano.cassandra.hector.example;
import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.hector.api.Cluster;
import me.prettyprint.hector.api.Keyspace;
import me.prettyprint.hector.api.beans.HColumn;
import me.prettyprint.hector.api.exceptions.HectorException;
import me.prettyprint.hector.api.factory.HFactory;
import me.prettyprint.hector.api.mutation.Mutator;
import me.prettyprint.hector.api.query.ColumnQuery;
import me.prettyprint.hector.api.query.QueryResult;

public class InsertSingleColumn {
private static StringSerializer stringSerializer = StringSerializer.get();

public static void main(String[] args) throws Exception {
Cluster cluster = HFactory.getOrCreateCluster(TestCluster, 
*.*.*.*:9160);

Keyspace keyspaceOperator = HFactory.createKeyspace(Shandy, cluster);

try {
MutatorString mutator = HFactory.createMutator(keyspaceOperator, 
StringSerializer.get());
mutator.insert(jsmith, Standard1, 
HFactory.createStringColumn(first, John));

ColumnQueryString, String, String columnQuery = 
HFactory.createStringColumnQuery(keyspaceOperator);

columnQuery.setColumnFamily(Standard1).setKey(jsmith).setName(first);
QueryResultHColumnString, String result = columnQuery.execute();

System.out.println(Read HColumn from cassandra:  + result.get());
System.out.println(Verify on CLI with:  get 
Keyspace1.Standard1['jsmith'] );

} catch (HectorException e) {
e.printStackTrace();
}
cluster.getConnectionManager().shutdown();
}

}

And it shows the error :

me.prettyprint.hector.api.exceptions.HInvalidRequestException: 
InvalidRequestException(why:unconfigured columnfamily Standard1)
  at 
me.prettyprint.cassandra.service.ExceptionsTranslatorImpl.translate(ExceptionsTranslatorImpl.java:42)
  at 
me.prettyprint.cassandra.service.KeyspaceServiceImpl$1.execute(KeyspaceServiceImpl.java:95)
  at 
me.prettyprint.cassandra.service.KeyspaceServiceImpl$1.execute(KeyspaceServiceImpl.java:88)
  at 
me.prettyprint.cassandra.service.Operation.executeAndSetResult(Operation.java:89)
  at 
me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(HConnectionManager.java:142)
  at 
me.prettyprint.cassandra.service.KeyspaceServiceImpl.operateWithFailover(KeyspaceServiceImpl.java:129)
  at 
me.prettyprint.cassandra.service.KeyspaceServiceImpl.batchMutate(KeyspaceServiceImpl.java:100)
  at 
me.prettyprint.cassandra.service.KeyspaceServiceImpl.batchMutate(KeyspaceServiceImpl.java:106)
  at 
me.prettyprint.cassandra.model.MutatorImpl$2.doInKeyspace(MutatorImpl.java:149)
  at 
me.prettyprint.cassandra.model.MutatorImpl$2.doInKeyspace(MutatorImpl.java:146)
  at 
me.prettyprint.cassandra.model.KeyspaceOperationCallback.doInKeyspaceAndMeasure(KeyspaceOperationCallback.java:20)
 at 
me.prettyprint.cassandra.model.ExecutingKeyspace.doExecute(ExecutingKeyspace.java:65)
  at 
me.prettyprint.cassandra.model.MutatorImpl.execute(MutatorImpl.java:146)
  at me.prettyprint.cassandra.model.MutatorImpl.insert(MutatorImpl.java:55)
  at 
com.riptano.cassandra.hector.example.InsertSingleColumn.main(InsertSingleColumn.java:21)
Caused by: InvalidRequestException(why:unconfigured columnfamily Standard1)
  at 
org.apache.cassandra.thrift.Cassandra$batch_mutate_result.read(Cassandra.java:16477)
  at 
org.apache.cassandra.thrift.Cassandra$Client.recv_batch_mutate(Cassandra.java:916)
  at 
org.apache.cassandra.thrift.Cassandra$Client.batch_mutate(Cassandra.java:890)
  at 
me.prettyprint.cassandra.service.KeyspaceServiceImpl$1.execute(KeyspaceServiceImpl.java:93)
  ... 13 more


华为技术有限公司 Huawei Technologies Co., Ltd.[Company_logo]




Phone: 28358610
Mobile: 13425182943
Email: raoyix...@huawei.commailto:raoyix...@huawei.com
地址:深圳市龙岗区坂田华为基地 邮编:518129
Huawei Technologies Co., Ltd.
Bantian, Longgang District,Shenzhen 518129, P.R.China
http://www.huawei.com

本邮件及其附件含有华为公司的保密信息,仅限于发送给上面地址中列出的个人或群组。禁
止任何其他人以任何形式使用(包括但不限于全部或部分地泄露、复制、或散发)本邮件中
的信息。如果您错收了本邮件,请您立即电话或邮件通知发件人并删除本邮件!
This e-mail and its attachments contain confidential information from HUAWEI, 
which
is intended only for the person or entity whose address is listed above. Any 
use of the
information contained herein in any way (including, but not limited to, total 
or partial
disclosure, reproduction, or dissemination) by persons other than the intended
recipient(s) is prohibited. If you receive this e-mail in error, please notify 
the sender by
phone or email immediately and delete it!

inline: image001.jpg

Re: the java client problem

2011-01-21 Thread Ashish
you are missing the column family in your keyspace.

If you are using the default definitions of schema shipped with cassandra,
ensure to load the schema from JMX.

thanks
ashish

2011/1/21 raoyixuan (Shandy) raoyix...@huawei.com

  I exec the code as below by hector client:



 *package* com.riptano.cassandra.hector.example;

 *import* me.prettyprint.cassandra.serializers.StringSerializer;

 *import* me.prettyprint.hector.api.Cluster;

 *import* me.prettyprint.hector.api.Keyspace;

 *import* me.prettyprint.hector.api.beans.HColumn;

 *import* me.prettyprint.hector.api.exceptions.HectorException;

 *import* me.prettyprint.hector.api.factory.HFactory;

 *import* me.prettyprint.hector.api.mutation.Mutator;

 *import* me.prettyprint.hector.api.query.ColumnQuery;

 *import* me.prettyprint.hector.api.query.QueryResult;



 *public* *class* InsertSingleColumn {

 *private* *static* StringSerializer *stringSerializer* = StringSerializer.
 *get*();



 *public* *static* *void* main(String[] args) *throws* Exception {

 Cluster cluster = HFactory.*getOrCreateCluster*(TestCluster,
 *.*.*.*:9160);



 Keyspace keyspaceOperator = HFactory.*createKeyspace*(Shandy,
 cluster);



 *try* {

 MutatorString mutator = 
 HFactory.*createMutator*(keyspaceOperator,
 StringSerializer.*get*());

 mutator.insert(jsmith, Standard1, HFactory.*
 createStringColumn*(first, John));



 ColumnQueryString, String, String columnQuery = HFactory.*
 createStringColumnQuery*(keyspaceOperator);


 columnQuery.setColumnFamily(Standard1).setKey(jsmith).setName(first);

 QueryResultHColumnString, String result =
 columnQuery.execute();



 System.*out*.println(Read HColumn from cassandra:  +
 result.get());

 System.*out*.println(Verify on CLI with:  get
 Keyspace1.Standard1['jsmith'] );



 } *catch* (HectorException e) {

 e.printStackTrace();

 }

 cluster.getConnectionManager().shutdown();

 }



 }



 And it shows the error :



 *me.prettyprint.hector.api.exceptions.HInvalidRequestException*:
 InvalidRequestException(why:unconfigured columnfamily Standard1)

   at
 me.prettyprint.cassandra.service.ExceptionsTranslatorImpl.translate(*
 ExceptionsTranslatorImpl.java:42*)

   at me.prettyprint.cassandra.service.KeyspaceServiceImpl$1.execute(*
 KeyspaceServiceImpl.java:95*)

   at me.prettyprint.cassandra.service.KeyspaceServiceImpl$1.execute(*
 KeyspaceServiceImpl.java:88*)

   at me.prettyprint.cassandra.service.Operation.executeAndSetResult(*
 Operation.java:89*)

   at
 me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(
 *HConnectionManager.java:142*)

   at
 me.prettyprint.cassandra.service.KeyspaceServiceImpl.operateWithFailover(*
 KeyspaceServiceImpl.java:129*)

   at me.prettyprint.cassandra.service.KeyspaceServiceImpl.batchMutate(
 *KeyspaceServiceImpl.java:100*)

   at me.prettyprint.cassandra.service.KeyspaceServiceImpl.batchMutate(
 *KeyspaceServiceImpl.java:106*)

   at me.prettyprint.cassandra.model.MutatorImpl$2.doInKeyspace(*
 MutatorImpl.java:149*)

   at me.prettyprint.cassandra.model.MutatorImpl$2.doInKeyspace(*
 MutatorImpl.java:146*)

   at
 me.prettyprint.cassandra.model.KeyspaceOperationCallback.doInKeyspaceAndMeasure(
 *KeyspaceOperationCallback.java:20*)

  at me.prettyprint.cassandra.model.ExecutingKeyspace.doExecute(*
 ExecutingKeyspace.java:65*)

   at me.prettyprint.cassandra.model.MutatorImpl.execute(*
 MutatorImpl.java:146*)

   at me.prettyprint.cassandra.model.MutatorImpl.insert(*
 MutatorImpl.java:55*)

   at com.riptano.cassandra.hector.example.InsertSingleColumn.main(*
 InsertSingleColumn.java:21*)

 Caused by: InvalidRequestException(why:unconfigured columnfamily Standard1)

   at org.apache.cassandra.thrift.Cassandra$batch_mutate_result.read(*
 Cassandra.java:16477*)

   at org.apache.cassandra.thrift.Cassandra$Client.recv_batch_mutate(*
 Cassandra.java:916*)

   at org.apache.cassandra.thrift.Cassandra$Client.batch_mutate(*
 Cassandra.java:890*)

   at me.prettyprint.cassandra.service.KeyspaceServiceImpl$1.execute(*
 KeyspaceServiceImpl.java:93*)

   ... 13 more





 华为技术有限公司 Huawei Technologies Co., Ltd.[image: Company_logo]







 Phone: 28358610
 Mobile: 13425182943
 Email: raoyix...@huawei.com
 地址:深圳市龙岗区坂田华为基地 邮编:518129
 Huawei Technologies Co., Ltd.
 Bantian, Longgang District,Shenzhen 518129, P.R.China
 http://www.huawei.com
  --

 本邮件及其附件含有华为公司的保密信息,仅限于发送给上面地址中列出的个人或群组。禁
 止任何其他人以任何形式使用(包括但不限于全部或部分地泄露、复制、或散发)本邮件中
 的信息。如果您错收了本邮件,请您立即电话或邮件通知发件人并删除本邮件!
 This e-mail and its attachments contain confidential information from
 HUAWEI, which
 is intended only for the person or entity whose address is listed above.
 Any use of the
 information contained herein in any way (including, but not limited to,
 total or partial
 disclosure, 

RE: the java client problem

2011-01-21 Thread raoyixuan (Shandy)
Which schema is it?
From: Ashish [mailto:paliwalash...@gmail.com]
Sent: Friday, January 21, 2011 7:57 PM
To: user@cassandra.apache.org
Subject: Re: the java client problem

you are missing the column family in your keyspace.

If you are using the default definitions of schema shipped with cassandra, 
ensure to load the schema from JMX.

thanks
ashish
2011/1/21 raoyixuan (Shandy) raoyix...@huawei.commailto:raoyix...@huawei.com
I exec the code as below by hector client:

package com.riptano.cassandra.hector.example;
import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.hector.api.Cluster;
import me.prettyprint.hector.api.Keyspace;
import me.prettyprint.hector.api.beans.HColumn;
import me.prettyprint.hector.api.exceptions.HectorException;
import me.prettyprint.hector.api.factory.HFactory;
import me.prettyprint.hector.api.mutation.Mutator;
import me.prettyprint.hector.api.query.ColumnQuery;
import me.prettyprint.hector.api.query.QueryResult;

public class InsertSingleColumn {
private static StringSerializer stringSerializer = StringSerializer.get();

public static void main(String[] args) throws Exception {
Cluster cluster = HFactory.getOrCreateCluster(TestCluster, 
*.*.*.*:9160);

Keyspace keyspaceOperator = HFactory.createKeyspace(Shandy, cluster);

try {
MutatorString mutator = HFactory.createMutator(keyspaceOperator, 
StringSerializer.get());
mutator.insert(jsmith, Standard1, 
HFactory.createStringColumn(first, John));

ColumnQueryString, String, String columnQuery = 
HFactory.createStringColumnQuery(keyspaceOperator);

columnQuery.setColumnFamily(Standard1).setKey(jsmith).setName(first);
QueryResultHColumnString, String result = columnQuery.execute();

System.out.println(Read HColumn from cassandra:  + result.get());
System.out.println(Verify on CLI with:  get 
Keyspace1.Standard1['jsmith'] );

} catch (HectorException e) {
e.printStackTrace();
}
cluster.getConnectionManager().shutdown();
}

}

And it shows the error :

me.prettyprint.hector.api.exceptions.HInvalidRequestException: 
InvalidRequestException(why:unconfigured columnfamily Standard1)
  at 
me.prettyprint.cassandra.service.ExceptionsTranslatorImpl.translate(ExceptionsTranslatorImpl.java:42)
  at 
me.prettyprint.cassandra.service.KeyspaceServiceImpl$1.execute(KeyspaceServiceImpl.java:95)
  at 
me.prettyprint.cassandra.service.KeyspaceServiceImpl$1.execute(KeyspaceServiceImpl.java:88)
  at 
me.prettyprint.cassandra.service.Operation.executeAndSetResult(Operation.java:89)
  at 
me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(HConnectionManager.java:142)
  at 
me.prettyprint.cassandra.service.KeyspaceServiceImpl.operateWithFailover(KeyspaceServiceImpl.java:129)
  at 
me.prettyprint.cassandra.service.KeyspaceServiceImpl.batchMutate(KeyspaceServiceImpl.java:100)
  at 
me.prettyprint.cassandra.service.KeyspaceServiceImpl.batchMutate(KeyspaceServiceImpl.java:106)
  at 
me.prettyprint.cassandra.model.MutatorImpl$2.doInKeyspace(MutatorImpl.java:149)
  at 
me.prettyprint.cassandra.model.MutatorImpl$2.doInKeyspace(MutatorImpl.java:146)
  at 
me.prettyprint.cassandra.model.KeyspaceOperationCallback.doInKeyspaceAndMeasure(KeyspaceOperationCallback.java:20)
 at 
me.prettyprint.cassandra.model.ExecutingKeyspace.doExecute(ExecutingKeyspace.java:65)
  at 
me.prettyprint.cassandra.model.MutatorImpl.execute(MutatorImpl.java:146)
  at me.prettyprint.cassandra.model.MutatorImpl.insert(MutatorImpl.java:55)
  at 
com.riptano.cassandra.hector.example.InsertSingleColumn.main(InsertSingleColumn.java:21)
Caused by: InvalidRequestException(why:unconfigured columnfamily Standard1)
  at 
org.apache.cassandra.thrift.Cassandra$batch_mutate_result.read(Cassandra.java:16477)
  at 
org.apache.cassandra.thrift.Cassandra$Client.recv_batch_mutate(Cassandra.java:916)
  at 
org.apache.cassandra.thrift.Cassandra$Client.batch_mutate(Cassandra.java:890)
  at 
me.prettyprint.cassandra.service.KeyspaceServiceImpl$1.execute(KeyspaceServiceImpl.java:93)
  ... 13 more


华为技术有限公司 Huawei Technologies Co., Ltd.[Image removed by sender. Company_logo]



Phone: 28358610
Mobile: 13425182943
Email: raoyix...@huawei.commailto:raoyix...@huawei.com
地址:深圳市龙岗区坂田华为基地 邮编:518129
Huawei Technologies Co., Ltd.
Bantian, Longgang District,Shenzhen 518129, P.R.China
http://www.huawei.com

本邮件及其附件含有华为公司的保密信息,仅限于发送给上面地址中列出的个人或群组。禁
止任何其他人以任何形式使用(包括但不限于全部或部分地泄露、复制、或散发)本邮件中
的信息。如果您错收了本邮件,请您立即电话或邮件通知发件人并删除本邮件!
This e-mail and its attachments contain confidential information from HUAWEI, 
which
is intended only for the person or entity whose address is listed above. Any 
use of the
information contained herein in any way (including, but not limited to, total 
or partial
disclosure, reproduction, or 

Re: the java client problem

2011-01-21 Thread Ashish
check cassandra-install-dir/conf/cassandra.yaml

start cassandra
connect via jconsole
find MBeans - org.apache.cassandra.db -
StorageServicehttp://wiki.apache.org/cassandra/StorageService
 - Operations - loadSchemaFromYAML

load the schema
and then try the example again.

HTH
ashish

2011/1/21 raoyixuan (Shandy) raoyix...@huawei.com

  Which schema is it?

 *From:* Ashish [mailto:paliwalash...@gmail.com]
 *Sent:* Friday, January 21, 2011 7:57 PM
 *To:* user@cassandra.apache.org
 *Subject:* Re: the java client problem



 you are missing the column family in your keyspace.



 If you are using the default definitions of schema shipped with cassandra,
 ensure to load the schema from JMX.



 thanks

 ashish

 2011/1/21 raoyixuan (Shandy) raoyix...@huawei.com

 I exec the code as below by hector client:



 *package* com.riptano.cassandra.hector.example;

 *import* me.prettyprint.cassandra.serializers.StringSerializer;

 *import* me.prettyprint.hector.api.Cluster;

 *import* me.prettyprint.hector.api.Keyspace;

 *import* me.prettyprint.hector.api.beans.HColumn;

 *import* me.prettyprint.hector.api.exceptions.HectorException;

 *import* me.prettyprint.hector.api.factory.HFactory;

 *import* me.prettyprint.hector.api.mutation.Mutator;

 *import* me.prettyprint.hector.api.query.ColumnQuery;

 *import* me.prettyprint.hector.api.query.QueryResult;



 *public* *class* InsertSingleColumn {

 *private* *static* StringSerializer *stringSerializer* = StringSerializer.
 *get*();



 *public* *static* *void* main(String[] args) *throws* Exception {

 Cluster cluster = HFactory.*getOrCreateCluster*(TestCluster,
 *.*.*.*:9160);



 Keyspace keyspaceOperator = HFactory.*createKeyspace*(Shandy,
 cluster);



 * try* {

 MutatorString mutator = 
 HFactory.*createMutator*(keyspaceOperator,
 StringSerializer.*get*());

 mutator.insert(jsmith, Standard1, HFactory.*
 createStringColumn*(first, John));



 ColumnQueryString, String, String columnQuery = HFactory.*
 createStringColumnQuery*(keyspaceOperator);


 columnQuery.setColumnFamily(Standard1).setKey(jsmith).setName(first);

 QueryResultHColumnString, String result =
 columnQuery.execute();



 System.*out*.println(Read HColumn from cassandra:  +
 result.get());

 System.*out*.println(Verify on CLI with:  get
 Keyspace1.Standard1['jsmith'] );



 } *catch* (HectorException e) {

 e.printStackTrace();

 }

 cluster.getConnectionManager().shutdown();

 }



 }



 And it shows the error :



 *me.prettyprint.hector.api.exceptions.HInvalidRequestException*:
 InvalidRequestException(why:unconfigured columnfamily Standard1)

   at
 me.prettyprint.cassandra.service.ExceptionsTranslatorImpl.translate(*
 ExceptionsTranslatorImpl.java:42*)

   at me.prettyprint.cassandra.service.KeyspaceServiceImpl$1.execute(*
 KeyspaceServiceImpl.java:95*)

   at me.prettyprint.cassandra.service.KeyspaceServiceImpl$1.execute(*
 KeyspaceServiceImpl.java:88*)

   at me.prettyprint.cassandra.service.Operation.executeAndSetResult(*
 Operation.java:89*)

   at
 me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(
 *HConnectionManager.java:142*)

   at
 me.prettyprint.cassandra.service.KeyspaceServiceImpl.operateWithFailover(*
 KeyspaceServiceImpl.java:129*)

   at me.prettyprint.cassandra.service.KeyspaceServiceImpl.batchMutate(
 *KeyspaceServiceImpl.java:100*)

   at me.prettyprint.cassandra.service.KeyspaceServiceImpl.batchMutate(
 *KeyspaceServiceImpl.java:106*)

   at me.prettyprint.cassandra.model.MutatorImpl$2.doInKeyspace(*
 MutatorImpl.java:149*)

   at me.prettyprint.cassandra.model.MutatorImpl$2.doInKeyspace(*
 MutatorImpl.java:146*)

   at
 me.prettyprint.cassandra.model.KeyspaceOperationCallback.doInKeyspaceAndMeasure(
 *KeyspaceOperationCallback.java:20*)

  at me.prettyprint.cassandra.model.ExecutingKeyspace.doExecute(*
 ExecutingKeyspace.java:65*)

   at me.prettyprint.cassandra.model.MutatorImpl.execute(*
 MutatorImpl.java:146*)

   at me.prettyprint.cassandra.model.MutatorImpl.insert(*
 MutatorImpl.java:55*)

   at com.riptano.cassandra.hector.example.InsertSingleColumn.main(*
 InsertSingleColumn.java:21*)

 Caused by: InvalidRequestException(why:unconfigured columnfamily Standard1)

   at org.apache.cassandra.thrift.Cassandra$batch_mutate_result.read(*
 Cassandra.java:16477*)

   at org.apache.cassandra.thrift.Cassandra$Client.recv_batch_mutate(*
 Cassandra.java:916*)

   at org.apache.cassandra.thrift.Cassandra$Client.batch_mutate(*
 Cassandra.java:890*)

   at me.prettyprint.cassandra.service.KeyspaceServiceImpl$1.execute(*
 KeyspaceServiceImpl.java:93*)

   ... 13 more





 华为技术有限公司 Huawei Technologies Co., Ltd.[image: Image removed by sender.
 Company_logo]







 Phone: 28358610
 Mobile: 13425182943
 Email: raoyix...@huawei.com
 

Multiple indexes - how does Cassandra handle these internally?

2011-01-21 Thread buddhasystem

Greetings --

if I use multiple secondary indexes in the query, what will Cassandra do?
Some examples say it will index on first EQ and then loop on others. Does it
ever do a proper index product to avoid inner loops?

Thanks

Maxim

-- 
View this message in context: 
http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/Multiple-indexes-how-does-Cassandra-handle-these-internally-tp5947533p5947533.html
Sent from the cassandra-u...@incubator.apache.org mailing list archive at 
Nabble.com.


the problem of elasticity

2011-01-21 Thread 魏金仙
I've no idea why it doesn't work well.
We are testing Elasticity of Cassandra 0.6.6.We choose 
orderPreservingPartitioner and set replicationFactor as 2.
 We start from 6-server cluster(node A, B,C,D,E,F), which is load balanced. 
roughly every node has 12GB. we then add node G between A and B. the 
InitialToken of G is set to divide the data firstly owned by B, which means if 
we start with 7-server cluster, node G and node B will gain 6GB(other nodes: 
12GB).
The problem is that
1.we go  on with running the workload(read/write=1), then data of node G  
increases very slowly and data of node B doesn't decrease apparently. exactly, 
after three and a half hours, node G gets only 2.85GB.
2.we then stop running the workload and wait for 2 hours. the result is  that  
no data is populated from node B  to node G .
that is, 5.5hours later after adding a new node, we haven't found any data 
moving from Node B to the new Node named G.   
we tried the monitor tool——streams on the new node, result in nothing 
streaming to ...and nothing streaming from..
Did I miss something?







java.lang.AssertionError in MessagingService.receive during heavy write.

2011-01-21 Thread Michael Haspra
Hi all,

I get the following error when I have cassandra running on 2 nodes (I don't
get it when I start only one node).

The startup on both nodes seems to be fine (e.g no error messages).
Then I set up a keyspace and insert some data on one node, that also works.

I start to insert data on both nodes with high load and after a few seconds
i get the the following log output on both nodes:

java.lang.AssertionError
at org.apache.cassandra.net.
MessagingService.receive(MessagingService.java:392)
at
org.apache.cassandra.net.IncomingTcpConnection.run(IncomingTcpConnection.java:84)

followed by TimedOutExceptions.

I get why I have the TimedOutExceptions but I don't know why the
AssertionError occurs.

Is that a configuration problem?

Greets


Re: Multiple indexes - how does Cassandra handle these internally?

2011-01-21 Thread Timo Nentwig
On Jan 21, 2011, at 13:55, buddhasystem wrote:

 if I use multiple secondary indexes in the query, what will Cassandra do?
 Some examples say it will index on first EQ and then loop on others. Does it
 ever do a proper index product to avoid inner loops?

Just asked the same question on the hector-dev group a few minutes ago. Seems 
indeed to be the case that cassandra only uses 1 index. At least this would 
make sense narrowing down issues I have that

 get foo where col1=cond1 and col2=cond2

works while flipping conditions 

 get foo where col2=cond2 and col1=cond1

returns no results no more.

Unfortunately nobody around here seems to care...

Re: Multiple indexes - how does Cassandra handle these internally?

2011-01-21 Thread Maxim Potekhin

But Timo, this is even more mysterious! If both conditions are met, at least
something must be returned in the second query. Have you tried this in CLI?
That would allow you to at least alleviate client concerns.

On 1/21/2011 10:38 AM, Timo Nentwig wrote:

On Jan 21, 2011, at 13:55, buddhasystem wrote:


if I use multiple secondary indexes in the query, what will Cassandra do?
Some examples say it will index on first EQ and then loop on others. Does it
ever do a proper index product to avoid inner loops?

Just asked the same question on the hector-dev group a few minutes ago. Seems 
indeed to be the case that cassandra only uses 1 index. At least this would 
make sense narrowing down issues I have that

  get foo where col1=cond1 and col2=cond2

works while flipping conditions

  get foo where col2=cond2 and col1=cond1

returns no results no more.

Unfortunately nobody around here seems to care...




Re: Multiple indexes - how does Cassandra handle these internally?

2011-01-21 Thread Timo Nentwig
On Jan 21, 2011, at 16:46, Maxim Potekhin wrote:

 But Timo, this is even more mysterious! If both conditions are met, at least
 something must be returned in the second query. Have you tried this in CLI?
 That would allow you to at least alleviate client concerns.


I did this on the CLI only so far. So value comparison on the index seems to be 
done differently than in the nested loop...or something. Don't know, don't know 
the code base well enough to debug this down to the very bottom either. But 
it's actually only a CF with 2 cols (AsciiType and IntegerType) and a command 
in the CLI so not too time-consuming to reproduce.

Re: Embedded Cassandra server startup question

2011-01-21 Thread Anand Somani
It is a little slow not to the point where it concerns me (only have few
tests for now), but keeps things very clean so no surprise effects.



On Thu, Jan 20, 2011 at 6:33 PM, Roshan Dawrani roshandawr...@gmail.comwrote:

 On Fri, Jan 21, 2011 at 5:14 AM, Anand Somani meatfor...@gmail.comwrote:

 Here is what worked for me, I use testNg, and initialize and createschema
 in the @BeforeClass for each test

- In the @AfterClass, I had to drop schema, otherwise I was getting
the same exception.
- After this I started getting port conflict with the second test, so
I added my own version of EmbeddedCass.. class, added a stop which calls a
stop on the cassandradaemon (which from code comments seems to closes the
thrift port)

 How was this clean-up experience, Anand? Shutting down the cassandra
 daemon and droping and creating schema between tests? Sounds like something
 that could be time consuming.

 I am currently firing all-deletes on all my CFs and am looking for more
 efficient ways to have data cleaned-up between tests.

 Thanks.



Re: Multiple indexes - how does Cassandra handle these internally?

2011-01-21 Thread Maxim Potekhin

Well it does sound like a bug in Cassandra. Indexes MUST commute.

I really need this functionality, it's a show stopper for me...

On 1/21/2011 10:56 AM, Timo Nentwig wrote:

On Jan 21, 2011, at 16:46, Maxim Potekhin wrote:


But Timo, this is even more mysterious! If both conditions are met, at least
something must be returned in the second query. Have you tried this in CLI?
That would allow you to at least alleviate client concerns.


I did this on the CLI only so far. So value comparison on the index seems to be 
done differently than in the nested loop...or something. Don't know, don't know 
the code base well enough to debug this down to the very bottom either. But 
it's actually only a CF with 2 cols (AsciiType and IntegerType) and a command 
in the CLI so not too time-consuming to reproduce.




Re: client threads locked up - JIRA ISSUE 1594

2011-01-21 Thread Nate McCall
What versions of Cassandra and Hector? The versions mentioned on this
ticket are both several releases behind.

On Fri, Jan 21, 2011 at 3:53 AM, Arijit Mukherjee ariji...@gmail.com wrote:
 Hi All

 I'm facing the same issue as this one mentioned here -
 https://issues.apache.org/jira/browse/CASSANDRA-1594

 Is there any solution or work-around for this?

 Regards
 Arijit


 --
 And when the night is cloudy,
 There is still a light that shines on me,
 Shine on until tomorrow, let it be.



Re: UnserializableColumnFamilyException: Couldn't find cfId

2011-01-21 Thread Ching-Cheng Chen
We have similar exception before, and the root cause was like Aaron
mentioned.

You will encounter this exception If you have code create CF on the fly and
data was insert into the node which hasn't got schema synced yet.

You will have to call describe_schema_version() to ensure all nodes has same
schema before you start insert data into newly create CF.

Regards,

Chen

On Thu, Jan 20, 2011 at 5:34 PM, Aaron Morton aa...@thelastpickle.comwrote:

 Sounds like there are multiple versions of your schema around the cluster.
 What client API are you using? Does it support
 the describe_schema_versions() function? This will tell you how many
 versions there are.

 The easy solutions here is scrub the data and start a new 0.7 cluster using
 the release version.If possible you should not use data created in the non
 release versions once you get to production.

 Hope that helps.
 Aaron


 On 21 Jan, 2011,at 09:15 AM, Oleg Proudnikov ol...@cloudorange.com
 wrote:

 Hi All,

 Could you please help me understand the impact on my data?

 I am running a 6 node 0.7-rc4 Cassandra cluster with RF=2. Schema was
 defined
 when the cluster was created and did not change. I am doing batch load with
 CL=ONE. The cluster is under some stress in memory and I/O. Each node has
 1G
 heap. CPU is around 10% but the latency is high.

 I saw this exception on 2 out of 6 nodes in a relatively short window of
 time.
 Hector clients received no exception and the nodes continued running. The
 exception has not happened since even though the load is continuing.
 I do get an occasional OOM and I am adjusting thresholds and other
 settings as I go. I also doubled RAM to 2G since the exception.

 Here is the exception - the same stack trace in all cases.
 org.apache.cassandra.db.UnserializableColumnFamilyException: C
 ouldn't find cfId=1004
 at org.apache.cassandra.dbColumnFamilySerializer.deserialize

 (ColumnFamilySerializer.java:117)
 at org.apache.cassandra.db.RowMutationSerializer.defreezeTheMaps
 (RowMutation.java:385)
 at org.apache.cassandra.db.RowMutationSerializer.deserialize
 (RowMutation.java:395)
 at org.apache.cassandra.db.RowMutationSerializer.deserialize
 (RowMutation.java:353)
 at org.apache.cassandra.db.RowMutationVerbHandler.doVerb
 (RowMutationVerbHandler.java:52)
 at org.apache.cassandra.net.MessageDeliveryTask.run
 (MessageDeliveryTask.java:63)
 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
 at java.lang.Thread.run(Unknown Source)


 It refers to two cfIds - cfId=1004 and cfId=1013. Mutation stages are
 always
 different even for the exceptions appearing within the same millisecond.
 As you can see below cfId=004 appears on both nodes several times but at
 different times while cfId=0013 appears only once on one node.

 It happened as a group within one second on one node and in 5 groups spread
 across 45 minutes on another node. I left the first log entry of each
 group.

 xxx.xxx.xxx.140 grep -i cfid -B 1 log/cassandra.log
 xxx.xxx.xxx.141 grep -i cfid -B 1 log/cassandra.log
 xxx.xxx.xxx.142 grep -i cfid -B 1 log/cassandra.log
 xxx.xxx.xxx.143 grep -i cfid -B 1 log/cassandra.log


 xxx.xxx.xxx.144 grep -i cfid -B 1 log/cassandra.log
 ERROR [MutationStage:11] 2011-01-14 15:02:03,911
 RowMutationVerbHandler.java
 (line 83) Error in row mutation
 org.apache.cassandra.db.UnserializableColumnFamilyException:
 Couldn't find cfId=1004


 xxx.xxx.xxx.145 grep -i cfid -B 1 log/cassandra.log
 ERROR [MutationStage:1] 2011-01-14 15:02:34,460 RowMutationVerbHandler.java
 (line 83) Error in row mutation
 org.apache.cassandra.db.UnserializableColumnFamilyException:
 Couldn't find cfId=1004
 --
 ERROR [MutationStage:13] 2011-01-14 15:03:28,637
 RowMutationVerbHandler.java
 (line 83) Error in row mutation
 org.apache.cassandra.db.UnserializableColumnFamilyException:
 Couldn't find cfId=1004
 --
 ERROR [MutationStage:27] 2011-01-14 15:05:02,513
 RowMutationVerbHandler.java
 (line 83) Error in row mutation
 org.apache.cassandra.db.UnserializableColumnFamilyException:
 Couldn't find cfId=1004
 --
 ERROR [MutationStage:4] 2011-01-14 15:12:30,731 RowMutationVerbHandler.java
 (line 83) Error in row mutation
 org.apache.cassandra.db.UnserializableColumnFamilyException:
 Couldn't find cfId=1004
 --
 ERROR [MutationStage:23] 2011-01-14 15:47:03,416
 RowMutationVerbHandler.java
 (line 83) Error in row mutation
 org.apache.cassandra.db.UnserializableColumnFamilyException:
 Couldn't find cfId=1013



 Q. What does this mean for the consistency? Am I still within my guarantee
 of
 CL=ONE?



 NOTE: I experienced similar exceptions in 0.7-rc2 but at that time cfIds
 looked
 corrupted. They were random/negative and these exceptions
 were followed by an OOM with an attempt to allocate a huge HeapByteBuffer.

 Thank you very much,
 Oleg






The authorize method of IAuthority

2011-01-21 Thread indika kumara
Hi All,

Shouldn't the existing method be changed to the following?

public boolean authorize(AuthenticatedUser user, ListObject resource,
Permission permission);   // checks the authority for a given user for a
given resource for a given permission

The existing method:

public EnumSetPermission authorize(AuthenticatedUser user, ListObject
resource);

I noticed that we retrieved all permissions and checks
'perms.contains(perm)'  ... May permissions be cached at later?

Thanks,

Indika


Re: Cassandra on iSCSI?

2011-01-21 Thread Jonathan Ellis
On Fri, Jan 21, 2011 at 2:19 AM, Mick Semb Wever m...@apache.org wrote:

 Of course with a SAN you'd want RF=1 since it's replicating
 internally.

 Isn't this the same case for raid-5 as well?

No, because the replication is (mainly) to protect you from machine
failures; if the SAN is a SPOF then putting more replicas on it
doesn't help.

 And we want RF=2 if we need to keep reading while doing rolling
 restarts?

Yes.

-- 
Jonathan Ellis
Project Chair, Apache Cassandra
co-founder of Riptano, the source for professional Cassandra support
http://riptano.com


Re: The authorize method of IAuthority

2011-01-21 Thread Eric Evans
On Fri, 2011-01-21 at 22:45 +0600, indika kumara wrote:
 Shouldn't the existing method be changed to the following?
 
 public boolean authorize(AuthenticatedUser user, ListObject
 resource,
 Permission permission);   // checks the authority for a given user for
 a
 given resource for a given permission

I don't think so, no.  This method is answering the question, Given a
resource, what is this user allowed to do?.  It's the job of
o.a.c.service.ClientState to call authorize() and determine if the set
of returned Permissions allows a given operation on that resource.

If you don't want the additional granularity you can simple return
Permission.ALL.

 The existing method:
 
 public EnumSetPermission authorize(AuthenticatedUser user,
 ListObject
 resource);
 
 I noticed that we retrieved all permissions and checks
 'perms.contains(perm)'  ... May permissions be cached at later?

Classes implementing IAuthority are free to perform caching as they see
fit, yes.

-- 
Eric Evans
eev...@rackspace.com



Re: Does Major Compaction work on dropped CFs? Doesn't seem so.

2011-01-21 Thread Jonathan Ellis
No, that's explained in the link Aaron gave.

On Fri, Jan 21, 2011 at 5:20 AM, Maxim Potekhin potek...@bnl.gov wrote:
 Thanks Jonathan,

 sorry for confusing terms. In any event -- does one have to whack the
 obsoleted
 data manually on all nodes??

 Regards
 Maxim

 On 1/20/2011 10:51 PM, Jonathan Ellis wrote:

 obsolete sstables are not the same thing as tombstones.

 On Thu, Jan 20, 2011 at 8:11 PM, buddhasystempotek...@bnl.gov  wrote:

 Thanks!

 What's strange anyhow is that the GC period for these cfs expired some
 days
 ago. I thought that a compaction would take care of these tombstones. I
 used
 nodetool to compact.

 --
 View this message in context:
 http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/Does-Major-Compaction-work-on-dropped-CFs-Doesn-t-seem-so-tp5946031p5946231.html
 Sent from the cassandra-u...@incubator.apache.org mailing list archive at
 Nabble.com.








-- 
Jonathan Ellis
Project Chair, Apache Cassandra
co-founder of Riptano, the source for professional Cassandra support
http://riptano.com


Re: java.lang.AssertionError in MessagingService.receive during heavy write.

2011-01-21 Thread Jonathan Ellis
What version?

On Fri, Jan 21, 2011 at 9:20 AM, Michael Haspra mhas...@gmail.com wrote:
 Hi all,

 I get the following error when I have cassandra running on 2 nodes (I don't
 get it when I start only one node).

 The startup on both nodes seems to be fine (e.g no error messages).
 Then I set up a keyspace and insert some data on one node, that also works.

 I start to insert data on both nodes with high load and after a few seconds
 i get the the following log output on both nodes:

 java.lang.AssertionError
     at org.apache.cassandra.net.
 MessagingService.receive(MessagingService.java:392)
     at
 org.apache.cassandra.net.IncomingTcpConnection.run(IncomingTcpConnection.java:84)

 followed by TimedOutExceptions.

 I get why I have the TimedOutExceptions but I don't know why the
 AssertionError occurs.

 Is that a configuration problem?

 Greets



-- 
Jonathan Ellis
Project Chair, Apache Cassandra
co-founder of Riptano, the source for professional Cassandra support
http://riptano.com


Re: java.lang.AssertionError in MessagingService.receive during heavy write.

2011-01-21 Thread Michael Haspra
Oh sorry:

The version is 0.7.0-beta3-SNAPSHOT



2011/1/21 Jonathan Ellis jbel...@gmail.com

 What version?

 On Fri, Jan 21, 2011 at 9:20 AM, Michael Haspra mhas...@gmail.com wrote:
  Hi all,
 
  I get the following error when I have cassandra running on 2 nodes (I
 don't
  get it when I start only one node).
 
  The startup on both nodes seems to be fine (e.g no error messages).
  Then I set up a keyspace and insert some data on one node, that also
 works.
 
  I start to insert data on both nodes with high load and after a few
 seconds
  i get the the following log output on both nodes:
 
  java.lang.AssertionError
  at org.apache.cassandra.net.
  MessagingService.receive(MessagingService.java:392)
  at
 
 org.apache.cassandra.net.IncomingTcpConnection.run(IncomingTcpConnection.java:84)
 
  followed by TimedOutExceptions.
 
  I get why I have the TimedOutExceptions but I don't know why the
  AssertionError occurs.
 
  Is that a configuration problem?
 
  Greets



 --
 Jonathan Ellis
 Project Chair, Apache Cassandra
 co-founder of Riptano, the source for professional Cassandra support
 http://riptano.com



Re: Distributed counters

2011-01-21 Thread Rustam Aliyev

Hi Kelvin,

Thanks for sharing! That's exactly what I was looking for.

Good luck with the migration.

Regards,
Rustam.


On 20/01/2011 17:40, Kelvin Kakugawa wrote:

Hi Rustam,

All of our large production clusters are still on 0.6.6.

However, we have an 0.7 branch, here:
https://github.com/kakugawa/cassandra/tree/twttr-cassandra-0.7-counts

that is our migration target.  It passes our internal distributed 
tests and will be in production soon.


-Kelvin

On Thu, Jan 20, 2011 at 8:24 AM, Nate McCall n...@riptano.com 
mailto:n...@riptano.com wrote:


On the Hector side, we will be adding this to trunk (and thus moving
Hector trunk to Cassandra 0.8.x) in the next week or two.

On Wed, Jan 19, 2011 at 6:12 PM, Rustam Aliyev rus...@code.az
mailto:rus...@code.az wrote:
 Hi,

 Does anyone use CASSANDRA-1072 counters patch with 0.7 stable
branch? I need
 this functionality but can't wait until 0.8.

 Also, does Hector trunk version has any support for these
counters? (this
 question is probably for hector-users group, but most of us
anyway here).

 Many thanks,
 Rustam Aliyev.






GeoIndexing in Cassandra, Open Sourced?

2011-01-21 Thread Joseph Stein
I hear that a bunch of folks have GeoIndexing built on top of Cassandra and
running in production.

Any of them open sourced (Twitter? SimpleGeo? Bueller?) planning on it?

/*
Joe Stein
http://www.linkedin.com/in/charmalloc
Twitter: @allthingshadoop
*/


Re: GeoIndexing in Cassandra, Open Sourced?

2011-01-21 Thread Ryan King
Not open source, but here's a preso on how simplegeo do it:

http://www.slideshare.net/mmalone/scaling-gis-data-in-nonrelational-data-stores

Note: we do it very differently here at Twitter (but aren't at liberty
to discuss in detail)– I say this just to point out that there are
several valid strategies.

-ryan

On Fri, Jan 21, 2011 at 10:02 AM, Joseph Stein crypt...@gmail.com wrote:
 I hear that a bunch of folks have GeoIndexing built on top of Cassandra and
 running in production.
 Any of them open sourced (Twitter? SimpleGeo? Bueller?) planning on it?

 /*
 Joe Stein
 http://www.linkedin.com/in/charmalloc
 Twitter: @allthingshadoop
 */



Re: GeoIndexing in Cassandra, Open Sourced?

2011-01-21 Thread Jake Luciani
One possible open source approach would be to use the Solr 1.4 spatial
plugin[1] along with Solandra[2]

What kind of spatial searches are you looking for? basic bounding
box/radius?

[1] https://github.com/outoftime/solr-spatial-light
[2] https://github.com/tjake/lucandra



On Fri, Jan 21, 2011 at 1:09 PM, Ryan King r...@twitter.com wrote:

 Not open source, but here's a preso on how simplegeo do it:


 http://www.slideshare.net/mmalone/scaling-gis-data-in-nonrelational-data-stores

 Note: we do it very differently here at Twitter (but aren't at liberty
 to discuss in detail)– I say this just to point out that there are
 several valid strategies.

 -ryan

 On Fri, Jan 21, 2011 at 10:02 AM, Joseph Stein crypt...@gmail.com wrote:
  I hear that a bunch of folks have GeoIndexing built on top of Cassandra
 and
  running in production.
  Any of them open sourced (Twitter? SimpleGeo? Bueller?) planning on it?
 
  /*
  Joe Stein
  http://www.linkedin.com/in/charmalloc
  Twitter: @allthingshadoop
  */
 



Re: GeoIndexing in Cassandra, Open Sourced?

2011-01-21 Thread Mike Malone
A more recent preso I gave about the SimpleGeo architecture is up at
http://strangeloop2010.com/system/talks/presentations/000/014/495/Malone-DimensionalDataDHT.pdf

Mike

On Fri, Jan 21, 2011 at 10:02 AM, Joseph Stein crypt...@gmail.com wrote:

 I hear that a bunch of folks have GeoIndexing built on top of Cassandra and
 running in production.

 Any of them open sourced (Twitter? SimpleGeo? Bueller?) planning on it?

 /*
 Joe Stein
 http://www.linkedin.com/in/charmalloc
 Twitter: @allthingshadoop
 */



Re: Cassandra on iSCSI?

2011-01-21 Thread Edward Capriolo
On Fri, Jan 21, 2011 at 12:07 PM, Jonathan Ellis jbel...@gmail.com wrote:
 On Fri, Jan 21, 2011 at 2:19 AM, Mick Semb Wever m...@apache.org wrote:

 Of course with a SAN you'd want RF=1 since it's replicating
 internally.

 Isn't this the same case for raid-5 as well?

 No, because the replication is (mainly) to protect you from machine
 failures; if the SAN is a SPOF then putting more replicas on it
 doesn't help.

 And we want RF=2 if we need to keep reading while doing rolling
 restarts?

 Yes.

 --
 Jonathan Ellis
 Project Chair, Apache Cassandra
 co-founder of Riptano, the source for professional Cassandra support
 http://riptano.com


If you are using cassandra with a SAN RF=1 makes sense because we are
making the assumption the san is already replicating your data. RF2
makes good sense to be not effected by outages. Another alternative is
something like linux-HA and manage each cassandra instance as a
resource. This way if a head goes down another node linux ha would
detect the failure and bring up that instance on another physical
piece of hardware.

Using LinuxHA+SAN+Cassandra would actually bring Cassandra closer to
the hbase model which you have a distributed file system but the front
end Cassandra acts like a region server.


Re: java.lang.AssertionError in MessagingService.receive during heavy write.

2011-01-21 Thread Jonathan Ellis
I don't see an assert in current 0.7 MessagingService that looks like
a candidate for that.  So it's probably fixed.

Since apparently you're comfortable running snapshot builds, I'd
upgrade to the latest 0.7 branch.  At least then you'd be running into
new bugs and not two month old ones.

On Fri, Jan 21, 2011 at 11:24 AM, Michael Haspra mhas...@gmail.com wrote:
 Oh sorry:
 The version is 0.7.0-beta3-SNAPSHOT


 2011/1/21 Jonathan Ellis jbel...@gmail.com

 What version?

 On Fri, Jan 21, 2011 at 9:20 AM, Michael Haspra mhas...@gmail.com wrote:
  Hi all,
 
  I get the following error when I have cassandra running on 2 nodes (I
  don't
  get it when I start only one node).
 
  The startup on both nodes seems to be fine (e.g no error messages).
  Then I set up a keyspace and insert some data on one node, that also
  works.
 
  I start to insert data on both nodes with high load and after a few
  seconds
  i get the the following log output on both nodes:
 
  java.lang.AssertionError
      at org.apache.cassandra.net.
  MessagingService.receive(MessagingService.java:392)
      at
 
  org.apache.cassandra.net.IncomingTcpConnection.run(IncomingTcpConnection.java:84)
 
  followed by TimedOutExceptions.
 
  I get why I have the TimedOutExceptions but I don't know why the
  AssertionError occurs.
 
  Is that a configuration problem?
 
  Greets



 --
 Jonathan Ellis
 Project Chair, Apache Cassandra
 co-founder of Riptano, the source for professional Cassandra support
 http://riptano.com





-- 
Jonathan Ellis
Project Chair, Apache Cassandra
co-founder of Riptano, the source for professional Cassandra support
http://riptano.com


Re: Cassandra on iSCSI?

2011-01-21 Thread Anthony John
Sort of - do not agree!!

This is the Shared nothing V/s Shared Disk debate. There are many mainstream
RDBMS products that pretend to do horizontal scalability with Shared Disks.
They have the kinds of problems that Cassandra is specifically architected
to avoid!

The original question here has 2 aspects to it:-
1. Is iSCSI SAN good enough - My take is that it is still the poor man's SAN
as compared to FC based SANs. Having said that,  they have found increasing
adoption and the performance penalty is really marginal. Couple that with
the fact that Cassandra is architected to reduce the need for high
performance storage systems via features like reducing of random writes etc.
So net net - a reasonable iSCSI SAN should work.
2. Does it make sense to use a SPOF SAN - again this militates again the
architectural underpinnings of Cassandra, that relies on the shared nothing
idea to ensure that problems - say a bad disk - are easily isolated to a
particular node. On a SAN, depending on RAID configs, and how LUNs are
carved out and so on, a few disk outages could affect multiple nodes. A
performance problem with the SAN, could now affects your entire Cassandra
cluster, and so on. Cassandra is not meant to be set up this way!

But but but...in the real world today - Large storage volumes are available
only with SANs. Rackable machines do not leave a lot of space - typically -
for a bunch of HDDs. On top of that, SANs provide all kinds of admin
capabilities that supposedly help with uptime and performance guarantees and
so on. So a Colo DC might not have any other option but shared storage!

So if one is forced to use a SAN, how should you set up Cassandra is the
interesting question - to me! Here are some thoughts:-
1. Ensure that each node gets dedicated - not shared - LUNs
2. Ensure that these LUNs do share spindles, or nodes will seize to be
isolatable (this will be tough to get, given how SAN administrators think
about this)
3. Most SANs deliver performance by striping (RAID 0) - sacrifice striping
for isolation if push comes to shove
4. Do not share data directories from mutliple nodes onto a single location
via NFS or CFS for example. They are cool in shared resource environments,
but breaks the premise behind Cassandra. All data storage should be private
to the cassandra node, even when on shared storage
5. Do not change any assumption around Replication Factor (RF) or
Consistency Levle (CL) due to the shared storage - in fact if anything,
increase your replication factor because you now have potential SPOF
storage.

My two - or maybe more - cents on the issue,

HTH,

-JA
On Fri, Jan 21, 2011 at 1:15 PM, Edward Capriolo edlinuxg...@gmail.comwrote:

 On Fri, Jan 21, 2011 at 12:07 PM, Jonathan Ellis jbel...@gmail.com
 wrote:
  On Fri, Jan 21, 2011 at 2:19 AM, Mick Semb Wever m...@apache.org wrote:
 
  Of course with a SAN you'd want RF=1 since it's replicating
  internally.
 
  Isn't this the same case for raid-5 as well?
 
  No, because the replication is (mainly) to protect you from machine
  failures; if the SAN is a SPOF then putting more replicas on it
  doesn't help.
 
  And we want RF=2 if we need to keep reading while doing rolling
  restarts?
 
  Yes.
 
  --
  Jonathan Ellis
  Project Chair, Apache Cassandra
  co-founder of Riptano, the source for professional Cassandra support
  http://riptano.com
 

 If you are using cassandra with a SAN RF=1 makes sense because we are
 making the assumption the san is already replicating your data. RF2
 makes good sense to be not effected by outages. Another alternative is
 something like linux-HA and manage each cassandra instance as a
 resource. This way if a head goes down another node linux ha would
 detect the failure and bring up that instance on another physical
 piece of hardware.

 Using LinuxHA+SAN+Cassandra would actually bring Cassandra closer to
 the hbase model which you have a distributed file system but the front
 end Cassandra acts like a region server.



Re: Does Major Compaction work on dropped CFs? Doesn't seem so.

2011-01-21 Thread Peter Schuller
 What's strange anyhow is that the GC period for these cfs expired some days
 ago. I thought that a compaction would take care of these tombstones. I used
 nodetool to compact.

I think the confusion here is that GC when mentioned in terms of
sstable removal refers to the JVM garbage collection. GCGraceSeconds
with respect to tombstones is different, and refers to garbage
collecting tombstones by removing them during compaction.

-- 
/ Peter Schuller


Re: Upgrading from 0.6 to 0.7.0

2011-01-21 Thread Aaron Morton
Yup, you can use diff ports and you can give them different cluster names and 
different seed lists.

After you upgrade the second cluster partition the data should repair across, 
either via RR or the HHs that were stored while the first partition was down. 
Easiest thing would be to run node tool repair. Then a clean up to remove any 
leftover data.

AFAIK file formats are compatible. But drain the nodes before upgrading to 
clear the log.

Can you test this on a non production system?

Aaron
(we really need to write some upgrade docs:))

On 21/01/2011, at 10:42 PM, Dave Gardner dave.gard...@imagini.net wrote:

 What about executing writes against both clusters during the changeover? 
 Interested in this topic because we're currently thinking about the same 
 thing - how to upgrade to 0.7 without any interruption. 
 
 Dave
 
 On 21 January 2011 09:20, Daniel Josefsson jid...@gmail.com wrote:
 No, what I'm thinking of is having two clusters (0.6 and 0.7) running on 
 different ports so they can't find each other. Or isn't that configurable?
 
 Then, when I have the two clusters, I could upgrade all of the clients to run 
 against the new cluster, and finally upgrade the rest of the Cassandra nodes.
 
 I don't know how the new cluster would cope with having new data in the old 
 cluster when they are upgraded though.
 
 /Daniel
 
 2011/1/20 Aaron Morton aa...@thelastpickle.com
 
 I'm not sure if your suggesting running a mixed mode cluster there, but AFAIK 
 the changes to the internode protocol prohibit this. The nodes will probable 
 see each either via gossip, but the way the messages define their purpose 
 (their verb handler) has been changed.
 
 Out of interest which is more painful, stopping the cluster and upgrading it 
 or upgrading your client code?
 
 Aaron
 
 On 21/01/2011, at 12:35 AM, Daniel Josefsson jid...@gmail.com wrote:
 
 In our case our replication factor is more than half the number of nodes in 
 the cluster.
 
 Would it be possible to do the following:
 Upgrade half of them
 Change Thrift Port and inter-server port (is this the storage_port?)
 Start them up
 Upgrade clients one by one
 Upgrade the the rest of the servers
 Or might we get some kind of data collision when still writing to the old 
 cluster as the new storage is being used?
 
 /Daniel
 
 
 


Re: the problem of elasticity

2011-01-21 Thread Peter Schuller
 In general if you think the data is not distributed correctly run nodetool 
 repair on the node. 
 http://wiki.apache.org/cassandra/Operations#Repairing_missing_or_inconsistent_data

And before expecting the old node to throw away it's data, 'nodetool
cleanup' is required (but don't do this while you still have concerns
that the data has not propagated correctly).

-- 
/ Peter Schuller


Re: Upgrading from 0.6 to 0.7.0

2011-01-21 Thread Dave Viner
I agree.  I am running a 0.6 cluster and would like to upgrade to 0.7.  But,
I can not simply stop my existing nodes.

I need a way to load a new cluster - either on the same machines or new
machines - with the existing data.

I think my overall preference would be to upgrade the cluster to 0.7 running
on a new port (or new set of machines), then have a tiny translation service
on the old port which did whatever translation is required from 0.6 protocol
to 0.7 protocol.

Then I would upgrade my clients once to the 0.7 protocol and also change
their connection parameters to the new 0.7 cluster.

But, I'd be open to anything ... just need a way to upgrade without having
to turn everything off, do the upgrade, then turn everything back on.  I am
not able to do that in my production environment (for business reasons).
 Docs on alternatives other than turn off, upgrade, turn on would be
fantastic.

Dave Viner


On Fri, Jan 21, 2011 at 1:01 PM, Aaron Morton aa...@thelastpickle.comwrote:

 Yup, you can use diff ports and you can give them different cluster names
 and different seed lists.

 After you upgrade the second cluster partition the data should repair
 across, either via RR or the HHs that were stored while the first partition
 was down. Easiest thing would be to run node tool repair. Then a clean up to
 remove any leftover data.

 AFAIK file formats are compatible. But drain the nodes before upgrading to
 clear the log.

 Can you test this on a non production system?

 Aaron
 (we really need to write some upgrade docs:))

 On 21/01/2011, at 10:42 PM, Dave Gardner dave.gard...@imagini.net wrote:

 What about executing writes against both clusters during the changeover?
 Interested in this topic because we're currently thinking about the same
 thing - how to upgrade to 0.7 without any interruption.

 Dave

 On 21 January 2011 09:20, Daniel Josefsson  jid...@gmail.com
 jid...@gmail.com wrote:

 No, what I'm thinking of is having two clusters (0.6 and 0.7) running on
 different ports so they can't find each other. Or isn't that configurable?

 Then, when I have the two clusters, I could upgrade all of the clients to
 run against the new cluster, and finally upgrade the rest of the Cassandra
 nodes.

 I don't know how the new cluster would cope with having new data in the
 old cluster when they are upgraded though.

 /Daniel

 2011/1/20 Aaron Morton  aa...@thelastpickle.comaa...@thelastpickle.com
 

 I'm not sure if your suggesting running a mixed mode cluster there, but
 AFAIK the changes to the internode protocol prohibit this. The nodes will
 probable see each either via gossip, but the way the messages define their
 purpose (their verb handler) has been changed.

 Out of interest which is more painful, stopping the cluster and upgrading
 it or upgrading your client code?

 Aaron

 On 21/01/2011, at 12:35 AM, Daniel Josefsson  jid...@gmail.com
 jid...@gmail.com wrote:

 In our case our replication factor is more than half the number of nodes
 in the cluster.

 Would it be possible to do the following:

- Upgrade half of them
- Change Thrift Port and inter-server port (is this the
storage_port?)
- Start them up
- Upgrade clients one by one
- Upgrade the the rest of the servers

 Or might we get some kind of data collision when still writing to the old
 cluster as the new storage is being used?

 /Daniel






Re: java.lang.AssertionError in MessagingService.receive during heavy write.

2011-01-21 Thread Michael Haspra
It seams that this error was caused by an extension sending wrong messages
around, so that Message.getMessageType(). would return null since the verb
was not known to cassandra. Unfortunately I couldn't tell from the error.
But upgrading would be a good idea anyway...

2011/1/21 Jonathan Ellis jbel...@gmail.com

 I don't see an assert in current 0.7 MessagingService that looks like
 a candidate for that.  So it's probably fixed.

 Since apparently you're comfortable running snapshot builds, I'd
 upgrade to the latest 0.7 branch.  At least then you'd be running into
 new bugs and not two month old ones.

 On Fri, Jan 21, 2011 at 11:24 AM, Michael Haspra mhas...@gmail.com
 wrote:
  Oh sorry:
  The version is 0.7.0-beta3-SNAPSHOT
 
 
  2011/1/21 Jonathan Ellis jbel...@gmail.com
 
  What version?
 
  On Fri, Jan 21, 2011 at 9:20 AM, Michael Haspra mhas...@gmail.com
 wrote:
   Hi all,
  
   I get the following error when I have cassandra running on 2 nodes (I
   don't
   get it when I start only one node).
  
   The startup on both nodes seems to be fine (e.g no error messages).
   Then I set up a keyspace and insert some data on one node, that also
   works.
  
   I start to insert data on both nodes with high load and after a few
   seconds
   i get the the following log output on both nodes:
  
   java.lang.AssertionError
   at org.apache.cassandra.net.
   MessagingService.receive(MessagingService.java:392)
   at
  
  
 org.apache.cassandra.net.IncomingTcpConnection.run(IncomingTcpConnection.java:84)
  
   followed by TimedOutExceptions.
  
   I get why I have the TimedOutExceptions but I don't know why the
   AssertionError occurs.
  
   Is that a configuration problem?
  
   Greets
 
 
 
  --
  Jonathan Ellis
  Project Chair, Apache Cassandra
  co-founder of Riptano, the source for professional Cassandra support
  http://riptano.com
 
 



 --
 Jonathan Ellis
 Project Chair, Apache Cassandra
 co-founder of Riptano, the source for professional Cassandra support
 http://riptano.com



Re: GeoIndexing in Cassandra, Open Sourced?

2011-01-21 Thread Joseph Stein
On Fri, Jan 21, 2011 at 1:49 PM, Mike Malone m...@simplegeo.com wrote:

 A more recent preso I gave about the SimpleGeo architecture is up at
 http://strangeloop2010.com/system/talks/presentations/000/014/495/Malone-DimensionalDataDHT.pdf

 Mike

 On Fri, Jan 21, 2011 at 10:02 AM, Joseph Stein crypt...@gmail.com wrote:

 I hear that a bunch of folks have GeoIndexing built on top of Cassandra
 and running in production.

 Any of them open sourced (Twitter? SimpleGeo? Bueller?) planning on it?

 /*
 Joe Stein
 http://www.linkedin.com/in/charmalloc
 Twitter: @allthingshadoop
 */





-- 

/*
Joe Stein
http://www.linkedin.com/in/charmalloc
Twitter: @allthingshadoop
*/


Re: Upgrading from 0.6 to 0.7.0

2011-01-21 Thread Anthony Molinaro
Dual writes would require you to have both a 0.6 and 0.7 client in the same
code base unless you have some sort of intermediate file or queue or something.
Since 0.6 and 0.7 use the same names in their thrift files this won't work,
thus my suggestion of adding a second service to the 0.6 and 0.7 thrift
files called Cassandra6 and having the server support 2 versions of thrift.

That would require a bit of work on the cassandra developers and is probably
no where on their radar, so we need other solutions.

-Anthony

On Fri, Jan 21, 2011 at 09:42:28AM +, Dave Gardner wrote:
 What about executing writes against both clusters during the changeover?
 Interested in this topic because we're currently thinking about the same
 thing - how to upgrade to 0.7 without any interruption.
 
 Dave
 
 On 21 January 2011 09:20, Daniel Josefsson jid...@gmail.com wrote:
 
  No, what I'm thinking of is having two clusters (0.6 and 0.7) running on
  different ports so they can't find each other. Or isn't that configurable?
 
  Then, when I have the two clusters, I could upgrade all of the clients to
  run against the new cluster, and finally upgrade the rest of the Cassandra
  nodes.
 
  I don't know how the new cluster would cope with having new data in the old
  cluster when they are upgraded though.
 
  /Daniel
 
  2011/1/20 Aaron Morton aa...@thelastpickle.com
 
  I'm not sure if your suggesting running a mixed mode cluster there, but
  AFAIK the changes to the internode protocol prohibit this. The nodes will
  probable see each either via gossip, but the way the messages define their
  purpose (their verb handler) has been changed.
 
  Out of interest which is more painful, stopping the cluster and upgrading
  it or upgrading your client code?
 
  Aaron
 
  On 21/01/2011, at 12:35 AM, Daniel Josefsson jid...@gmail.com wrote:
 
  In our case our replication factor is more than half the number of nodes
  in the cluster.
 
  Would it be possible to do the following:
 
 - Upgrade half of them
 - Change Thrift Port and inter-server port (is this the storage_port?)
 - Start them up
 - Upgrade clients one by one
 - Upgrade the the rest of the servers
 
  Or might we get some kind of data collision when still writing to the old
  cluster as the new storage is being used?
 
  /Daniel
 
 
 

-- 

Anthony Molinaro   antho...@alumni.caltech.edu


Re: GeoIndexing in Cassandra, Open Sourced?

2011-01-21 Thread Ryan King
On Fri, Jan 21, 2011 at 12:24 PM, Joseph Stein crypt...@gmail.com wrote:
 Thanks Ryan, Jake and Mike for the quick responses.
 I will mull through this weekend between engineering things from scratch or
 going the Solr/Solandra route as Jake points out is an option (and the
 effort/time related with introducing Solr into the mix).
 If there is any chance of Twitter or SimpleGeo open sourcing their
 GeoIndexing implementation for Cassandra let me know, I might be able to
 wait it out and would help contribute to make it usable for others too (and
 myself as well of course =8^)

I can't make any promises on open sourcing that.

-ryan


Re: Upgrading from 0.6 to 0.7.0

2011-01-21 Thread Stephen Connolly
the maven shade plugin might be able to help somewhat... if I get some spare
cycles I'll have a look at knocking up a thrift proxy that either makes 0.7
appear as 0.6 or vice versa

- Stephen

---
Sent from my Android phone, so random spelling mistakes, random nonsense
words and other nonsense are a direct result of using swype to type on the
screen
On 21 Jan 2011 22:00, Anthony Molinaro antho...@alumni.caltech.edu
wrote:


Re: Question re: the use of multiple ColumnFamilies

2011-01-21 Thread Robert Coli
On 1/18/11, Andy Burgess andy.burg...@rbsworldpay.com wrote:
 Sorry for the delayed reply, but thanks very much - this pointed me at
 the exact problem. I found that the queue size here was equal to the
 number of configured DataFileDirectories, so a good test was to lie to
 Cassandra and claim that there were more DataFileDirectories than I
 needed.

My standard disclaimer whenever anyone mentions using multiple
DataFileDirectories :

A number of people have experienced lose from using multiple
DataFileDirectories, and to my knowledge no one has experienced win
from doing so.

Do you have an actual use case for this functionality in which you
experience win?

=Rob


Re: Question re: the use of multiple ColumnFamilies

2011-01-21 Thread Peter Schuller
 A number of people have experienced lose from using multiple
 DataFileDirectories, and to my knowledge no one has experienced win
 from doing so.

I presume that's disk space reasons.

 Do you have an actual use case for this functionality in which you
 experience win?

I understood his use case to be working around
https://issues.apache.org/jira/browse/CASSANDRA-1955

-- 
/ Peter Schuller


Re: The authorize method of IAuthority

2011-01-21 Thread indika kumara
Thanks Eric for the clarification.

On Fri, Jan 21, 2011 at 11:11 PM, Eric Evans eev...@rackspace.com wrote:

 On Fri, 2011-01-21 at 22:45 +0600, indika kumara wrote:
  Shouldn't the existing method be changed to the following?
 
  public boolean authorize(AuthenticatedUser user, ListObject
  resource,
  Permission permission);   // checks the authority for a given user for
  a
  given resource for a given permission

 I don't think so, no.  This method is answering the question, Given a
 resource, what is this user allowed to do?.  It's the job of
 o.a.c.service.ClientState to call authorize() and determine if the set
 of returned Permissions allows a given operation on that resource.

 If you don't want the additional granularity you can simple return
 Permission.ALL.

  The existing method:
 
  public EnumSetPermission authorize(AuthenticatedUser user,
  ListObject
  resource);
 
  I noticed that we retrieved all permissions and checks
  'perms.contains(perm)'  ... May permissions be cached at later?

 Classes implementing IAuthority are free to perform caching as they see
 fit, yes.

 --
 Eric Evans
 eev...@rackspace.com