Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Usage of ZODB temporary storage

Tags:

zope

plone

zodb

In plone.recipe.zope2instance there is an option called zodb-temporary-storage that is used to replace Zope's default temporary storage definition.

When is this recommended? What are the upsides and downsides?

like image 735
hvelarde Avatar asked Jun 19 '15 17:06

hvelarde


1 Answers

By default the recipe includes a temporary storage service to store session data:

Temporary Folders are Zope folders that are used for storing objects temporarily. Temporary Folders acts almost exactly like a regular Folder with two significant differences:

  • Everything contained in a Temporary Folder disappears when you restart Zope. (A Temporary Folder’s contents are stored in RAM).
  • You cannot undo actions taken to objects stored a Temporary Folder.

This is great for the highly volatile session data, but if you are running Zope in a cluster you may want to swap out the storage for something that shared data across your cluster, for example.

The default configuration used is:

<zodb_db temporary>
    # Temporary storage database (for sessions)
    <temporarystorage>
      name temporary storage for sessioning
    </temporarystorage>
    mount-point /temp_folder
    container-class Products.TemporaryFolder.TemporaryContainer
</zodb_db>

which corresponds with the default session management setup for Zope.

I've always avoided using Zope's sessions, as they can easily become a bottleneck (loads of conflicts on the temporary storage), opting to store everything in cookies instead. If you really need server-side session storage, using Beaker (via collective.beaker might be a better option.

Better still, use Products.BeakerSessionDataManager to swap out the default Zope session manager to one backed by Beaker.

like image 169
Martijn Pieters Avatar answered Sep 30 '22 16:09

Martijn Pieters