In FileContentStore.retrieveRevisionContent(), a FileInputStream is open that causes the file to be locked. This input stream is then set in NodeRevisionContent that is returned to ContentHelper's caller. If the caller does not read and close the input stream and the caller tries to remove this object node, the physical file will not be deleted.
Created attachment 7299 [details] A patch for the bug.