2010-09-07 34 views
0

Je travaille avec Cassandra 0.6.5 en utilisant l'interface d'épargne. J'essaye d'employer l'appel de méthode de batch_mutate, cependant, quand je l'exécute, je ne reçois aucun message d'erreur. Cela m'amène à croire que cela a fonctionné. Quand je vérifie en utilisant le CLI, il n'y a rien là. Y a-t-il un problème avec mon code ou le format de la mutation_map que tout le monde peut voir? Des idées?batch_mutate échoue silencieusement dans Cassandra

Merci à l'avance,

LN

public void Update(string keyspace, Common.NetworkPackage.MetaAsset ma) 
{ 
    Dictionary<string, Dictionary<string, List<Mutation>>> package; 
    Dictionary<string, List<Mutation>> packageEntry; 
    Dictionary<string, object>.Enumerator en; 
    List<Mutation> mutList; 
    Mutation mut; 
    DateTime now = DateTime.Now; 

    if(!ma.Fields.ContainsKey("$guid")) 
    throw new ArgumentException("The field $guid is not present"); 

    mutList = new List<Mutation>(); 
    en = ma.Fields.GetEnumerator(); 

    while(en.MoveNext()) 
    { 
    if (en.Current.Value == null) 
     continue; 
    mut = new Mutation(); 
    mut.Column_or_supercolumn = new ColumnOrSuperColumn(); 
    mut.Column_or_supercolumn.Column = new Column(); 
    mut.Column_or_supercolumn.Column.Name = _utf8.GetBytes(en.Current.Key); 

    if (en.Current.Value == null) 
     mut.Column_or_supercolumn.Column.Value = null; 
    else 
     mut.Column_or_supercolumn.Column.Value = ToBytes(en.Current.Value); 

    mut.Column_or_supercolumn.Column.Timestamp = Utilities.Timestamp(now);   
    mutList.Add(mut); 
    } 

    packageEntry = new Dictionary<string, List<Mutation>>(); 
    packageEntry.Add("MetaAsset", mutList); 

    package = new Dictionary<string, Dictionary<string, List<Mutation>>>(); 
    package.Add((string)ma.Fields["$guid"], packageEntry); 

    Console.WriteLine(Utilities.ExportBulkMutate("LawOffice", package)); 

    _client.batch_mutate(keyspace, package, ConsistencyLevel.QUORUM); 
} 

Le code ci-dessus produit (colonnes sont nom: valeur horodatage de @, la valeur se compose d'un type: et une représentation de la valeur réelle):

LawOffice : { 
Row=08469fba50f448be8943614abd059d10 : { 
    CF=MetaAsset : { 
    $guid : String:08469fba50f448be8943614abd059d10 @ 93 
    $creator : String:Lucas @ 93 
    $previousversion : String:00000000000000000000000000000000 @ 93 
    $nextversion : String:00000000000000000000000000000000 @ 93 
    $etag : String:0 @ 93 
    $length : Int32:123456789 @ 93 
    $extension : String:.odt @ 93 
    $created : DateTime:90 @ 93 
    $modified : DateTime:90 @ 93 
    $lastaccess : DateTime:90 @ 93 
    $title : String:Title @ 93 
    $tags : List`1:tag1,tag2,tag3 @ 93 
    } 
} 
} 

Répondre