[horde] commit problem

Jan Schneider jan at horde.org
Fri Jan 6 09:57:29 UTC 2012


Zitat von Jan Schneider <jan at horde.org>:

> Zitat von Claude Tompers <claude.tompers at restena.lu>:
>
>> On 01/05/2012 04:55 PM, Jan Schneider wrote:
>>> Please don't top-post.
>>>
>>> Zitat von Claude Tompers <claude.tompers at restena.lu>:
>>>
>>>> On 01/05/2012 10:43 AM, Jan Schneider wrote:
>>>>>
>>>>> Zitat von Claude Tompers <claude.tompers at restena.lu>:
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> Our MySQL admin recently migrated all our Horde tables to INNODB.
>>>>>> Since
>>>>>> then, at least the horde_prefs table can not be edited anymore.
>>>>>> What we can see from a tcpdump is, that autocommit is explicitly
>>>>>> set to
>>>>>> 0, but it seems that the final commit command is never sent.
>>>>>> We just rolled back (temporarily) to MyISAM and now it works again.
>>>>>>
>>>>>> Is this a known issue or is there any config parameter that should fix
>>>>>> this ?
>>>>>
>>>>> Since InnoDB is the default engine for Horde 4, and such an behavior
>>>>> would break everybody's ability to save preferences, I can clearly say
>>>>> that this is not a known issue.
>>>>>
>>>> Hi Jan,
>>>>
>>>> Thanks for your reply. We did some digging this afternoon and had quite
>>>> a few results.
>>>> In short, we're using the mysqli driver and session handling is also
>>>> done in the mysql database.
>>>> When I try updating my prefs (changing the language for example), a lot
>>>> of session handling query go through as well as the actual UPDATE
>>>> horde_prefs query.
>>>> All these queries seem to be handled by the same Horde_Db_Adapter_Mysqli
>>>> instance. Immediately after the UPDATE query, the Adapter is closed
>>>> without committing to the database.
>>>> Therefore the changes are not applied. I'm surprised that nobody else
>>>> has this issue because we did not fiddle around in the code (At least
>>>> not until we added a few error_log commands this afternoon).
>>>
>>> This could well be bug in your mysqli extension. IIRC we use
>>> autocommit most of the time, if it is disabled, this might be the
>>> problem. An exception is problably the session driver.
>>> Try switching to the mysql/pdo driver instead.
>>>
>>> Jan.
>>>
>>
>> I'm getting the exact same results for mysql/pdo. It works for MyISAM
>> tables but not for InnoDB. From the dump, I see that autocommit is
>> explicitly disabled for the connection that updates the horde prefs.
>> I've asked myself though if the session driver and the prefs handler
>> should use the same MySQL adapter instance and thereby the same
>> connection to the server ?
>
> I don't see anything wrong with that.

Looking at the session handler code this actually might be the  
problem. We start the transaction in the session handler when reading  
the session data (at the start of the request), and we commit it when  
writing the session data (at the end of the request) or closing the  
session handler.
We need to request a separate database connection for the session  
handler. Please create a ticket.

Jan.

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



More information about the horde mailing list