Frage

Ich mache einige Arbeit mit Cassandra und den Thrift Bibliotheken. Ich weiß, diese sind sehr frühe Bibliotheken und wird (zweifellos) Änderung an einem gewissen Punkt.

Ich habe die folgende Link um Hilfe bei der Einstellung up-Code meiner C # zu schreiben und zu und von meinem Cassandra Server zu lesen (was ich in einer Ubuntu-Server-Instanz in meinem lokalen VirtualBox ausgeführt habe). Ich habe bestätigt, dass die triviale Lese / Schreib-Funktionalität funktioniert.

Wenn ich ein Problem aufweisen, ist die folgende Methode ausgeführt wird (was für mich generiert wurde die thrift.definition-Datei, die mit Cassandra kam):

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

Hier ist mein Setup-Code:

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

Meine Berufung Code sieht so aus:

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

Die erste Zeile dieser Methode ist, wo ich meine Ausnahme bin immer:

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

Und hier ist die Ausnahme:

Thrift.Transport.TTransportException: Kann nicht schreiben Output auf null bei Thrift.Transport.TStreamTransport.Write (Byte [] buf, Int32 off, Int32 LEN) bei Thrift.Protocol.TBinaryProtocol.WriteI32 (Int32 I32) bei Thrift.Protocol.TBinaryProtocol.WriteMessageBegin (TMessage message) bei Apache.Cassandra.Cassandra.Client.send_get_range_slice (String Schlüsselraum, ColumnParent column_parent, SlicePredicate Prädikats, String start_key, String finish_key, Int32 row_count, ConsistencyLevel consistency_level) in Cassandra.cs: Linie 341 bei Apache.Cassandra.Cassandra.Client.get_range_slice (String Schlüsselraum, ColumnParent column_parent, SlicePredicate Prädikats, String start_key, String finish_key, Int32 row_count, ConsistencyLevel consistency_level) in Cassandra.cs: Linie 335 bei CassandraDemo.Models.Test.GetAllBlogEntries () in Test.cs: Linie 212 bei CassandraDemo.Tests.Models.TestTest.Test_GetAllBlogEntries_Success () in TestTest.cs: Linie 42

Irgendwelche Ideen?

War es hilfreich?

Lösung

Sie müssen Open () auf dem Transport nennen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top