2010-03-21 2 views
3

При использовании модуля Perl Net::Cassandra::Easy для взаимодействия с Кассандрой я использую следующий код для чтения colums col[123] из рядов row[123] в колонной семье Standard1:Почему возникает ошибка при вставке строк с помощью Net :: Cassandra :: Easy и Cassandra 0.5x?

my $cassandra = Net::Cassandra::Easy->new(keyspace => 'Keyspace1', server => 'localhost'); 
$cassandra->connect(); 
my $result = $cassandra->get(['row1', 'row2', 'row3'], family => 'Standard1', byname => ['col1', 'col2', 'col3']); 

Это работает, как ожидался.

Однако при попытке вставить строку row1 с ..

$result = $cassandra->mutate(['row1'], family => 'Standard1', insertions => { "col1" => "Value to set." }); 

.. Я получаю сообщение об ошибке Can't use string ("0") as a SCALAR ref while "strict refs" in use at .../Net/GenThrift/Thrift/BinaryProtocol.pm line 376.

Что я делаю неправильно?

ответ

3

код работает.. как и следовало ожидать при Кассандре 0.6.x, но терпит неудачу под Кассандрой 0.5.x.

Он появляется, как будто Net::Cassandra::Easy ориентирована Cassandra 0.6.x только.

Обновление до Cassandra 0.6.x решает проблему.

3

Это похоже на ошибку в библиотеке:

sub readByte 
{ 
    my $self = shift; 
    my $value = shift; 

    my $data = $self->{trans}->readAll(1); 
    my @arr = unpack('c', $data); 
    $$value = $arr[0]; # <~ line 376 
    return 1; 
} 

(от Net::GenThrift::Thrift::BinaryProtocol)

Apparently that sub is being called from somewhere in the library where $value не переменная, а постоянная скалярная я сообщить об ошибке авторов

+0

Привет! Спасибо за Ваш ответ. Кажется, что бинарный протокол изменился между 0,5 и 0,6, где Net :: Cassandra :: Easy, по-видимому, нацелен только на 0,6. – knorv

1

hmm, он больше похож на ошибку Perl-привязки при обработке исключения для меня.

Я считаю, что 0.6 исправляет это для вас, потому что интерфейс действительно изменился, поэтому 0.6 больше не увеличивает исключение бережливости, но ошибка в бережливости остается. Я открыл дело JIRA, мы увидим, что бережливость команда говорит об этом:

https://issues.apache.org/jira/browse/THRIFT-758

Смежные вопросы