7

I serialize objects to blobstore in my app, and delete and recreate them whenever they change. I know this is not the best way, but I found that is good way for rapid prototyping.

Now I am in the phase to use datastore, however I have a problem. My datastore quota is full! :) I did alot of search for the issue, yet here I am.

Appearantly for every blob, __BlobInfo__, and __BlobFileIndex__ kinds keep info about the blob. My problem is when I delete blob, info in __BlobInfo__ is deleted, but not the one in the __BlobFileIndex__

I desperately tried appcfg vacum_indexes, but that did not help as expected.

I use Java platform by the way.

Here are my questions

  1. How can I clear unused __BlobFileIndex__ entries?
  2. What is the proper way to handle this situation to not occur again?

Thank you.

Edit: Woohooo! I now see that I cant delete these unwanted indexes a) Datastore admin does not list them b) Manual deletion code throws Exception(java.lang.IllegalArgumentException: illegal key.path.element.type: BlobFileIndex) Since entities starting with double underscore are app engine reserved entities, it doesnt allow me delete it. Guys at google, I AM STUCK HERE :)

Cigiller
  • 84
  • 1
  • 1
  • 7
  • I use Python. I know that the implementation / emulation of the Blobstore in the SDK in different from GAE itself. In GAE you do not have those extra kinds which start with __ like __BlobInfo__. – voscausa Dec 04 '12 at 10:50
  • did you now store blobs in datastore ? and what do you mean with indexes ? a blob property in GAE is not indexed, and what should BlobFileIndex be ? – fmt.Println.MKO Dec 04 '12 at 11:20
  • @voscausa Running "SELECT * FROM _____BlobFileIndex_____" at datastore viewer return lots of result for me. – Cigiller Dec 04 '12 at 12:47
  • @Cigiller. You are very right. The query delivers the hidden kind. – voscausa Dec 04 '12 at 23:47
  • @fmt.Println.MKO No, I dont store blobs in datastore. Blobs metadata is stored in datastore by app engine, thats what the issue is about. – Cigiller Dec 05 '12 at 11:02

2 Answers2

3

You can star this issue to get notified as soon as there's a solution to this...
http://code.google.com/p/googleappengine/issues/detail?id=6849

0

I had this problem, but found a solution:

For anyone trying to delete the BlobFileIndex programatically you can do it thus:

query = datastore.Query("__BlobFileIndex__",{'blob_key': a_blob_key}, keys_only=True)
    key = query.Get(1)
    key_y = key[0]
    datastore.Delete(key_y)
Chez
  • 961
  • 1
  • 9
  • 20
  • This doesn't work for me. On Delete, I get the error: BadRequestError: The kind "__BlobFileIndex__" is reserved – new name Mar 12 '16 at 15:25