[jira] [Commented] (CASSANDRA-6147) Break timestamp ties for thrift-ers

2014-03-05 Thread Nate McCall (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-6147?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13920986#comment-13920986
 ] 

Nate McCall commented on CASSANDRA-6147:


That would actually be very helpful and would not break anything in the wild 
(Astyanax, Hector and (im pretty sure) pycassa all assert a not-null timestamp 
on egress anyhoo), so it would be unusual for someone to be relying on this as 
validation currently. 

 Break timestamp ties for thrift-ers
 ---

 Key: CASSANDRA-6147
 URL: https://issues.apache.org/jira/browse/CASSANDRA-6147
 Project: Cassandra
  Issue Type: Sub-task
Reporter: Edward Capriolo
Assignee: Edward Capriolo
 Fix For: 2.1 beta2


 Thrift users are still forced to generate timestamps on the client side. 
 Currently the way the thrift bindings are generated users are forced to 
 supply timestamps. There are two solutions I see.
 * -1 as timestamp means generate on the server side
 This is a breaking change, for those using -1 as a timestamp (which should 
 effectively be no one.
 * Prepare yourself
 Our thrift signatures are wrong, you can't overload methods in thrift
 thrift.get(byte [], byte[], ts) 
 should REALLY be changed to 
 GetRequest g =  new GetRequest()
 g.setName()
 g.setValue()
 g.setTs() ///optional 
 thrift. get( g )
 I know no one is going to want to make this change because thrift is 
 quasi/dead but it would allow us to evolve thrift in a meaningful way. We 
 could simple add these new methods under different names as well.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (CASSANDRA-6147) Break timestamp ties for thrift-ers

2014-03-05 Thread Edward Capriolo (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-6147?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13921007#comment-13921007
 ] 

Edward Capriolo commented on CASSANDRA-6147:


I do not think this would break anything. Anything currently out there must be 
setting the timestamp explicitly. Anything not setting the timestamp is just 
getting 0. Users quickly find out what happens when two inserts have the same 0 
timestamp


 Break timestamp ties for thrift-ers
 ---

 Key: CASSANDRA-6147
 URL: https://issues.apache.org/jira/browse/CASSANDRA-6147
 Project: Cassandra
  Issue Type: Sub-task
Reporter: Edward Capriolo
Assignee: Edward Capriolo
 Fix For: 2.1 beta2


 Thrift users are still forced to generate timestamps on the client side. 
 Currently the way the thrift bindings are generated users are forced to 
 supply timestamps. There are two solutions I see.
 * -1 as timestamp means generate on the server side
 This is a breaking change, for those using -1 as a timestamp (which should 
 effectively be no one.
 * Prepare yourself
 Our thrift signatures are wrong, you can't overload methods in thrift
 thrift.get(byte [], byte[], ts) 
 should REALLY be changed to 
 GetRequest g =  new GetRequest()
 g.setName()
 g.setValue()
 g.setTs() ///optional 
 thrift. get( g )
 I know no one is going to want to make this change because thrift is 
 quasi/dead but it would allow us to evolve thrift in a meaningful way. We 
 could simple add these new methods under different names as well.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (CASSANDRA-6147) Break timestamp ties for thrift-ers

2014-03-05 Thread Jonathan Ellis (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-6147?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13921018#comment-13921018
 ] 

Jonathan Ellis commented on CASSANDRA-6147:
---

I'm a little confused, are we changing scope on this ticket from break 
timestamp ties to allow opting in to server-side timestamps?

nanotime is basically random so that would break ties but not very usefully :)

 Break timestamp ties for thrift-ers
 ---

 Key: CASSANDRA-6147
 URL: https://issues.apache.org/jira/browse/CASSANDRA-6147
 Project: Cassandra
  Issue Type: Sub-task
Reporter: Edward Capriolo
Assignee: Edward Capriolo
 Fix For: 2.1 beta2


 Thrift users are still forced to generate timestamps on the client side. 
 Currently the way the thrift bindings are generated users are forced to 
 supply timestamps. There are two solutions I see.
 * -1 as timestamp means generate on the server side
 This is a breaking change, for those using -1 as a timestamp (which should 
 effectively be no one.
 * Prepare yourself
 Our thrift signatures are wrong, you can't overload methods in thrift
 thrift.get(byte [], byte[], ts) 
 should REALLY be changed to 
 GetRequest g =  new GetRequest()
 g.setName()
 g.setValue()
 g.setTs() ///optional 
 thrift. get( g )
 I know no one is going to want to make this change because thrift is 
 quasi/dead but it would allow us to evolve thrift in a meaningful way. We 
 could simple add these new methods under different names as well.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (CASSANDRA-6147) Break timestamp ties for thrift-ers

2014-03-05 Thread Edward Capriolo (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-6147?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13921033#comment-13921033
 ] 

Edward Capriolo commented on CASSANDRA-6147:


[~jbellis] You are right I kinda stole this ticket. The point of this patch is 
that if CQL can auto-timestamp things, thrift should be able to as well. Would 
you like me to open another ticket? Should the auto-timestamp be 
system.currentTimeMillis() + 1000? How does CQL arrive at its auto timestamp?

 Break timestamp ties for thrift-ers
 ---

 Key: CASSANDRA-6147
 URL: https://issues.apache.org/jira/browse/CASSANDRA-6147
 Project: Cassandra
  Issue Type: Sub-task
Reporter: Edward Capriolo
Assignee: Edward Capriolo
 Fix For: 2.1 beta2


 Thrift users are still forced to generate timestamps on the client side. 
 Currently the way the thrift bindings are generated users are forced to 
 supply timestamps. There are two solutions I see.
 * -1 as timestamp means generate on the server side
 This is a breaking change, for those using -1 as a timestamp (which should 
 effectively be no one.
 * Prepare yourself
 Our thrift signatures are wrong, you can't overload methods in thrift
 thrift.get(byte [], byte[], ts) 
 should REALLY be changed to 
 GetRequest g =  new GetRequest()
 g.setName()
 g.setValue()
 g.setTs() ///optional 
 thrift. get( g )
 I know no one is going to want to make this change because thrift is 
 quasi/dead but it would allow us to evolve thrift in a meaningful way. We 
 could simple add these new methods under different names as well.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (CASSANDRA-6147) Break timestamp ties for thrift-ers

2014-03-04 Thread Edward Capriolo (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-6147?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13919523#comment-13919523
 ] 

Edward Capriolo commented on CASSANDRA-6147:


{code}
struct Column {
   1: required binary name,
   2: optional binary value,
   3: optional i64 timestamp,
   4: optional i32 ttl,
}
{code}
In thrift timestamps are optional, but the CassandraServer rejects Columns 
without a timestmap

This is a rather easy patch.

{code}
 if (!column.isSetTimestamp())
-throw new 
org.apache.cassandra.exceptions.InvalidRequestException(Column timestamp is 
required);
-
+column.setTimestamp(System.nanoTime());
{code}

https://github.com/edwardcapriolo/cassandra/compare/aut0-timstamps-thrift?expand=1

 Break timestamp ties for thrift-ers
 ---

 Key: CASSANDRA-6147
 URL: https://issues.apache.org/jira/browse/CASSANDRA-6147
 Project: Cassandra
  Issue Type: Sub-task
Reporter: Edward Capriolo
Assignee: Edward Capriolo
 Fix For: 2.1 beta2


 Thrift users are still forced to generate timestamps on the client side. 
 Currently the way the thrift bindings are generated users are forced to 
 supply timestamps. There are two solutions I see.
 * -1 as timestamp means generate on the server side
 This is a breaking change, for those using -1 as a timestamp (which should 
 effectively be no one.
 * Prepare yourself
 Our thrift signatures are wrong, you can't overload methods in thrift
 thrift.get(byte [], byte[], ts) 
 should REALLY be changed to 
 GetRequest g =  new GetRequest()
 g.setName()
 g.setValue()
 g.setTs() ///optional 
 thrift. get( g )
 I know no one is going to want to make this change because thrift is 
 quasi/dead but it would allow us to evolve thrift in a meaningful way. We 
 could simple add these new methods under different names as well.



--
This message was sent by Atlassian JIRA
(v6.2#6252)


[jira] [Commented] (CASSANDRA-6147) Break timestamp ties for thrift-ers

2013-10-10 Thread Ramon Nogueira (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-6147?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13791276#comment-13791276
 ] 

Ramon Nogueira commented on CASSANDRA-6147:
---

This is not really a solution that allows you to use client-generated 
timestamps and get row-level isolation (the real problem). Instead what you are 
providing is a way to opt-out of client generated timestamps altogether. But 
client-generated timestamps still break row-isolation, and this affects CQL too.


 Break timestamp ties for thrift-ers
 ---

 Key: CASSANDRA-6147
 URL: https://issues.apache.org/jira/browse/CASSANDRA-6147
 Project: Cassandra
  Issue Type: Sub-task
Reporter: Edward Capriolo
Assignee: Edward Capriolo
 Fix For: 2.1


 Thrift users are still forced to generate timestamps on the client side. 
 Currently the way the thrift bindings are generated users are forced to 
 supply timestamps. There are two solutions I see.
 * -1 as timestamp means generate on the server side
 This is a breaking change, for those using -1 as a timestamp (which should 
 effectively be no one.
 * Prepare yourself
 Our thrift signatures are wrong, you can't overload methods in thrift
 thrift.get(byte [], byte[], ts) 
 should REALLY be changed to 
 GetRequest g =  new GetRequest()
 g.setName()
 g.setValue()
 g.setTs() ///optional 
 thrift. get( g )
 I know no one is going to want to make this change because thrift is 
 quasi/dead but it would allow us to evolve thrift in a meaningful way. We 
 could simple add these new methods under different names as well.



--
This message was sent by Atlassian JIRA
(v6.1#6144)


[jira] [Commented] (CASSANDRA-6147) Break timestamp ties for thrift-ers

2013-10-10 Thread Edward Capriolo (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-6147?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13791534#comment-13791534
 ] 

Edward Capriolo commented on CASSANDRA-6147:


I see. Just not having to generate the timestamps would be useful anyway.

 Break timestamp ties for thrift-ers
 ---

 Key: CASSANDRA-6147
 URL: https://issues.apache.org/jira/browse/CASSANDRA-6147
 Project: Cassandra
  Issue Type: Sub-task
Reporter: Edward Capriolo
Assignee: Edward Capriolo
 Fix For: 2.1


 Thrift users are still forced to generate timestamps on the client side. 
 Currently the way the thrift bindings are generated users are forced to 
 supply timestamps. There are two solutions I see.
 * -1 as timestamp means generate on the server side
 This is a breaking change, for those using -1 as a timestamp (which should 
 effectively be no one.
 * Prepare yourself
 Our thrift signatures are wrong, you can't overload methods in thrift
 thrift.get(byte [], byte[], ts) 
 should REALLY be changed to 
 GetRequest g =  new GetRequest()
 g.setName()
 g.setValue()
 g.setTs() ///optional 
 thrift. get( g )
 I know no one is going to want to make this change because thrift is 
 quasi/dead but it would allow us to evolve thrift in a meaningful way. We 
 could simple add these new methods under different names as well.



--
This message was sent by Atlassian JIRA
(v6.1#6144)