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