【发布时间】:2017-06-26 10:10:38
【问题描述】:
我正在开发 NodeJS 项目,我尝试使用 cassandra-driver 包从存储在 cassandra 数据库中的表中选择数据, 我使用这一行启动客户端连接:
const cassandra = require('cassandra-driver');
const cassandraClient = new cassandra.Client({ contactPoints: ['192.168.0.253'], keyspace: 'test' });
有时候我调用url,引擎会成功获取结果,顺便说一下有时候会报这个错误:
{ [RangeError: index out of range]
coordinator: '192.168.0.253:9042',
query: 'SELECT * FROM table where hidden=false ALLOW FILTERING' }
这个错误通常在最近更新 cassandra 表时引发! 我不知道这是否重要,但是有另一个服务连接到 cassandra 数据库并插入新数据,这与问题有关吗?我该如何解决这个错误?
如果这两个服务是这个错误的原因,当有活动的服务写入cassandra表时,有没有办法让cassandra表不被阻塞(读取和写入),意味着ghost读取没有问题?
堆栈错误:
{ [RangeError: index out of range]
coordinator: '192.168.0.253:9042',
query: 'SELECT * FROM table where hidden=false ALLOW FILTERING' }
RangeError: index out of range
at checkOffset (buffer.js:663:11)
at Buffer.readInt32BE (buffer.js:828:5)
at Function.Long.fromBuffer (/home/l.alassadi/alarm-socket/node_modules/cassandra-driver/lib/types/index.js:466:25)
at Encoder.decodeLong (/home/l.alassadi/alarm-socket/node_modules/cassandra-driver/lib/encoder.js:133:17)
at Encoder.decodeTimestamp (/home/l.alassadi/alarm-socket/node_modules/cassandra-driver/lib/encoder.js:142:26)
at Encoder.decode (/home/l.alassadi/alarm-socket/node_modules/cassandra-driver/lib/encoder.js:1202:18)
at Parser.parseRows (/home/l.alassadi/alarm-socket/node_modules/cassandra-driver/lib/streams.js:377:36)
at Parser.parseResult (/home/l.alassadi/alarm-socket/node_modules/cassandra-driver/lib/streams.js:335:10)
at Parser.parseBody (/home/l.alassadi/alarm-socket/node_modules/cassandra-driver/lib/streams.js:185:19)
at Parser._transform (/home/l.alassadi/alarm-socket/node_modules/cassandra-driver/lib/streams.js:137:10)
【问题讨论】:
-
不确定那里会发生什么。你能打印错误的堆栈吗(console.log(err.stack))。另外,您使用的是哪个版本的 nodejs 驱动程序,您的 C* 集群的版本是什么?
-
@AndyTolbert 我已经打印了错误堆栈并编辑了问题。卡桑德拉版本:[cqlsh 5.0.1 |卡桑德拉 3.9 | CQL 规范 3.4.2 | Native protocol v4] Node js 版本:v5.9.1 cassandra-driver 版本:3.2.0 但是不明白你说的c*集群版本是什么意思?
-
它看起来像一个驱动程序错误......你能在开发环境中重现它吗?你能发布表格架构吗?
标签: javascript node.js cassandra