[Dovecot] Error: dict: Failed to initialize dictionary 'expire'
Hi!
Using dovecot-1.1.17, and BDB-4.6.21.
I'm having this error in every two weeks or so. I've running this in a
crontab:
/usr/local/sbin/dovecot --exec-mail
ext /usr/local/libexec/dovecot/expire-tool
The expire plugin and tool is working fine, the configuration is ok, and I'm using the BDB backend. What happens in every ~two weeks is dovecot starts to give me this error messages: Error: dict: db_env: Unable to allocate memory for transaction detail Error: dict: Failed to initialize dictionary 'expire'
Reading thru Oracle's Berkeley DB FAQ: http://www.oracle.com/technology/products/berkeley-db/faq/db_faq.html#28 "This error means the maximum number of active transactions configured for Berkeley DB has been reached [...] When all of the memory available in the database environment for transactions is in use, calls to being a transaction will fail until some active transactions complete. By default, the database environment is configured to support at least 20 active transactions."
What could be happening here? Why coudn't it finish its transactions? After a dovecot restart it works fine :\
Thanks in advance for any hints.
Daniel
-- LEVAI Daniel PGP key ID = 0x4AC0A4B1 Key fingerprint = D037 03B9 C12D D338 4412 2D83 1373 917A 4AC0 A4B1
On Friday 19 December 2008 20.22.37 LÉVAI Dániel wrote:
Hi!
Using dovecot-1.1.17, and BDB-4.6.21. I'm having this error in every two weeks or so. I've running this in a crontab: /usr/local/sbin/dovecot --exec-mail
ext /usr/local/libexec/dovecot/expire-toolThe expire plugin and tool is working fine, the configuration is ok, and I'm using the BDB backend. What happens in every ~two weeks is dovecot starts to give me this error messages: Error: dict: db_env: Unable to allocate memory for transaction detail Error: dict: Failed to initialize dictionary 'expire'
Reading thru Oracle's Berkeley DB FAQ: http://www.oracle.com/technology/products/berkeley-db/faq/db_faq.html #28 "This error means the maximum number of active transactions configured for Berkeley DB has been reached [...] When all of the memory available in the database environment for transactions is in use, calls to being a transaction will fail until some active transactions complete. By default, the database environment is configured to support at least 20 active transactions." . What could be happening here? Why coudn't it finish its transactions? After a dovecot restart it works fine :
Sorry, I was in a hurry. It won't work even after a dovecot restart. I must delete expire's database directory, which I set with "expire = db:/var/dovecot/expire/expire.db" under the dict {} section. Then after a dovecot restart it works fine (at least for a couple of weeks).
-- LEVAI Daniel PGP key ID = 0x4AC0A4B1 Key fingerprint = D037 03B9 C12D D338 4412 2D83 1373 917A 4AC0 A4B1
On Fri, 2008-12-19 at 20:22 +0100, LÉVAI Dániel wrote:
Error: dict: db_env: Unable to allocate memory for transaction detail Error: dict: Failed to initialize dictionary 'expire'
This should help: http://hg.dovecot.org/dovecot-1.1/rev/7200ae88984b
Although when stress testing with dict quota (which isn't really even supposed to work correctly with bdb, but anyway) it still gives me these once in a while:
Error: dict: db(secondary, tss): /tmp/quota.db: DB_SECONDARY_BAD: Secondary index inconsistent with primary
But it seems to fix that automatically and I couldn't really figure out how to fix it. Unless perhaps I should be doing locking somehow explicitly. I can't seem to find usable documentation for bdb.
Also the dict proxy pretty stupidly opens the bdb file multiple times inside the same process, even though it could simply be creating new transactions. Too much trouble to fix right now.
On Friday 09 January 2009 19.18.57 Timo Sirainen wrote:
On Fri, 2008-12-19 at 20:22 +0100, LÉVAI Dániel wrote:
Error: dict: db_env: Unable to allocate memory for transaction detail Error: dict: Failed to initialize dictionary 'expire'
This should help: http://hg.dovecot.org/dovecot-1.1/rev/7200ae88984b
[...]
Too much trouble to fix right now. I must admit, that since then I've moved over to an sql backend for the dictionary, but if it needs testing I could set up bdb again.
Daniel
-- LEVAI Daniel PGP key ID = 0x4AC0A4B1 Key fingerprint = D037 03B9 C12D D338 4412 2D83 1373 917A 4AC0 A4B1
participants (2)
-
LÉVAI Dániel
-
Timo Sirainen