Hello,
Here's an update on the current state of new filesystem attachment storage:
There are a couple platforms on which attachment storage sits:
* Transaction handling - This is finished to my satisfaction. We may decide 
later that it is
inadequate or needs changing but it serves this purpose now.
* Transaction safe file save/delete - Finished (based on transaction handling)
* Serialization - Finished refactoring of XMLWriter and generic Serializer and 
XMLSerializer.
* Providing of files - Mostly finished, needs review to see if there is a 
cleaner way. Barring any
major changes, this should not take longer than 1 day to complete.
* Locking - Needed, lock management exists but does not handle deadlock nor 
"greedy thread"
situations. 3 days needed to do code review on Apache commons LockManager to 
determine if it handles
these situations, I'm guessing 2 days are needed to integrate LockManager and 
in place of the
existing lock mechanism and a further 3 days to implement one of the features 
on top of LockManager
if need be.

"Consumer" code:
* FilesystemAttachmentStore - Complete, enabling requires adding the .jar file 
to WEB-INF and
changing a line in xwiki.cfg. Suffers from deadlock because the locking 
mechanism, is inadequate.
* FilesystemAttachmentVersioningStore - Complete but needs tests, enabling is 
same as for
FilesystemAttachmentStore. 1-2 days should be adequate for testing.
* FilesystemAttachmentRecycleBinStore - in progress, 3 days to complete and 
test (?). Finished
DeletedFilesystemAttachment, need TransactionRunnables for saving and deleting 
and serializer for
deleted attachment meta-data.
* Need a plan for migrating data from old system. FilesystemAttachmentStore 
fails over to old store
if an attachment cannot be found. Is this correct? Should migration scripts be 
distributed instead?
WDYT?
* Consumer code all needs more tests. Any amount of time could be spent on 
this, I think a week is
adequate.

Since this contains a large amount of code and all storage code is critical, I 
think this should go
through a release cycle in the platform but disabled by default so that it can 
be beta tested before
it becomes official. WDYT?

Caleb

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to