[horde] "correct" way to convert shares and perms from datatree to sql?

Jan Schneider jan at horde.org
Thu Jan 29 10:43:37 UTC 2009


Zitat von "Leland J. Steinke" <steinkel at ctinetworks.com>:

> I traced my problems with alarms.php to using datatree for storing  
> kronolith and nag shares.  I figured that I'd convert everything  
> else from datatree to sql while I was at it.  I started with perms,  
> since there were so few to be cut over.
>
> I ran the script and changed the conf.php through the web ui.  Every  
> customer lost access to horde and errors of the form
>
>> PHP Fatal error:  Perms::getPermissions() [<a  
>> href='function.Perms-getPermissions'>function.Perms-getPermissions</a>]:  
>> The script tried to execute a method or access a property of an  
>> incomplete object. Please ensure that the class definition  
>> &quot;DataTreeObject_Permission&quot; of the object you are trying  
>> to operate on was loaded _before_ unserialize() gets called or  
>> provide a __autoload() function to load the class definition  in  
>> /var/www/horde/lib/Horde/Perms.php on line 290, referer:  
>> http://www.pa.net/index.php?show=auth&url=%2Fwebmail%2F
>
> filled my error logs.  I found a similar error discussed in  
> http://thread.gmane.org/gmane.comp.horde.imp/25369 but how to avoid  
> the problem was not spelled out clearly.  Putting perms back onto  
> datatree fixed the immediate problem, but did not solve the  
> performance problem that started the migration initially.

Try turning of the perms/share caching, at least during the migration.

> Should I do the change, then quickly restart memcached and clear out  
> the horde_cache table?  Is there any way to do this without kicking  
> hundreds of users off?  I don't mind kicking them off, but they have  
> to be able to reconnect when I let them back in.  The next time I do  
> this, it will be at a much less busy time of day (3AM or thereabouts).

This indeed is a cache problem, i.e. you still have objects from the  
old configuration in the cache that don't work anymore in the context  
of your new configuration. I was pretty sure that we fixed the code so  
that it invalidates cache objects once the driver changes, but maybe  
we missed one place.

> Will converting nag and kronolith (and mnemo and turba) from  
> datatree shares to sql be as disruptive?  Should I just shut horde  
> down while I do the conversions?

*Any* migration is *always* disruptive and should *never* be made on a  
running production system.

Jan.

-- 
Do you need professional PHP or Horde consulting?
http://horde.org/consulting/



More information about the horde mailing list