Re: [Dovecot] Error: dict: Failed to initialize dictionary 'expire'

2009-01-09 Thread Timo Sirainen
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.


signature.asc
Description: This is a digitally signed message part


Re: [Dovecot] Error: dict: Failed to initialize dictionary 'expire'

2009-01-09 Thread LÉVAI Dániel
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


[Dovecot] Error: dict: Failed to initialize dictionary 'expire'

2008-12-19 Thread LÉVAI Dániel
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


Re: [Dovecot] Error: dict: Failed to initialize dictionary 'expire'

2008-12-19 Thread LÉVAI Dániel
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-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 :\
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