Thrift.Transport.TTransportException:Невозможно записать в нулевой выходной поток

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

  •  18-09-2019
  •  | 
  •  

Вопрос

Я работаю с Кассандрой и библиотеками Thrift.Я понимаю, что это очень ранние библиотеки, и в какой-то момент они (несомненно) изменятся.

Я использовал следующее связь за помощь в настройке моего кода C# для записи и чтения на моем сервере Cassandra (который я запускаю на экземпляре сервера Ubuntu в моем локальном VirtualBox).Я подтвердил, что тривиальная функция чтения/записи работает.

У меня возникла проблема с выполнением следующего метода (который был создан для меня с использованием файла thrift.definition, поставляемого с Cassandra):

public void send_get_count(string keyspace, string key, ColumnParent column_parent, ConsistencyLevel consistency_level)

Вот мой код установки:

TTransport _transport;
TProtocol _protocol;
Cassandra.Client _client;

public Test()
{
    _transport = new TSocket("192.168.56.101", 9160);
    _protocol = new TBinaryProtocol(_transport);
    _client = new Cassandra.Client(_protocol);
}

Мой код вызова выглядит так:

public void GetAllBlogEntries()
    {
        var timestamp = DateTime.Now.Millisecond;
        var keyspace = "Keyspace1";

        var utf8Encoding = System.Text.Encoding.UTF8;

        var columnParent = new ColumnParent() {Column_family = "BlogEntries"};
        var predicate = new SlicePredicate()
        {
            Slice_range = new SliceRange()
                          {
                              Start = new byte[0],
                              Finish = new byte[0],
                              Count = 10,
                              Reversed = false
                          }
        };

        var results = _client.get_range_slice(keyspace, columnParent, predicate, "", "", 5, ConsistencyLevel.ONE);

        foreach(var slice in results)
        {
            Console.WriteLine("Found Key: {0}", slice.Key);
            foreach(var resultColumn in slice.Columns)
            {
                var column = resultColumn.Column;
                Console.WriteLine("\tName: {0}, value: {1}",
                                  utf8Encoding.GetString(column.Name),
                                  utf8Encoding.GetString(column.Value));                        
            }
        }
    } 

В первой строке этого метода я получаю исключение:

oprot_.WriteMessageBegin(new TMessage("get_count", TMessageType.Call, seqid_));

И вот исключение:

Thrift.Transport.TTransportException:Не могу записать в Null outputStream At Thrift.transport.tStreamTransport.Write (byte [] buf, int32 off, int32 len) at thrift.protocol.tbinaryprotocol.writei32 (int32 i32) at thrift.protocol.tbinaryprotocol.writemessagebegeber (tmessage. Apache.cassandra.cassandra.client.send_get_range_slice (String Keyspace, ColumnParent Column_parent, SlicePredicate Predicate, String start_key, String Finish_key, int32 ROW_COUNT, ConscistencyLevel Consceptency_Level) в cassandra.cs:Строка 341 на apache.cassandra.cassandra.client.get_range_slice (String Keyspace, Columnparent Column_parent, SlicePredicate Predicate, String start_key, String Finish_key, int32 ROW_COUNT, ConsceptencyLevel Consectency_Level) в cassandra.cs:Строка 335 в Cassandrademo.models.test.getallblogentries () в test.cs:Строка 212 на cassandrademo.tests.models.testtest.test_getallblogentries_success () в testtest.cs:строка 42

Есть идеи?

Это было полезно?

Решение

Вам нужно вызвать Open() на транспорте.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top