2013-03-28 7 views
4

У меня есть следующий счетчик запроса на мой код:Строка проверки ошибок во время Счетчик запроса на Кассандре

private CounterSlice<String> queryLastCounts(Long key, String columnFamily, 
                  int maxLength) { 
    SliceCounterQuery<Long, String> query = 
      HFactory.createCounterSliceQuery(cassandra.getKeyspace(), 
                  LONG_S, STRING_S); 
    query 
     .setColumnFamily(columnFamily) 
     .setKey(key) 
     .setRange("", "", true, maxLength); 
    return query.execute().get(); 
} 

На моем блоке тестирует код работает отлично. Но при выполнении правильного применения (я использую для этого шторм) я получаю следующее сообщение об ошибке:

Caused by: InvalidRequestException(why:String didn't validate.) 
at org.apache.cassandra.thrift.Cassandra$get_slice_result.read(Cassandra.java:7756) 
at org.apache.cassandra.thrift.Cassandra$Client.recv_get_slice(Cassandra.java:570) 
at org.apache.cassandra.thrift.Cassandra$Client.get_slice(Cassandra.java:542) 
at me.prettyprint.cassandra.service.KeyspaceServiceImpl$8.execute(KeyspaceServiceImpl.java:308) 
... 25 more 

Я также использую Гектор для доступа к Кассандре.

+0

Вы можете вставить схему для семьи столбца, который вы используете? Установлен ли ключ_validation_class в LongType? – Richard

+0

Я создавал счетчик столбцов, используя UTF8 для проверки, измененный на LONG и решивший проблему. Thx –

+0

Странная вещь в том, что она работала на модульных тестах o.O, но не на правильной баночке. –

ответ

0

Как предложено @ Ar3s, это решение этой проблемы.

Я по умолчанию оставил свои валидаторы столбцов, для чего используется UTF8. Решение состояло в том, чтобы изменить его на Long validator, и все прошло нормально.

Урок здесь:

Check your Data Validator for the column in question.