6.0.0-alpha10
5/17/25

[#12458] IMAP Cache Problem
Summary IMAP Cache Problem
Queue IMP
Queue Version 6.1.2
Type Bug
State No Feedback
Priority 1. Low
Owners
Requester busywater (at) gmail (dot) com
Created 07/15/2013 (4324 days ago)
Due
Updated 07/24/2013 (4315 days ago)
Assigned
Resolved 07/24/2013 (4315 days ago)
Milestone
Patch No

History
07/24/2013 11:13:32 PM Michael Slusarz State ⇒ No Feedback
 
07/16/2013 04:13:56 AM Michael Slusarz Comment #5 Reply to this comment
I found out the problem is not related with imapproxy / dovecot / redis.
You haven't told me anything other than your cache setup isn't 
working.  This has provided no detail as to *why* your setup isn't 
working.  In other words - *why* doesn't the cache object exist when 
you are trying to access it.  That's what is important, not what your 
cache settings are.

You need to debug at the PHP level why this is happening (e.g. tracing 
the code with breakpoints) most likely.  If you are unable/unwilling 
to do this, there is nothing more we can do from this end.
07/16/2013 03:56:10 AM busywater (at) gmail (dot) com Comment #4 Reply to this comment
I found out the problem is not related with imapproxy / dovecot / redis.

Either two of the following settings of horde can trigger the problem:
Set A:
$conf['cache']['driver'] = 'Hashtable';
$conf['cache']['use_memorycache'] = 'Hashtable';
$conf['hashtable']['params']['hostspec'] = array('localhost');
$conf['hashtable']['params']['port'] = array('6379');
$conf['hashtable']['driver'] = 'Predis';

Set B:
$conf['cache']['driver'] = 'File';
$conf['cache']['use_memorycache'] = 'Hashtable';
$conf['hashtable']['params']['hostspec'] = array('localhost');
$conf['hashtable']['params']['port'] = array('6379');
$conf['hashtable']['driver'] = 'Predis';

I resort to turn off the caching to avoid the imp error by the 
following settings:
$conf['cache']['default_lifetime'] = 86400;
$conf['cache']['driver'] = 'Null';
$conf['cache']['use_memorycache'] = 'Hashtable';
$conf['hashtable']['params']['hostspec'] = array('localhost');
$conf['hashtable']['params']['port'] = array('6379');
$conf['hashtable']['driver'] = 'Predis';

Did I mis-configure anything?  Or this is Horde_Cache problem?
07/15/2013 06:02:24 PM Michael Slusarz Comment #3
Priority ⇒ 1. Low
Reply to this comment
Can't reproduce.  You will need to debug to figure out why the cache 
driver isn't initialized for you.
07/15/2013 02:04:03 PM busywater (at) mail (dot) com Comment #2 Reply to this comment
Further studying the problem, I turn on the debug in imp backend.   
Steps to reproduce the error.
Step 1. Login horde with accounta and logout
Step 2. Login horde with accountb and the error occurs.

------------------------------
Mon, 15 Jul 2013 14:01:41 +0000
S: * OK [CAPABILITY IMAP4rev1 LITERAL+ LOGIN-REFERRALS ID ENABLE   
XIMAPPROXY] Dovecot ready.
1 [LOGIN Command - username: accountb@domain.com]
S: * OK [XPROXYREUSE] IMAP connection reused by imapproxy
S: 1 OK User logged in
C: 2 LOGOUT
S: * BYE LOGOUT received
S: 2 OK Completed
------------------------------
Mon, 15 Jul 2013 14:01:42 +0000
S: * OK [CAPABILITY IMAP4rev1 LITERAL+ LOGIN-REFERRALS ID ENABLE   
XIMAPPROXY] Dovecot ready.
1 [LOGIN Command - username: accountb@domain.com]
S: * OK [XPROXYREUSE] IMAP connection reused by imapproxy
S: 1 OK User logged in
CACHE: Using the Horde_Imap_Client_Cache_Backend_Cache storage driver.
C: 3 LOGOUT
S: * BYE LOGOUT received
S: 3 OK Completed
07/15/2013 02:03:52 AM busywater (at) gmail (dot) com Comment #1
Priority ⇒ 2. Medium
Type ⇒ Bug
Summary ⇒ IMAP Cache Problem
Queue ⇒ IMP
Milestone ⇒
Patch ⇒ No
State ⇒ Unconfirmed
Reply to this comment
My environment is as follows:
dovecot 2.2.4
Imapproxy 1.2.7
horde 5.1.1
imp 6.1.2
Redis (2.6.14) as caching driver

When I turn on cache = 'cache' in imp backend.local.php, I got the 'Error
when communicating with the server' in viewing the email box.  The 
apache logs show:

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP Fatal error:  Call
to a member function get() on a non-object in
/usr/share/php/Horde/Cache/Storage/Hashtable.php on line 68, referer:
https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP Stack trace:,
referer: https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP   1. {main}()
/var/www/html/webmail/services/ajax.php:0, referer:
https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP   2.
Horde_Core_Ajax_Application->doAction()
/var/www/html/webmail/services/ajax.php:58, referer:
https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP   3.
call_user_func() /usr/share/php/Horde/Core/Ajax/Application.php:162,
referer: https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP   4.
IMP_Ajax_Application_Handler_Dynamic->dynamicInit()
/usr/share/php/Horde/Core/Ajax/Application.php:162, referer:
https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP   5.
Horde_Core_Ajax_Application->callAction()
/var/www/html/webmail/imp/lib/Ajax/Application/Handler/Dynamic.php:373,
referer: https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP   6.
call_user_func() /usr/share/php/Horde/Core/Ajax/Application.php:232,
referer: https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP   7.
IMP_Ajax_Application_Handler_Common->viewPort()
/usr/share/php/Horde/Core/Ajax/Application.php:232, referer:
https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP   8.
IMP_Ajax_Application->viewPortData()
/var/www/html/webmail/imp/lib/Ajax/Application/Handler/Common.php:99,
referer: https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP   9.
IMP_Ajax_Application_ListMessages->listMessages()
/var/www/html/webmail/imp/lib/Ajax/Application.php:246, referer:
https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP  10.
IMP_Imap->openMailbox()
/var/www/html/webmail/imp/lib/Ajax/Application/ListMessages.php:133,
referer: https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP  11.
IMP_Imap->__call()
/var/www/html/webmail/imp/lib/Ajax/Application/ListMessages.php:133,
referer: https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP  12.
call_user_func_array() /var/www/html/webmail/imp/lib/Imap.php:569, referer:
https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP  13.
Horde_Imap_Client_Base->openMailbox()
/var/www/html/webmail/imp/lib/Imap.php:569, referer:
https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP  14.
Horde_Imap_Client_Socket->_openMailbox()
/usr/share/php/Horde/Imap/Client/Base.php:978, referer:
https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP  15.
Horde_Imap_Client_Cache->getMetaData()
/usr/share/php/Horde/Imap/Client/Socket.php:923, referer:
https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP  16.
Horde_Imap_Client_Cache_Backend_Cache->getMetaData()
/usr/share/php/Horde/Imap/Client/Cache.php:173, referer:
https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP  17.
Horde_Imap_Client_Cache_Backend_Cache->_loadSliceMap()
/usr/share/php/Horde/Imap/Client/Cache/Backend/Cache.php:255, referer:
https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP  18.
Horde_Cache->get()
/usr/share/php/Horde/Imap/Client/Cache/Backend/Cache.php:435, referer:
https://mail.domain.org/imp/dynamic.php?page=mailbox

[Wed Jul 10 00:32:47 2013] [error] [client 1.2.3.4] PHP  19.
Horde_Cache_Storage_Hashtable->get() /usr/share/php/Horde/Cache.php:97,
referer: https://mail.domain.org/imp/dynamic.php?page=mailbox


However, when logout and login horde, the error does not appear and 
IMP become functional again.  So, it is not good to ask the users to 
try login agin to make viewing emails possible.  There is no choice 
but to turn off caching of imap backend by
setting 'cache' => false.


Please offer help.  Thanks.

Saved Queries