Item11689: Release PlainFileStoreContrib

pencil
Priority: Enhancement
Current State: Closed
Released In: n/a
Target Release: n/a
Applies To: Extension
Component: PlainFileStoreContrib
Branches: trunk
Reported By: CrawfordCurrie
Waiting For:
Last Change By: CrawfordCurrie
An implementation of a Foswiki store using nothing more sophisticated than files.

Advantages:
  • Uses simple files - no RCS operations required
  • Very simple

The default store implementations in Foswiki use a version control tool - RCS - in the background. There are some issues with these implementations:
  • RcsWrap invokes external programs. These are reasonably fast, but cause major performance problems when used with a web server accelerator, such as fcgi or mod_perl. Most sites therefor use:
  • RcsLite, which is a pure-perl implementation of RCS. This doesn't use any external programs but is very inefficient with topics that have large numbers of versions.

The PlainFileContrib implements topic and attachment histories by keeping a complete file for each version of the topic/attachment. This means it is a lot less efficient in terms of disk space than RCS - at least, it is less efficient for text files; binary files, such as images, are equally bad. For many sites this is an acceptable tradeoff, as disk space is relatively cheap, and Foswiki doesn't use much even with this store.

There is currently no way to move from an RCS-based store to a PlainFile store, so this extension has to be regarded as experimental at this stage. If there is sufficient interest, I will develop tools to support migration to and from RCS histories.

Developers note: this contrib is tested using the standard store unit tests.

Feedback please to PlainFileStoreContrib

-- CrawfordCurrie - 23 Mar 2012

Running on Release01x01 distro:72ce49e2916b
----------------------------
---++ Module Failure summary
ConfigureTests has 1 unexpected results (of 23):
   * F: ConfigureTests::test_Package_sub_install
VCStoreTests has 2 unexpected results (of 36):
   * F: VCStoreTests::verify_NoHistory_NoTOPICINFO_getRevisionInfo_VCStoreTests_PlainFile
   * F: VCStoreTests::verify_NoHistory_TOPICINFO_getRevisionInfo_VCStoreTests_PlainFile
VCMetaTests has 2 unexpected results (of 15):
   * F: VCMetaTests::verify_checkin_attachment_VCMetaTests_PlainFile
   * F: VCMetaTests::verify_rename_VCMetaTests_PlainFile
StoreImplementationTests has 4 unexpected results (of 48):
   * F: StoreImplementationTests::verify_copyAttachment_StoreImplementationTests_PlainFile
   * F: StoreImplementationTests::verify_eachAttachment_StoreImplementationTests_PlainFile
   * F: StoreImplementationTests::verify_moveAttachment_StoreImplementationTests_PlainFile
   * F: StoreImplementationTests::verify_moveWeb_StoreImplementationTests_PlainFile
----------------------------
3182 of 3191 test cases passed(3175)+failed(7) ok from 3312 total, 121 skipped
0 + 9 = 9 incorrect results from unexpected passes + failures
1..79763

-- PaulHarvey - 15 Nov 2012

Since I did the work the VCStoreTests have been recoded (in August) to assume the RCS file implementation of the store - something I had worked hard to avoid. So expect the VC* tests to fail. The StoreImplementation failures may be due to the tests on the release branch being outdated; the tests on trunk pass, and are definitive.

Uploaded, to see if it generates any more interest.

-- CrawfordCurrie - 28 Feb 2013
 
Topic revision: r14 - 28 Feb 2013, CrawfordCurrie
The copyright of the content on this website is held by the contributing authors, except where stated elsewhere. See Copyright Statement. Creative Commons License    Legal Imprint    Privacy Policy