7 votes

__BlobFileIndex__ remplit le quota du Datastore

Je sérialise les objets dans le blobstore de mon application, et je les supprime et les recrée à chaque fois qu'ils changent. Je sais que ce n'est pas la meilleure méthode, mais j'ai trouvé que c'était une bonne méthode pour le prototypage rapide.

Je suis maintenant en phase d'utilisation du datastore, mais j'ai un problème. Mon quota de datastore est plein :) J'ai fait beaucoup de recherches pour trouver ce problème, et pourtant j'en suis là.

Apparaît pour chaque goutte, __ BlobInfo __ et __ BlobFileIndex __ Les types gardent des informations sur le blob. Mon problème est que lorsque je supprime le blob, les informations dans le fichier __ BlobInfo __ est supprimé, mais pas celui qui se trouve dans le __ BlobFileIndex __

J'ai désespérément essayé appcfg vacum_indexes, mais cela n'a pas aidé comme prévu.

J'utilise d'ailleurs la plate-forme Java.

Voici mes questions

  1. Comment puis-je effacer les données inutilisées __ BlobFileIndex __ des entrées ?
  2. Quelle est la meilleure façon de gérer cette situation pour qu'elle ne se reproduise pas ?

Merci.

Edit : Woohooo ! Je vois maintenant que je ne peux pas supprimer ces index indésirables. a) L'administration du Datastore ne les liste pas b) Le code de suppression manuelle jette une exception (java.lang.IllegalArgumentException : illegal key.path.element.type : BlobFileIndex ) Comme les entités commençant par un double soulignement sont des entités réservées au moteur d'application, je ne peux pas les supprimer. Les gars de Google, JE SUIS BLOQUÉ ICI :)

3voto

Stefan Haebler Points 51

Vous pouvez marquer ce problème d'une étoile pour être informé dès qu'il y a une solution à ce problème...
http://code.google.com/p/googleappengine/issues/detail?id=6849

0voto

Chez Points 353

J'ai eu ce problème, mais j'ai trouvé une solution :

Pour toute personne essayant de supprimer le BlobFileIndex Par programmation, vous pouvez le faire ainsi :

query = datastore.Query("__BlobFileIndex__",{'blob_key': a_blob_key}, keys_only=True)
    key = query.Get(1)
    key_y = key[0]
    datastore.Delete(key_y)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X