I'm not sure why your first one hangs because it looks correct, but it's possible that you have a timestamp resolution problem for the batch_mutate() version. How are you creating the timestamp? Also, don't forget about "range ghosts": http://wiki.apache.org/cassandra/FAQ#range_ghosts
- Tyler On Sun, Dec 12, 2010 at 1:42 AM, Jaydeep Chovatia < jaydeep.chova...@openwave.com> wrote: > Hi, > > > > I am facing some issues with delete operation in Cassandra-0.7.0 using C++ > Thrift API. Please find details here: > > C++ Thrift Machine: Linux 64-bit > > > > 1. I am using remove thrift API to delete either column or column > family. Problem in this is when I call remove then it hangs forever > (never returns back). Please find my code details here: > > > > cassClient->set_keyspace(keySpace); > > > > ColumnPath clnPath; > > clnPath.column_family = columnFamily; > > if(columnOrSuperColumnName.size() > 0){ > > if(isSuperColumn) { > > clnPath.__isset.super_column = true; > > clnPath.super_column = columnOrSuperColumnName; > > } else { > > clnPath.__isset.column = true; > > clnPath.column = columnOrSuperColumnName; > > } > > } > > //DIAGC("mssRME", 1, "About to run remove..."); > > cassClient->remove(key, clnPath, delTimeStamp, consisLevel); > > //DIAGC("mssRME", 1, "Success! remove..."); > > > > > > 1. I have tried with batch_mutate thrift API. With this operations goes > smoothly but I end up getting deleted column/columnfamily/key back when I > perform get operation after delete. Looks like delete operation did not > work. Please find sample code here: > > > > map<string, vector<Column> >::iterator iter = > SCNameAndCols.begin(); //SuperColumn name as key – Vector containing columns > in each super column > > std::vector<Mutation> mv; > > while(iter != SCNameAndCols.end()) { //Iterate through each > SuperColumn one after another > > SuperColumn sc; > > ColumnOrSuperColumn cs; > > > > Mutation mu; > > ` mu.__isset.deletion = true; > > > > mu.deletion.timestamp = delTimeStamp; //This is latest > timestamp in miliseconds > > mu.deletion.__isset.predicate = true; > > mu.deletion.super_column = (*iter).first; > > mu.deletion.predicate.__isset.column_names = true; > > for(int i = 0; i < (*iter).second.size(); i++) { > > > mu.deletion.predicate.column_names.push_back((*iter).second[i].name); > > } > > > > mv.push_back(mu); > > iter++; > > }//End of While loop > > std::map<std::string, std::vector<Mutation> > innMap; > > innMap[CFName] = mv; > > > > std::map<std::string, std::map<std::string, std::vector<Mutation> > > > outMap; > > outMap[Key] = innMap; > > > > //DIAGC("mssRME", 1, "About to run batch_mutate..."); > > cassClient->batch_mutate(outMap, consisLevel); > > //DIAGC("mssRME", 1, "Success! > batch_mutate..."); > > > > > > > Any help would be appreciated. > > > > Thank you, > > Jaydeep > > >