I was helping a guy who in the end had a mixed beta1 and beta2 cluster http://www.mail-archive.com/u...@cassandra.apache.org/msg06661.html
I had a look around the code and have a couple of questions, just for my understanding.
When ReadResponseSerialize is called to deserialize the response from a node, it calls the RowSerializer which uses the ColumnFamilySerializer. If the CfId in the row is not known on the node a UnserializableColumnFamilyException is thrown. It's an IOException sub class and the error is treated as an Internal Error by the thrift generated Cassandra server.
The read message sent to the node contains the Keyspace+CF names, and it returns it's CfID in the response.
It looks like if a node somehow has a different/bad schema it can cause reads to fail. Is this correct? Could it's response be ignored if the read still meets the CL?
Next question was how nodes could ever get to have a different CfId for the same Keyspace+CF pair? It looks like the the CfId is never changed, so it would only happen if two node were each given a schema update and could not communicate it with each other.
Am guessing the whole scenario is "unsupported" just trying to understand whats happening.
Thanks
Aaron