2010-09-05 4 views
1

У меня возникли проблемы с попыткой обновить мой existing library от Cassandra 0.6 до 0.7 beta1. Первоначально я думал, что это был порядок операций, поэтому я решил разбить его на основы.Подключение к Cassandra 0.7 в .NET

Вот основные настройки, которые я буду судится

TTransport framedTransport = new TFramedTransport(new TSocket("localhost", 9160)); 
TTransport socketTransport = new TSocket("localhost", 9160); 
TProtocol framedProtocol = new TBinaryProtocol(framedTransport); 
TProtocol socketProtocol = new TBinaryProtocol(socketTransport); 

Затем я попытался изменить настройки клиента следующими способами коммутации входных и выходных протоколов:

var client = new Cassandra.Client(framedProtocol, framedProtocol); // all framed 
var client = new Cassandra.Client(socketProtocol, socketProtocol); // all socket 
var client = new Cassandra.Client(framedProtocol, socketProtocol); // in: framed out: socket 
var client = new Cassandra.Client(socketProtocol, framedProtocol); // in: socket out: framed 

Затем я запускаю следующую программу, которая использует конфигурацию Cassandra по умолчанию, которая приходит from the download, и я делаю простой запрос, такой как счетчик, который, как я ожидаю, он будет возвращать ноль, поскольку данные не были вставлены.

framedTransport.Open(); 
socketTransport.Open(); 
Console.WriteLine("Start"); 

client.set_keyspace("Keyspace1"); 

var key = System.Text.Encoding.ASCII.GetBytes("MyKey"); 
var columns = new List<byte[]>(new[] { System.Text.Encoding.ASCII.GetBytes("MyColumn") }); 
var column_parent = new ColumnParent { 
    Column_family = "Standard1" 
}; 
var predicate = new SlicePredicate { 
    Column_names = columns 
}; 
client.get_count(key, column_parent, predicate, ConsistencyLevel.ALL); 

Console.WriteLine("Done"); 
Console.Read(); 

Каждая из четырех различных настроек, указанных выше, не выполняется. Несколько из них просто запираются, а другие бросают исключение. Поэтому в основном я застреваю, пытаясь получить соединение для работы с новой Cassandra 0.7 с платформой .NET.

Вот типы проблем, которые я нашел с каждым:

  • all framed: замки на set_keyspace
  • all socket: бросками Неверное имя метода: 'set_keyspace' на set_keyspace
  • in: framed out: socket: замки на set_keyspace
  • in: socket out: framed: замки на set_keyspace

Я на 99% уверен, что это связано с чем-то, что я делаю на уровне Thrift Cassandra, так как я не могу заставить это простое приложение работать. Но если вы хотите, чтобы браузер моей ветка 0.7 вы можете найти его здесь:

http://github.com/managedfusion/fluentcassandra/tree/0.7

ответ

1

Я не обновлял переменные среды в Windows, чтобы указать на новое местоположение 0,7. Таким образом, в основном была запущена стабильная версия вместо бета-версии. После того, как я обновил переменную среды thee, чтобы указать на новое местоположение, все снова заработало.

+0

, так что это была ваша ошибка, выполняемая cassandra, и вы проголосовали за -1 за ответ jbellis, в то время как он упомянул наиболее распространенную ситуацию при подключении к 0,7? –

+0

BTW, не используйте переменные среды. –

+2

Нет другого способа простого запуска командного файла Cassandra, кроме использования переменных среды. И jbellis получил признание, потому что все, что он сказал, было личным мнением, не основанным на самом деле вообще. Код C# Thrift не является ошибкой, это одна из библиотек в Thrift, которая не испытывала никаких изменений с 0,2 до 0,4. Во-вторых, не нужно указывать разные протоколы для входа и выхода, особенно если вы хотите использовать другой сервер для чтения и записи. Он получил признание, потому что ничто из этого не было основано на самом деле. Кстати, вы не должны использовать систему голосования для злобных действий. –

0

Вероятно, код C# бережливости обрамления режима глючит, потому что все, что изменилось на стороне сервера был сделать рамку в режиме по умолчанию вместо безрамных. Вы можете переключить его обратно в cassandra.yaml как обходной путь.

(Это немного безумным, чтобы указать различные протоколы на в/из сторон соединения. Никакие другие языки Бережливость я знаю, не делать этого. Если вы копаете в генерации кода, который является еще одна вещь, потенциально исправить.)

+0

Код клиента брокер не изменился с 0,2 по большей части. Также ввод и вывод - это новое дополнение к 0.7, которое позволяет использовать разные серверы для написания и чтения. Поэтому я просто воспользовался этим, чтобы проверить свой код, чтобы узнать, есть ли разница. ** Но, несмотря на это, я нашел проблему. ** Поскольку я пытался использовать 0,7, я поместил ее по другому пути, но то, что я не делал, это зарегистрировать переменные среды на новом пути, который я использовал. Поэтому после этого все сработало. Думаю, с глаз долой. –