On Mon, Sep 6, 2010 at 8:39 PM, Jonathan Ellis <jbel...@gmail.com> wrote:
> On Mon, Sep 6, 2010 at 4:04 PM, Edward Capriolo <edlinuxg...@gmail.com> wrote:
>> I was not aware of that. Also is the default for 6.o non framed and
>> 7.o framed?
>
> Yes.
>
>>I was thinking possibly replace cassanda.client detect the
>> server version and use reflection.
>
> This would have to be tested; the speed penalty for using reflection
> in Java is fairly high.
>
> --
> Jonathan Ellis
> Project Chair, Apache Cassandra
> co-founder of Riptano, the source for professional Cassandra support
> http://riptano.com
>

Jonathan,

Good point. Thinking about this a little more, even though thrift does
not support overloaded the Java code that thrift has generated would.
(I know editing the thirft generated code is not the greatest, but
neither is double upgrades)

  ColumnOrSuperColumn get(1:required binary key,
                          2:required ColumnPath column_path,
                          3:required ConsistencyLevel consistency_level=ONE)
                      throws (1:InvalidRequestException ire,
2:NotFoundException nfe, 3:UnavailableException ue,
4:TimedOutException te)

  ColumnOrSuperColumn get(1:required string keyspace,
                          2:required string key,
                          3:required ColumnPath column_path,
                          4:required ConsistencyLevel consistency_level=ONE)
                      throws (1:InvalidRequestException ire,
2:NotFoundException nfe, 3:UnavailableException ue,
4:TimedOutException te),

The approach here would be for the client classpath, build a cassandra
client. This would be generated from the 7.0 Cassandra.Client but we
would create overloads matching the old signatues, that are chained
calls to the new method.

This way a 6.0 tool like hector would not be aware that it is speaking
to a 7.0 instance. This sounds like it would work with an exception
being if some return object like ColumnOrSuper column was drastically
different ie (missing a property ) that hector is looking for. Which
then starts making the problem more involved then just a simple
chained call.

Maybe this is much ado about nothing, but as I mentioned API changing
upgrades have been a problem for us in the past is we have to commit
to new versions of everything across the board simultaneously.

Edward

Reply via email to