I am working on a custom ArtifactStore implementation. While implementing the support for attachments it appears there is api to add and read but no api to delete an attachment.
This works fine for current CouchDB store as attachment lifecycle is tied to document to which the attachment is being attached i.e. if that document is deleted then all attached documents are also removed. However for setups where the attachments are stored in a separate Blob/Object storage it needs to be explicitly handled. Proposal A - Explicit delete call ---------------------------------------------- Add a new api for deleting attachment ArtifactStore#deleteAttachment(doc: DocInfo, name: String) This api is invoked in addition to ArtifactStore#del say in WriteOps#deleteEntity and thus ensure that any related attachments are also removed when the owning entity is removed Proposal B - Implicit delete --------------------------------------- Most Blob storage services allow querying and deleting by prefix in blob id. So while storing the attachment the BlobId can be set to doc.id + "/" + attachmentName And when any entity is deleted then the ArtifactStore can make a call to delete all blobs where blobId starts with doc.id Doing it for every delete may add overhead as only action types are making use of attachments currently. So here ArtifactStore may need to "interpret" the entityType of the document being deleted and see if its action then also make a delete call for attachment Any suggestion on which approach to take here? Proposal #B requires no change in OpenWhisk and can be done in custom implementation Chetan Mehrotra
