Read-only root database doesn't work ... bug or feature?
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.) -- Paul Winkler http://www.slinkp.com
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
On Thu, May 20, 2004 at 10:53:35AM +0200, robert rottermann wrote:
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. (snip) 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.
Please do! That would be much appreciated. Thanks! -- Paul Winkler http://www.slinkp.com
Paul Winkler wrote:
On Thu, May 20, 2004 at 10:53:35AM +0200, robert rottermann wrote:
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.
(snip)
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.
Please do! That would be much appreciated. Thanks!
Paul, sorry that it took so long. I just booted my server under windows to get at what adaptations we did, however I found out that I do not have the code on that computer. However it was something allong the line dieter suggested. I am however interested what your findings with Formulator is. We have a very strange problem with the CD we create. A Product of ours that is based on Archetypes is not initialized correctly. We have to first refresh Archetypes and then our product from the ZMI. If you have an idea what could be the problem he: Hints are welcome. Robert
Paul Winkler wrote at 2004-5-19 19:15 -0400:
I'm trying to figure out how to mount my main storage read-only with zope 2.7.0.
I fear this is not implemented... Because, I wanted to control this behaviour through an environment variable (and not the configuration file!), I patched "Zope/App/startup.py": def _isReadOnly(): ro= os.environ.get('ZODB_READ_ONLY') return ro and int(ro) or 0 def startup(): .... try: # Try to use custom storage m=imp.find_module('custom_zodb',[getConfiguration().instancehome]) except: # if there is no custom_zodb, use the config file specified databases configuration = getConfiguration() if _isReadOnly(): configuration.dbtab.getDatabaseFactory('/').config.storage.config.read_only = True As you can see, it is the storage (and not the database), that must get the "read-only" declaration. -- Dieter
On Thu, May 20, 2004 at 09:12:35PM +0200, Dieter Maurer wrote:
Paul Winkler wrote at 2004-5-19 19:15 -0400:
I'm trying to figure out how to mount my main storage read-only with zope 2.7.0.
I fear this is not implemented...
I now believe it's implemented just fine, but it's problematic because at least one product (Formulator) triggers a commit when the product is loaded. (snip)
def startup(): .... (snip) configuration.dbtab.getDatabaseFactory('/').config.storage.config.read_only = True
As you can see, it is the storage (and not the database), that must get the "read-only" declaration.
Understood. I spent a little time with the debugger and determined that this is already handled by adding the "read-only on" line to the <filestorage> section of zope.conf. I confirmed this: ... (Pdb) n
/home/pw/Zope-2.7.0/lib/python/Zope/App/startup.py(54)startup() -> configuration = getConfiguration() (Pdb) n /home/pw/Zope-2.7.0/lib/python/Zope/App/startup.py(55)startup() -> DB = configuration.dbtab.getDatabase('/', is_root=1) (Pdb) myconf = configuration.dbtab.getDatabaseFactory('/').config.storage.config (Pdb) p myconf.read_only True
So, apparently the storage DOES get the read-only declaration. If I continue from this point, zope exits during installation of Formulator, with the aforementioned ZODB.POSException.ReadOnlyError. But if I remove everything from my Products/ , zope starts and runs just fine... I only get ReadOnlyError if I try to modify anything, as I would expect. Formulator is the only culprit I'm sure of; I can trigger the error if my Products/ contains only Formulator. Everything else (ZSyncer, ZopeVersionControl, CMFDefault & dependencies, some in-house stuff...) seems to be OK. Not sure of CMFPlone because it depends on Formulator. I have not yet found exactly how Formulator triggers a commit, but it is definitely something called by its initialize() function. -- Paul Winkler http://www.slinkp.com
Paul Winkler wrote:
On Thu, May 20, 2004 at 09:12:35PM +0200, Dieter Maurer wrote:
Paul Winkler wrote at 2004-5-19 19:15 -0400:
I'm trying to figure out how to mount my main storage read-only with zope 2.7.0.
I fear this is not implemented...
I now believe it's implemented just fine, but it's problematic because at least one product (Formulator) triggers a commit when the product is loaded.
(snip)
def startup(): ....
(snip)
configuration.dbtab.getDatabaseFactory('/').config.storage.config.read_only = True
As you can see, it is the storage (and not the database), that must get the "read-only" declaration.
Understood. I spent a little time with the debugger and determined that this is already handled by adding the "read-only on" line to the <filestorage> section of zope.conf. I confirmed this:
... (Pdb) n
/home/pw/Zope-2.7.0/lib/python/Zope/App/startup.py(54)startup()
-> configuration = getConfiguration() (Pdb) n
/home/pw/Zope-2.7.0/lib/python/Zope/App/startup.py(55)startup()
-> DB = configuration.dbtab.getDatabase('/', is_root=1) (Pdb) myconf = configuration.dbtab.getDatabaseFactory('/').config.storage.config (Pdb) p myconf.read_only True
So, apparently the storage DOES get the read-only declaration. If I continue from this point, zope exits during installation of Formulator, with the aforementioned ZODB.POSException.ReadOnlyError.
But if I remove everything from my Products/ , zope starts and runs just fine... I only get ReadOnlyError if I try to modify anything, as I would expect.
Formulator is the only culprit I'm sure of; I can trigger the error if my Products/ contains only Formulator. Everything else (ZSyncer, ZopeVersionControl, CMFDefault & dependencies, some in-house stuff...) seems to be OK. Not sure of CMFPlone because it depends on Formulator.
I have not yet found exactly how Formulator triggers a commit, but it is definitely something called by its initialize() function.
It is probably trying to do the Right Thing (TM) by registering with the help system. The fact that the help system writes to the database is a wart the size of my foot. Tres. -- =============================================================== Tres Seaver tseaver@zope.com Zope Corporation "Zope Dealers" http://www.zope.com
Tres Seaver wrote at 2004-5-21 15:09 -0400:
...
I have not yet found exactly how Formulator triggers a commit, but it is definitely something called by its initialize() function.
It is probably trying to do the Right Thing (TM) by registering with the help system. The fact that the help system writes to the database is a wart the size of my foot.
But "Formulator" is a bit stupid about this registering. While most other products recognize, that they have already registered (in a previous startup), "Formulator" does not. A long time ago, I had fixed that in "Formulator" but the fix did not go into the following releases. -- Dieter
Dieter Maurer wrote:
Tres Seaver wrote at 2004-5-21 15:09 -0400:
...
I have not yet found exactly how Formulator triggers a commit, but it is definitely something called by its initialize() function.
It is probably trying to do the Right Thing (TM) by registering with the help system. The fact that the help system writes to the database is a wart the size of my foot.
Yup, it's the help system.
But "Formulator" is a bit stupid about this registering.
While most other products recognize, that they have already registered (in a previous startup), "Formulator" does not.
A long time ago, I had fixed that in "Formulator" but the fix did not go into the following releases.
I must've missed the patch you sent me, my apologies. I know this has been reported before but I haven't looked into it yet. I'm wondering how to handle Formulator upgrades though -- just checking if you've been registered in a previous startup is not enough if the help text changes between releases, is it? It's been a long time since I worked with the Zope help system.. Regards, Martijn
On Mon, May 24, 2004 at 09:50:31AM +0200, Martijn Faassen wrote:
Dieter Maurer wrote:
Tres Seaver wrote at 2004-5-21 15:09 -0400:
...
I have not yet found exactly how Formulator triggers a commit, but it is definitely something called by its initialize() function.
It is probably trying to do the Right Thing (TM) by registering with the help system. The fact that the help system writes to the database is a wart the size of my foot.
Yup, it's the help system.
This is very odd. Did you see the message I sent to formulator-dev a few days ago? I spent some time tracing the source of the ReadOnlyErrors and was *sure* it was coming from initializeFieldForm. Today I am trying again and it seems that indeed, the calls to registerHelp and registerFieldHelp are the cause, and initializeFieldForm is not writing to the ZODB after all. I wonder what the heck I was doing differently. Sigh. -- Paul Winkler http://www.slinkp.com
Paul Winkler wrote:
On Mon, May 24, 2004 at 09:50:31AM +0200, Martijn Faassen wrote:
Yup, it's the help system.
This is very odd. Did you see the message I sent to formulator-dev a few days ago?
No, sorry, just taking a look at it.
I spent some time tracing the source of the ReadOnlyErrors and was *sure* it was coming from initializeFieldForm. Today I am trying again and it seems that indeed, the calls to registerHelp and registerFieldHelp are the cause, and initializeFieldForm is not writing to the ZODB after all. I wonder what the heck I was doing differently. Sigh.
Hmm. How do you detect the cause anyway? Regards, Martijn
On Tue, May 25, 2004 at 04:13:18PM +0200, Martijn Faassen wrote:
Paul Winkler wrote:
On Mon, May 24, 2004 at 09:50:31AM +0200, Martijn Faassen wrote:
Yup, it's the help system.
This is very odd. Did you see the message I sent to formulator-dev a few days ago?
No, sorry, just taking a look at it.
I spent some time tracing the source of the ReadOnlyErrors and was *sure* it was coming from initializeFieldForm. Today I am trying again and it seems that indeed, the calls to registerHelp and registerFieldHelp are the cause, and initializeFieldForm is not writing to the ZODB after all. I wonder what the heck I was doing differently. Sigh.
Hmm. How do you detect the cause anyway?
just commenting out various stuff in initialize() and restarting zope to see if I get ReadOnlyError. This is what is puzzling; if I use the same technique today, the error seems clearly related to the registerHelp and registerFieldHelp calls... but last week I concluded that those were not the problem, and I don't recall what made me think that. -- Paul Winkler http://www.slinkp.com
Martijn Faassen wrote at 2004-5-24 09:50 +0200:
... I know this has been reported before but I haven't looked into it yet. I'm wondering how to handle Formulator upgrades though -- just checking if you've been registered in a previous startup is not enough if the help text changes between releases, is it?
It's been a long time since I worked with the Zope help system..
I attach my previous patch. It may no longer work, though. -- Dieter
On Mon, May 24, 2004 at 06:55:02PM +0200, Dieter Maurer wrote: Content-Description: message body and .signature
Martijn Faassen wrote at 2004-5-24 09:50 +0200:
... I know this has been reported before but I haven't looked into it yet. I'm wondering how to handle Formulator upgrades though -- just checking if you've been registered in a previous startup is not enough if the help text changes between releases, is it?
It's been a long time since I worked with the Zope help system..
I attach my previous patch. It may no longer work, though.
It doesn't apply cleanly to Formulator 1.6.2 (the one that ships with plone 2.0-final). But it's easy to apply the rejects by hand. Updated patch attached, can you verify that this does what your patch intended? I applied this, but it doesn't solve the ReadOnlyError :-( -- Paul Winkler http://www.slinkp.com
Paul Winkler wrote:
On Mon, May 24, 2004 at 06:55:02PM +0200, Dieter Maurer wrote: Content-Description: message body and .signature
Martijn Faassen wrote at 2004-5-24 09:50 +0200:
... I know this has been reported before but I haven't looked into it yet. I'm wondering how to handle Formulator upgrades though -- just checking if you've been registered in a previous startup is not enough if the help text changes between releases, is it?
It's been a long time since I worked with the Zope help system..
I attach my previous patch. It may no longer work, though.
It doesn't apply cleanly to Formulator 1.6.2 (the one that ships with plone 2.0-final). But it's easy to apply the rejects by hand. Updated patch attached, can you verify that this does what your patch intended?
I applied this, but it doesn't solve the ReadOnlyError :-(
I'm not sure whether the patch ever could've worked. Firstly, the rich comparison operations were never called; I think perhaps due to some limitation in ExtenionClass. __cmp__ is called, but instead I just made the method explicit. Possibly this is better in Zope 2.7; I'm still testing with 2.6.4. Then there's another problem; I think FieldHelpTopic is basically compared before Formulator (or the help system?) is fully initialized, so no groups or fields are found to compare (causing it to always succeed). I'll try to revise the strategy to fix this problem.. Regards, Martijn
[Martijn Faassen] ...
I'm not sure whether the patch ever could've worked. Firstly, the rich comparison operations were never called; I think perhaps due to some limitation in ExtenionClass.
ExtensionClass doesn't play well with many "newer" Python class features. Rich comparisons are one of them.
__cmp__ is called, but instead I just made the method explicit. Possibly this is better in Zope 2.7; I'm still testing with 2.6.4.
This may improve with ZODB 3.3 / Zope 2.8, where Persistent is a vanilla new-style Python class (instead of an ExtensionClass).
Tim Peters wrote:
[Martijn Faassen] ...
I'm not sure whether the patch ever could've worked. Firstly, the rich comparison operations were never called; I think perhaps due to some limitation in ExtenionClass.
ExtensionClass doesn't play well with many "newer" Python class features. Rich comparisons are one of them.
That's what I figured, thanks Tim for confirming it. Anyway, I think I fixed at least the matter for field help topics in a much simpler way, though I don't know whether other sections don't do ZODB writes either on startup. If it's in the normal Zope help registration then we have a bigger problem. :) The fix is in the latest Formulator CVS; Paul, please test it if you can and let me know if you still see the untowards behavior. Regards, Martijn
On Tue, 2004-05-25 at 12:48, Martijn Faassen wrote:
Anyway, I think I fixed at least the matter for field help topics in a much simpler way, though I don't know whether other sections don't do ZODB writes either on startup. If it's in the normal Zope help registration then we have a bigger problem. :)
DEATH TO THE HELP SYSTEM! - C
Chris McDonough wrote:
DEATH TO THE HELP SYSTEM!
I'm sure I remember reading that about the OLD help system ;-) Chris - Zope.org anyone? -- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk
On Tue, 2004-05-25 at 14:45, Chris Withers wrote:
Chris McDonough wrote:
DEATH TO THE HELP SYSTEM!
I'm sure I remember reading that about the OLD help system ;-)
This *is* the old help system. - C
Chris McDonough wrote:
I'm sure I remember reading that about the OLD help system ;-)
This *is* the old help system.
Oh? What was the on before it then? Chris -- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk
On Tue, 2004-05-25 at 15:51, Chris Withers wrote:
Chris McDonough wrote:
I'm sure I remember reading that about the OLD help system ;-)
This *is* the old help system.
Oh? What was the on before it then?
I'm afraid you've invented an earlier help system in your mind. - C
Chris McDonough wrote:
I'm sure I remember reading that about the OLD help system ;-)
This *is* the old help system.
Oh? What was the on before it then?
I'm afraid you've invented an earlier help system in your mind.
So the one that's causing problems isn't the one that you currently see in the ZMI? Chris -- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk
On Tue, May 25, 2004 at 06:48:56PM +0200, Martijn Faassen wrote:
Tim Peters wrote:
[Martijn Faassen] ...
I'm not sure whether the patch ever could've worked. Firstly, the rich comparison operations were never called; I think perhaps due to some limitation in ExtenionClass.
ExtensionClass doesn't play well with many "newer" Python class features. Rich comparisons are one of them.
That's what I figured, thanks Tim for confirming it.
Anyway, I think I fixed at least the matter for field help topics in a much simpler way, though I don't know whether other sections don't do ZODB writes either on startup. If it's in the normal Zope help registration then we have a bigger problem. :)
The fix is in the latest Formulator CVS; Paul, please test it if you can and let me know if you still see the untowards behavior.
It seems good, thanks!!!!!! Now I've discovered a few more products that are read-only-incompatible :-( CMFCalendar and (eek) CMFCore. I'll look into those and see if a similar fix will help. -- Paul Winkler http://www.slinkp.com
On Tue, May 25, 2004 at 03:46:16PM -0400, Paul Winkler wrote:
Now I've discovered a few more products that are read-only-incompatible :-( CMFCalendar and (eek) CMFCore. I'll look into those and see if a similar fix will help.
False alarm, apparently caused by me moving my product directories around while testing. registerHelp checks the directory mod time and returns immediately unless it's more recent than the last registration time. My moving stuff around triggered that. So after one startup with read-only off, I restarted with read-only on and presto, all my products work. Whew! -- Paul Winkler http://www.slinkp.com
Paul Winkler wrote:
The fix is in the latest Formulator CVS; Paul, please test it if you can and let me know if you still see the untowards behavior.
It seems good, thanks!!!!!!
Great! Thanks everybody! Regards, Martijn
participants (8)
-
Chris McDonough -
Chris Withers -
Dieter Maurer -
Martijn Faassen -
Paul Winkler -
robert rottermann -
Tim Peters -
Tres Seaver