Greetings.

I am experiencing problems using a cassandra DB with phpcassa, but I am unable 
to understand if the error is on phpcassa client itself or on cassandra… As far 
as I understand, phpcassa just "pass" it to the thrift layer, and errors I am 
seeing are coming back from cassandra itself, so I guess it's some sort of 
cassandra problem (or, more easily, I am doing something wrong but I don't know 
what). I hope I'm not too far from true.


I am using CQL3 from php pages, and I wrote a class that basically wraps this 
behaviour:

                $this->pool=new 
\phpcassa\Connection\ConnectionPool($keyspace,$servers); 
                […yadda yadda…]
                $client=$this->pool->get()->client;
                
$result=$client->prepare_cql_query($query,\Cassandra\Compression::NONE);
                $itemid=$result->itemId;
                return $client->execute_prepared_cql_query($itemid,$args);

This works ALMOST always. Sometimes, hovewere, I get "random" errors on queries 
that works. When I say "Query that works" it means that on error i dump on 
screen the value of $query and $args, and this is always a valid query that 
works, bot on the same page if I simply reload it, and on cqlsh -3, with the 
very same parameters.


Sample errors, and relative queries and CF schemas are:

===

Executing [SELECT qt FROM cargobays USING CONSISTENCY QUORUM WHERE 
corporation_id = ? and station_id = ? and item_id = ?] with 
(edd051f0-44aa-4bc3-ad08-3174abcd1a0d,1110129,10025)
error: No indexed columns present in by-columns clause with "equals" operator

cqlsh:goh_release> describe columnfamily cargobays

CREATE TABLE cargobays (
  corporation_id ascii,
  station_id ascii,
  item_id ascii,
  qt ascii,
  PRIMARY KEY (corporation_id, station_id, item_id)
) WITH COMPACT STORAGE AND
  comment='' AND
  caching='KEYS_ONLY' AND
  read_repair_chance=0.100000 AND
  gc_grace_seconds=864000 AND
  min_compaction_threshold=4 AND
  max_compaction_threshold=32 AND
  replicate_on_write='true' AND
  compaction_strategy_class='SizeTieredCompactionStrategy' AND
  compression_parameters:sstable_compression='SnappyCompressor';

===

Executing [UPDATE agents_skill USING CONSISTENCY QUORUM SET value = ? WHERE 
agent_id = ? and skill = ?] with (3,b716738b-95e6-4e22-9924-5334ee7f2f5d,pilot)
error: line 1:78 mismatched input 'and' expecting EOF

cqlsh:goh_release> describe columnfamily agents_skill ;

CREATE TABLE agents_skill (
  agent_id ascii,
  skill ascii,
  value ascii,
  PRIMARY KEY (agent_id, skill)
) WITH COMPACT STORAGE AND
  comment='' AND
  caching='KEYS_ONLY' AND
  read_repair_chance=0.100000 AND
  gc_grace_seconds=864000 AND
  min_compaction_threshold=4 AND
  max_compaction_threshold=32 AND
  replicate_on_write='true' AND
  compaction_strategy_class='SizeTieredCompactionStrategy' AND
  compression_parameters:sstable_compression='SnappyCompressor';


We have a cluster of 3 nodes, and the keyspace is defined as follow:

CREATE KEYSPACE v_release WITH strategy_class = 'SimpleStrategy'
  AND strategy_options:replication_factor = '3';


We're using (packaged) Cassandra 1.1.2 on an Ubuntu LTS 12.04.


I really hope it's something that can be sorted out, because we're pretty lost 
here.

Thank you.

--
Marco Matarazzo




Reply via email to