Почему я получаю сообщение об ошибке при вставке строк с Net :: Cassandra :: Easy и Cassandra 0.5x? - PullRequest
3 голосов
/ 22 марта 2010

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

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 ]

3 голосов
/ 22 марта 2010

Код работает должным образом в Cassandra 0.6.x, но не работает в Cassandra 0.5.x.

Похоже, что Net::Cassandra::Easy нацелен только на Cassandra 0.6.x.

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

3 голосов
/ 22 марта 2010

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

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;
}

(из <a href="http://cpansearch.perl.org/src/TEODOR/Net-Cassandra-Easy-0.05/lib/Net/GenThrift/Thrift/BinaryProtocol.pm" rel="nofollow noreferrer">Net::GenThrift::Thrift::BinaryProtocol)

Очевидно, что sub вызывается откуда-то из библиотеки, где $value не переменная, а постоянный скаляр. Я бы сообщил об ошибке авторам.

1 голос
/ 15 апреля 2010

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

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

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

...