Cannot delete GAE file
google-app-engine, google-cloud-datastore, java
Solution
It looks like others have reported this problem and, although it was addressed, there could still be a problem with broken files.
Sep 11, 2013 at 1:14 am
We have now fixed this issue from reoccurring in future. However, there are some blobs created in the past that still give errors. We are working on a fix for these blobs.
John Lowry On behalf of the App Engine team
http://grokbase.com/t/gg/google-appengine/138xrawqw0/broken-blobstore-files-what-to-do
`UnsupportedOperationException`
For the first error, the documentation states:
`java.lang.UnsupportedOperationException` - if a file's type is not supported by delete or file does not have a finalized name.
It could be that the file is already finalized, and you can't delete it for some other reason.
`ApplicationError: 101`
I think the second error refers to a not found exception.
FinalizationError: ApplicationError: 101 Blobkey not found.
This may clarify the issue for you.
You only use finalize if you create a file and write to it. But you cannot write to a file, after it has been finalized. To update a file in the blobstore, you always have to create a new one. And when you read a file, you do not have to finalize it. To read a file you have to use a blobreader. See: https://developers.google.com/appengine/docs/python/blobstore/blobreaderclass
via https://stackoverflow.com/a/12855653/1085891
Fixing the Broken Upload
You could resume the upload.
If the transfer is interrupted, you can resume the transfer from where it left off using the `--db_filename=...` argument.
via How to finish a broken data upload to the production Google App Engine server?
Additional Solutions / Information:
- Cannot delete entity with broken id from datastore
- Handle Form Failure when uploading to Appengine Blobstore
- Issue 4744: Java dev server fails at deleting blobs.
Problem
I'm trying to remove a file after a broken upload using ``` final FileService fileService = FileServiceFactory.getFileService(); fileService.delete(file); ``` But I get: ``` java.lang.UnsupportedOperationException: File \/blobstore\/writable:AD8BvukH[...]qau-Bb7AD does not have a finalized name ``` When I try to finalize the file with ``` FileWriteChannel writeChannel = fileService.openWriteChannel(file, true); writeChannel.closeFinally(); ``` then openWriteChannel() fails with ``` com.google.appengine.api.files.FinalizationException [...] Caused by: com.google.apphosting.api.ApiProxy$ApplicationException: ApplicationError: 101: ``` What does ApplicationError 101 mean? How can I properly delete the file?