如何从cassandra 2.1

时间:2016-03-08 18:48:53

标签: cassandra datastax cassandra-2.1

我正在尝试使用datastax中的nodejs驱动程序向cassandra 2.1.2中的用户定义类型添加字段。我在cqlsh中使用ALTER TYPE添加了该字段。当我尝试添加包含udt的行以及新字段的值时,它将插入null值,而不是我提供的值。我强烈怀疑这与集群缓存预准备语句的方式有关。因为我记得读过准备好的语句是通过查询的散列索引的,所以我尝试更改查询中的一些空格以查看它是否有帮助。这实际上似乎有效,但只有一次。后续插入会导致错误:

  message: 'Operation timed out - received only 0 responses.',
  info: 'Represents an error message from the server',
  code: 4352,
  consistencies: 10,
  received: 0,
  blockFor: 1,
  writeType: 'SIMPLE',
  coordinator: '127.0.0.1:9042',

并且似乎没有添加新行..直到我重新启动cassandra,此时不仅会出现我认为失败的插入,而且后续的工作正常。这非常令人不安,但幸运的是我只在测试实例中完成了这项工作。我确实需要在生产中进行此更改,并且重新启动群集以添加单个字段实际上不是一个选项。有没有更好的方法让集群驱逐缓存的预准备语句?

1 个答案:

答案 0 :(得分:0)

  

我强烈怀疑这与集群缓存预准备语句的方式有关。

将Cassandra登录到DEBUG模式以确保准备好的语句缓存是根本原因。如果是,请创建一个JIRA,以便开发团队可以修复它......

您也可以选择启用跟踪以查看服务器端的内容

要在 cqlsh 中启用跟踪,只需输入TRACING ON

要使用 Java驱动程序启用跟踪,只需在enableTracing()对象上调用statement