trift.transport.ttransportException: لا يمكن الكتابة إلى الناتج NULL

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

  •  18-09-2019
  •  | 
  •  

سؤال

أنا أفعل بعض العمل مع كاساندرا ومكتبات التوفير. أدرك أن هذه مكتبات مبكرة جدا وسوف تتغير (بلا شك) في مرحلة ما.

لقد كنت أستخدم ما يلي حلقة الوصل للحصول على مساعدة في إعداد رمز C # الخاص بي للكتابة والقراءة من وإلى خادم Cassandra (الذي قمت بتشغيله في مثيل خادم Ubuntu في Virtualbox المحلية الخاص بي). لقد أكدت أن وظيفة القراءة / الكتابة تافهة تعمل.

حيث أواجه مشكلة في تنفيذ الطريقة التالية (التي تم إنشاؤها بالنسبة لي باستخدام ملف Thrift.Definition الذي جاء مع كاساندرا):

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

وهنا الاستثناء:

Trift.transport.ttransportException: لا يمكن الكتابة إلى نتيجة ناتج فارغة في Thrift.transport.tstreamtransport.write (البايت [] WriteMessageBegin (رسالة TMessage) في Apache.cassandra.cassandra.client.send_get_range_slice (سلسلة Keyspace، Columnparent Column_parent، SlicePreedicate المسند، String Start_key، String Fitchend_Key، Int32 ROW_COUNT، POSSINCYLEVEL .client.get_range_slice (سلسلة keyspace، columnparent column_parent، slicepredicate المسند، سلسلة start_key، string fitchen_ky، int32 row_count، patchencylevel patchency_level) في cassandra.cs: السطر 335 في cassandrademo.models.test.getAllblogentries () في Test.cs: Line 212: في cassandrademo.tests.models.testtest.test_getallblogentries_success () في Testtest.cs: Line 42

أيه أفكار؟

هل كانت مفيدة؟

المحلول

تحتاج إلى الاتصال مفتوح () على النقل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top