Por que recebo um erro ao inserir linhas com net :: Cassandra :: Easy and Cassandra 0.5x?

StackOverflow https://stackoverflow.com/questions/2488783

  •  21-09-2019
  •  | 
  •  

Pergunta

Ao usar o módulo Perl Net :: Cassandra :: fácil Para interagir com Cassandra, eu uso o seguinte código para ler Colums col[123] de linhas row[123] na família da coluna 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']);

Isso funciona como esperado.

No entanto, ao tentar inserir a linha row1 com ..

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

.. eu recebo a mensagem de erro Can't use string ("0") as a SCALAR ref while "strict refs" in use at .../Net/GenThrift/Thrift/BinaryProtocol.pm line 376.

O que estou fazendo errado?

Foi útil?

Solução 2

O código funciona conforme o esperado em Cassandra 0.6.x, mas falha sob Cassandra 0.5.x.

Parece que Net::Cassandra::Easy está direcionado apenas ao Cassandra 0.6.x.

A atualização para Cassandra 0.6.x resolve o problema.

Outras dicas

Parece um bug na biblioteca:

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 partir de Net :: genthrift :: thrift :: binaryprotocol)

Aparentemente esse sub está sendo chamado de algum lugar da biblioteca onde $value não é uma variável, mas um escalar constante. Eu relataria o bug para os autores.

Hmm, parece mais um bug de ligação ao Perl ao lidar com a exceção de manuseio para mim.

Acredito que 0,6 o corrige para você porque a interface realmente mudou, então 0,6 não está mais aumentando uma exceção de economia, mas o bug na economia permanece. Eu abri um caso Jira, veremos que a equipe de Thrift diz sobre isso:

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top