Я пытаюсь добавить поле в пользовательский тип в cassandra 2.1.2, используя драйвер nodejs из datastax. Я добавил поле, используя ALTER TYPE
в cqlsh. Когда я пытаюсь добавить строку, содержащую udt со значением для нового поля, она вставляется с нулевым значением вместо значения, которое я указал. Я сильно подозреваю, что это связано с тем, как кластер кэширует подготовленный оператор. Поскольку я помню, как читал, что подготовленные операторы индексируются по хешу запроса, я попытался изменить некоторые пробелы в запросе, чтобы посмотреть, поможет ли это. Это действительно сработало, но только один раз. последующие вставки приводят к ошибке:
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, и в этот момент не только вставки, которые, как я думал, не увенчались успехом, появляются, но и последующие работают нормально. Это очень смущает, но, к счастью, я делал это только в тестовых экземплярах. Однако мне нужно внести это изменение в производство, и перезапуск кластера для добавления одного поля на самом деле не вариант. Есть ли лучший способ заставить кластер удалить кэшированный подготовленный оператор?