J'ai beaucoup de mal à essayer de mettre à niveau mon existing library de Cassandra 0.6 à 0.7 beta1. Au départ, j'avais pensé que c'était un problème lié à l'ordre des opérations, alors j'ai décidé de faire la part des choses.Connexion à Cassandra 0.7 in .NET
Voici la configuration de base que je vais poursuis
TTransport framedTransport = new TFramedTransport(new TSocket("localhost", 9160));
TTransport socketTransport = new TSocket("localhost", 9160);
TProtocol framedProtocol = new TBinaryProtocol(framedTransport);
TProtocol socketProtocol = new TBinaryProtocol(socketTransport);
J'ai essayé de modifier la configuration du client de la manière suivante commutation d'entrée et de protocoles de sortie:
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
Ensuite, j'exécute le programme suivant qui utilise la configuration par défaut de Cassandra qui vient from the download et je fais une requête simple telle qu'un compte dont je m'attends à ce qu'il retourne zéro car aucune donnée n'a été insérée.
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();
Chacune des 4 configurations que j'ai fournies ci-dessus échoue à s'exécuter. Un couple d'entre eux se bloque et d'autres lèvent une exception. Donc, fondamentalement, je suis coincé en essayant d'obtenir une connexion pour travailler avec le nouveau Cassandra 0.7 avec le framework .NET.
Voici les types de problèmes que je retrouvais avec chacun:
all framed
: se bloque sur set_keyspaceall socket
: jette Nom de la méthode non valide: 'set_keyspace' sur set_keyspacein: framed out: socket
: serrures sur set_keyspacein: socket out: framed
: verrouille sur set_keyspace
Je suis sûr à 99% qu'il s'agit de quelque chose que je fais à la couche Thrift de Cassandra puisque je ne peux pas faire fonctionner cette simple application. Mais si vous voulez navigateur mon 0,7 branche vous pouvez le trouver ici:
http://github.com/managedfusion/fluentcassandra/tree/0.7
donc c'était votre faute en cours d'exécution cassandra et vous avez voté -1 pour réponse jbellis, alors qu'il a mentionné la situation la plus courante lors de la connexion à 0,7? –
BTW, n'utilisez pas de variables d'environnement. –
Aucune autre façon de lancer facilement le fichier batch Cassandra autrement que d'utiliser les variables d'environnement. Et jbellis a été rejeté parce que tout ce qu'il a dit était une opinion personnelle qui ne reposait pas du tout sur des faits. Le code C# Thrift n'est pas buggé, c'est l'une des librairies de Thrift qui n'a pas connu de changements de 0.2 à 0.4. Deuxièmement, il n'est pas fou de spécifier des protocoles différents pour l'entrée et la sortie, surtout si vous voulez utiliser un serveur différent pour lire et écrire. Il a été rejeté parce que rien n'était fondé en fait. BTW vous ne devriez pas utiliser le système de vote pour les actions malveillantes. –