[Zope-dev] Read-only root database doesn't work ... bug or feature?

robert rottermann robert at redcor.ch
Thu May 20 04:53:35 EDT 2004


Paul Winkler wrote:

>I'm trying to figure out how to mount my main storage read-only
>with zope 2.7.0.  I'm starting to suspect that it's impossible.
>I tried a few things below....
>
>---------------------------------------------
>ATTEMPT #1.
>
>I find this in the zope.conf examples:
>
># Directive: read-only-database
>#
># Description:
>#     This causes the main Zope FileStorage-backed ZODB to be opened in
>#     read-only mode.
>#
># Default: off
>#
># Example:
>#
>#     read-only-database on
>
>
>... so I uncomment that line and restart.
>Zope starts OK but the database is evidently still writeable, I can
>still change anything.
>
>Is this a bug in the zope.conf examples, or a bug in zope?
>
>
>-------------------------------------------------
>ATTEMPT #2.
>
>Apparently there is another read-only flag within each database config
>section. So, I try that. In my zope.conf:
>
><zodb_db main>
>    # Main FileStorage database
>    cache-size 20000
>    mount-point /
>    <filestorage>
>      path $INSTANCE/var/Data.fs
>      read-only on
>    </filestorage>
></zodb_db>
>
>
>When I start with this config, zope dies during product initialization
>which apparently wants to commit:
>
>------
>2004-05-19T19:08:10 ERROR(200) Zope Couldn't install Formulator
>Traceback (most recent call last):
>  File "/home/pw/Zope-2.7.0/lib/python/OFS/Application.py", line 785, in install_product
>    get_transaction().commit()
>  File "/home/pw/Zope-2.7.0/lib/python/ZODB/Transaction.py", line 232, in commit
>    self._commit_begin(jars, subjars, subtransaction)
>  File "/home/pw/Zope-2.7.0/lib/python/ZODB/Transaction.py", line 340, in _commit_begin
>    jar.tpc_begin(self)
>  File "/home/pw/Zope-2.7.0/lib/python/ZODB/Connection.py", line 692, in tpc_begin
>    self._storage.tpc_begin(transaction)
>  File "/home/pw/Zope-2.7.0/lib/python/ZODB/BaseStorage.py", line 142, in tpc_begin
>    raise POSException.ReadOnlyError()
>ReadOnlyError
>Traceback (most recent call last):
>  File "/home/pw/Zope-2.7.0/lib/python/Zope/Startup/run.py", line 49, in ?
>    run()
>  File "/home/pw/Zope-2.7.0/lib/python/Zope/Startup/run.py", line 19, in run
>    start_zope(opts.configroot)
>  File "/home/pw/Zope-2.7.0/lib/python/Zope/Startup/__init__.py", line 51, in start_zope
>    starter.startZope()
>  File "/home/pw/Zope-2.7.0/lib/python/Zope/Startup/__init__.py", line 230, in startZope
>    Zope.startup()
>  File "/home/pw/Zope-2.7.0/lib/python/Zope/__init__.py", line 46, in startup
>    _startup()
>  File "/home/pw/Zope-2.7.0/lib/python/Zope/App/startup.py", line 93, in startup
>    OFS.Application.initialize(application)
>  File "/home/pw/Zope-2.7.0/lib/python/OFS/Application.py", line 279, in initialize
>    initializer.initialize()
>  File "/home/pw/Zope-2.7.0/lib/python/OFS/Application.py", line 306, in initialize
>    self.install_products() 
>  File "/home/pw/Zope-2.7.0/lib/python/OFS/Application.py", line 553, in install_products
>    return install_products(app)
>  File "/home/pw/Zope-2.7.0/lib/python/OFS/Application.py", line 584, in install_products
>    folder_permissions, raise_exc=debug_mode)
>  File "/home/pw/Zope-2.7.0/lib/python/OFS/Application.py", line 785, in install_product
>    get_transaction().commit()
>  File "/home/pw/Zope-2.7.0/lib/python/ZODB/Transaction.py", line 232, in commit
>    self._commit_begin(jars, subjars, subtransaction)
>  File "/home/pw/Zope-2.7.0/lib/python/ZODB/Transaction.py", line 340, in _commit_begin
>    jar.tpc_begin(self)
>  File "/home/pw/Zope-2.7.0/lib/python/ZODB/Connection.py", line 692, in tpc_begin
>    self._storage.tpc_begin(transaction)
>  File "/home/pw/Zope-2.7.0/lib/python/ZODB/BaseStorage.py", line 142, in tpc_begin
>    raise POSException.ReadOnlyError()
>ZODB.POSException.ReadOnlyError
>
>-----------------------------------------
>
>So, am I just plain S.O.L.?  Is this impossible?
>
>
>(Note: a similar message was sent earlier to dirstorage-users, but
>experimentation has shown me that the storage implementation
>doesn't seem to matter... i get the same result with filestorage,
>directorystorage, or clientstorage.)
>
>
>  
>
we had a simmilar problem. Eventually we spved it by patching zope.
However I am not sure whether the problem  was caused by Products (we do 
it for a plone site ) or by Zope itself.

what we changed is on a windows box that is not running under linux. 
thats why I do not include it here. However I can rboot that machine and 
send it to you if you like.
Robert



More information about the Zope-Dev mailing list