Hi, On Fri, Apr 2, 2010 at 1:38 PM, Denis Gervalle <[email protected]> wrote:
> In XWiki(Hibernate|Jcr)Store#saveXWikiDoc(), the attachement list is > persisted, but the attachement contents are not persisted. > A) I would like to take care of also persisting attachment contents when > these contents are loaded and marked dirty > (XWikiAttachmentContent#isContentDirty() == true). > Why I would like to change this ? > > 1) I see no use case that would have to persist reference to an attachment > and drop its content at the same time, which create records with a size > field set to n bytes, while the attachment is 0 or m bytes. > 2) When for example an XWikiDocument#copy() is followed by an > XWiki#saveDocument() (on the newly created document), without also calling > XWikiDocument#saveAllAttachements(), the cache store contains the documents > with all their attachments contents, while the DB has not really persisted > these contents. > 3) In XWikiHibernateAttachmentStore#saveAttachmentContent(), the default > is to persist the document, this is not consistent with the document not > doing the same in reverse. (I would have better understand that persisting > attachment contents does not persist the document.) > 4) isContentDirty is properly maintained, and currently it is nearly > unused, making the false impression that attachments content are persisted > properly > 5) This issue is invisible in normal XWiki usage, since we take care of > saving attachments contents to avoid it everywhere, for example > in XWiki#copyDocument(), attachments contents are saved "manually". > 6) As a application developer, using the internal API in groovy, my > collegue has missed it, and we have loose production data, since during > testing, the cache has always hide the issue. I really dislike API that > could introduce inconsistencies in the DB and moreover when you loose large > amount of data. > I also faced the same problem. Now I have to manually invoke $doc.document.saveAttachmentContent($attach.attachment, $context.context) or something like that which is really ugly. So, big +1 from me. I wonder why it was implemented that way in the first place. Thanks. - Asiri _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

