On Tue, Mar 11, 2014 at 2:24 PM, Edward Capriolo <edlinuxg...@gmail.com>wrote:
> "The native protocol spec is the source of truth. If Cassandra's behavior > doesn't match the spec, it's a bug. Likewise for any drivers. I'm not > sure how this makes it unclear whether a bug is server-side or > client-side. Maybe an example scenario would be useful?" > > In the near future. I am a cassadra committer. I find a bug between > cassanda server and java client driver. For example, the server is sending > an unsigned by the other is expecting a signed byte. > > As a cassandra committer I can only change half of the equation. I change > the cassandra server, that would break the ruby-client. That won't work > will it? > > My only recourse as a cassandra committer is to go ask some other entity to > change their driver. > The solution would be: 1. Update the spec (for the current protocol version) to specify that it's an unsigned byte. (Perhaps add a note that this will change in the next protocol version.) 2. In the next version of the protocol, specify that the byte is signed and change Cassandra's behavior to match this. Note this change in the "changes" section of the spec. This doesn't break existing clients and it allows the behavior to be fixed with the next protocol version. (Cassandra also supports multiple versions of the native protocol, fwiw.) > > "This means the spec is ambiguous. In that case, I imagine the proper > solution would be to create a jira ticket and decide how to resolve the > ambiguity in the spec." > > Yes but then after you change the spec, one client is broken and one is > not. Is one client more "official" then another? Do you change the spec to > match the client with "more users". > You change the spec to match whatever Cassandra is doing. It's not a matter of what driver is more popular. > > Think about mysql. Does it ship with a driver? Yes. Who writes the driver? > mysql. Where is the source code for this driver? Inside the same repository > as the server. Cassandra should be the same way. Other databases treat this issue differently, and there are a set of tradeoffs. Mysql's decision may not be the best for Cassandra. -- Tyler Hobbs DataStax <http://datastax.com/>