TIP RcsFastStoreContrib is not installed on Foswiki.org.

RcsFastStoreContrib

A simpler faster RCS store

Description

This is a fresh take on Foswiki's original RCS-based storage, with significant code complexity reduction, faster performance, and less disk space usage as goals. There are a few key distinctions between RCSStoreContrib and RcsFastStoreContrib's design choices.

Many attachments are found to have only been uploaded once. Nevertheless, previous storage implementations required twice as much disk space: once for the initial file and another time as a component of the version control system. Actually, a version control is only necessary in the event that an attachment is uploaded in more than one version. Before storing the second version and all subsequent ones, RcsFastStoreContrib will only then check in the first version. This also applies to the topic text. Version control is really only necessary for topics that have multiple versions.

Another significant distinction compared to previous storage implementations pertains to the monitoring of the filesystem for any out-of-band manipulation, i.e., the modification of files or attachments without the involvement of the Foswiki system itself. This monitoring procedure was implemented for each object being accessed by the storage system. It would then address these out-of-band manipulations to an unknown user by implementing an interim additional revision. If a file were to undergo oob manipulation, subsequent regular modifications made through the Foswiki API would result in two new versions.

RcsFastStoreContrib also does this, but instead of checking for an oob modification during view times, it does so when saving a topic. It should be noted that the act of viewing a page is time-sensitive, while saving a page is not.

Installation Instructions

The new implemtation is activated by setting

$Foswiki::cfg{Store}{Implementation} = 'Foswiki::Store::RcsFast';

Note that it is straightforward to change from RcsLite or RcsWrap, part of RCSStoreContrib, to RcsFast. Not so much switching from PlainFileStoreContrib's PlainFile implementation as this is a completely different version control system.

Optimization of store

RcsFastStoreContrib includes a service procedure that checks the system for redundant revision control files and optionally deletes them. The syntax is:

<foswiki-dir>/tools/checkStore 
  web=...
  verbose=on/off
  quiet=on/off
  unlink=on/off

All parameters are optional

  • web: select a single web to check, default all
  • verbose: enable verbose mode, default off
  • quiet: enable quiet mode, deffailt off
  • unlink: enable removal of redundant store files, default off

By default checkStore will only report the quantity of files that can be removed and the amount of disk space that will be freed in that manner. Only when adding the unlink=on paramteter will the procedure actually remove those files.

Dependencies

None

Change History

13 Oct 2024 first major version
I Attachment Action Size Date Who Comment
RcsFastStoreContrib.md5md5 RcsFastStoreContrib.md5 manage 180 bytes 14 Oct 2024 - 12:04 MichaelDaum  
RcsFastStoreContrib.sha1sha1 RcsFastStoreContrib.sha1 manage 204 bytes 14 Oct 2024 - 12:04 MichaelDaum  
RcsFastStoreContrib.tgztgz RcsFastStoreContrib.tgz manage 19 K 14 Oct 2024 - 12:04 MichaelDaum  
RcsFastStoreContrib.zipzip RcsFastStoreContrib.zip manage 26 K 14 Oct 2024 - 12:04 MichaelDaum  
RcsFastStoreContrib_installerEXT RcsFastStoreContrib_installer manage 4 K 14 Oct 2024 - 12:04 MichaelDaum  
Topic revision: r1 - 14 Oct 2024, MichaelDaum
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