Graalvm中的cassandra数据无法更新的问题

问题:Graalvm中的cassandra driver无法更新数据
原因:Graalvm中的项目,使用了native clock, native clock 使用了System.nanoTime()作为当前时间,写入canssandra数据时,writetime与当前时间相去甚远,是一个小于当前时间的值(1970年),cassandra根据writetime来判断保留时间最新的那个值,所以出现了重启服务、更换pod后,无法更新同一条数据的问题。

2023-07-18 17:06:29.614 INFO            c.d.o.d.i.c.DefaultMavenCoordinates     DataStax Java driver for Apache Cassandra(R) (com.datastax.oss:java-driver-core) version 4.15.0
2023-07-18 17:06:29.616 INFO            c.d.o.d.i.c.o.Native    Using Graal-specific native functions
2023-07-18 17:06:29.616 INFO            c.d.o.d.i.c.t.Clock     Using native clock for microsecond precision

解决方案:设置jvm参数强制使用java clock

-Ddatastax-java-driver.advanced.timestamp-generator.force-java-clock=true

查看数据writetime的cql,单位微秒:

select writetime(name),name from table where id='xx' ; 

更新时指定writetime的cql,单位微秒:

update table USING TIMESTAMP 1690878297428000 set name='a' where id='xx' ; 

ps:如果手动设置了一个非常超前的时间,数据将无法删除和更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值