[Dovecot] Again ACL Postgres dict trouble, no update and raw backtrace
Steffen Kaiser
skdovecot at smail.inf.fh-brs.de
Thu Jan 24 12:44:04 EET 2013
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi,
I have ACL-dict-postgres trouble again. Eventually a session does not
update the ACL dictionary no longer.
I execute (for testing) this script:
for a in $(seq 1 ${1-4}); do
echo 3-$a deleteAcl Junk dvtest1
sleep 30
echo 3-$a SetAcl Junk dvtest1 kxilrsc
sleep 30
done
It works two loops
2013-01-24 11:07:59 dict: Info: pgsql(localhost): Connected to database dovecot
2013-01-24 11:07:59 dict: Info: pgsql(localhost): Connected to database dovecot
2013-01-24 11:07:59 dict: Info: pgsql(localhost): Connected to database dovecot
2013-01-24 11:08:59 dict: Info: pgsql(localhost): Connected to database dovecot
2013-01-24 11:09:29 dict: Info: pgsql(localhost): Connected to database dovecot
, then dies with:
2013-01-24 11:09:59 dict: Error: dict sql iterate failed: Not connected to database
2013-01-24 11:09:59 IMAP(dvtest6) [22740]: Error: acl: dict iteration failed, can't update dict
2013-01-24 11:10:02 IMAP(dvtest6) [22740]: Info: Connection closed in=159 out=572
2013-01-24 11:11:00 dict: Panic: file driver-pgsql.c: line 84 (driver_pgsql_set_state): assertion failed: (state == SQL_DB_STATE_BUSY || db->cur_result == NULL)
2013-01-24 11:11:00 dict: Error: Raw backtrace: /usr/local/dovecot-2.1.13/lib/dovecot/libdovecot.so.0(+0x4881a) [0x7f465693181a] -> /usr/local/dovecot-2.1.13/lib/dovecot/libdovecot.so.0(+0x48866) [0x7f4656931866] -> /usr/local/dovecot-2.1.13/lib/dovecot/libdovecot.so.0(i_error+0) [0x7f4656904f7f] -> dovecot2.1/dict() [0x40aa36] -> dovecot2.1/dict() [0x40aa91] -> dovecot2.1/dict() [0x40bed3] -> dovecot2.1/dict() [0x409504] -> dovecot2.1/dict(sql_db_cache_deinit+0x20) [0x408a60] -> dovecot2.1/dict(main+0x169) [0x405a59] -> /lib/libc.so.6(__libc_start_main+0xfd) [0x7f465637cc8d] -> dovecot2.1/dict() [0x404bb9]
2013-01-24 11:11:00 dict: Fatal: master: service(dict): child 22744 killed with signal 6 (core not dumped)
There are two different Panic messages:
Panic: file driver-pgsql.c: line 587: unreached
Panic: file driver-pgsql.c: line 84 (driver_pgsql_set_state): assertion failed: (state == SQL_DB_STATE_BUSY || db->cur_result == NULL)
I have ulimit -c unlimited set, at start up Dovecot says:
2013-01-23 16:33:20 master: Info: Dovecot v2.1.13 (6eabf0c738d7) starting up
but I do not get no core dumps.
The last SQL statement executed by Posgres is (log level debug5):
2013-01-24 11:09:59 CET DEBUG: StartTransactionCommand
2013-01-24 11:09:59 CET STATEMENT: SELECT dummy,to_user,from_user FROM user_shares
2013-01-24 11:09:59 CET DEBUG: StartTransaction
2013-01-24 11:09:59 CET STATEMENT: SELECT dummy,to_user,from_user FROM user_shares
2013-01-24 11:09:59 CET DEBUG: name: unnamed; blockState: DEFAULT; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2013-01-24 11:09:59 CET STATEMENT: SELECT dummy,to_user,from_user FROM user_shares
2013-01-24 11:09:59 CET LOG: statement: SELECT dummy,to_user,from_user FROM user_shares
2013-01-24 11:09:59 CET DEBUG: CommitTransactionCommand
2013-01-24 11:09:59 CET STATEMENT: SELECT dummy,to_user,from_user FROM user_shares
2013-01-24 11:09:59 CET DEBUG: CommitTransaction
2013-01-24 11:09:59 CET STATEMENT: SELECT dummy,to_user,from_user FROM user_shares
2013-01-24 11:09:59 CET DEBUG: name: unnamed; blockState: STARTED; state: INPROGR, xid/subid/cid: 0/1/0, nestlvl: 1, children:
2013-01-24 11:09:59 CET STATEMENT: SELECT dummy,to_user,from_user FROM user_shares
2013-01-24 11:09:59 CET LOG: duration: 0.205 ms
Dovecot conf:
SQL /usr/local/dovecot-2.1.13/etc/dovecot/dovecot-dict-sql.conf.ext
connect = host=localhost dbname=dovecot user=dovecot pass=XYZ
# CREATE TABLE user_shares (
# from_user varchar(100) not null,
# to_user varchar(100) not null,
# dummy char(1) DEFAULT '1', -- always '1' currently
# primary key (from_user, to_user)
# );
# COMMENT ON TABLE user_shares IS 'User from_user shares folders to user to_user.';
#
# CREATE INDEX to_user
# ON user_shares (to_user); -- because we always search for to_user
#
# CREATE TABLE anyone_shares (
# from_user varchar(100) not null,
# dummy char(1) DEFAULT '1', -- always '1' currently
# primary key (from_user)
# );
# COMMENT ON TABLE anyone_shares IS 'User from_user shares folders to anyone.';
map {
pattern = shared/shared-boxes/user/$to/$from
table = user_shares
value_field = dummy
fields {
from_user = $from
to_user = $to
}
}
map {
pattern = shared/shared-boxes/anyone/$from
table = anyone_shares
value_field = dummy
fields {
from_user = $from
}
}
# 2.1.13 (6eabf0c738d7): /usr/local/dovecot-2.1.13/etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-5-amd64 x86_64 Debian 6.0.6
auth_cache_size = 10 M
auth_debug = yes
auth_mechanisms = plain login
auth_verbose = yes
base_dir = /var/run/dovecot2.1/
deliver_log_format = msgid=%m: %$ %p/%w "%f" "%s"
dict {
acl = pgsql:/usr/local/dovecot-2.1.13/etc/dovecot/dovecot-dict-sql.conf.ext
quota = pgsql:/usr/local/dovecot-2.1.13/etc/dovecot/dovecot-dict-sql.conf.ext
}
instance_name = dovecot2.1
lda_mailbox_autocreate = yes
lmtp_save_to_detail_mailbox = yes
log_path = /var/log/dovecot/dovecot2.1.log
log_timestamp = "%F %H:%M:%S "
mail_debug = yes
mail_gid = vmail
mail_log_prefix = "%Us(%u) [%p]: "
mail_plugins = " quota notify mail_log zlib acl"
mail_uid = vmail
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date ihave imapflags
namespace {
list = children
location = maildir:%%h/Maildir:INDEX=~/Maildir/shared/%%u
prefix = users.%%u.
separator = .
type = shared
}
namespace inbox {
inbox = yes
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix =
}
passdb {
args = /usr/local/dovecot-2.1.13/etc/dovecot/dovecot-ldap.conf.ext
driver = ldap
}
plugin {
acl = vfile
acl_shared_dict = proxy::acl
antispam_allow_append_to_spam = true
antispam_backend = spool2dir
antispam_spam = SPAM+ReportAsSPAM
antispam_spool2dir_notspam = /tmp/spamspool/%%020lu-%%05lu-%u-H
antispam_spool2dir_spam = /tmp/spamspool/%%020lu-%%05lu-%u-S
antispam_trash = trash;TRASH;Trash;spam;SPAM;Spam;junk;JUNK;Junk;Deleted Items;Deleted Messages;Gel&APY-schte Elemente;Gel&APY-schte Objekte;Junk E-mail;Junk-E-Mail;INBOX.Trash;INBOX.TRASH;INBOX.trash
mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename
mail_log_fields = uid box msgid size vsize from subject
quota = dict:User quota::proxy::quota
quota_rule = *:storage=300MB
quota_rule2 = Trash:storage=+30M
recipient_delimiter = +
sieve = ~/.dovecot.sieve
sieve_dir = ~/sieve
sieve_extensions = +imapflags
sieve_max_actions = 0
sieve_quota_max_storage = 3M
}
protocols = imap pop3 lmtp sieve
quota_full_tempfail = yes
service auth {
unix_listener auth-userdb {
mode = 0766
user = vmail
}
}
service dict {
unix_listener dict {
group = vmail
mode = 0660
user = vmail
}
}
service doveadm {
unix_listener doveadm-server {
mode = 0666
}
}
service managesieve-login {
inet_listener sieve {
port = 4190
}
inet_listener sieve_deprecated {
port = 2000
}
}
ssl_ca = </etc/ssl/certs/ca.crt
ssl_cert = </etc/ssl/certs/imap.pem
ssl_key = </etc/ssl/private/imap.key
userdb {
driver = prefetch
}
userdb {
args = /usr/local/dovecot-2.1.13/etc/dovecot/dovecot-ldap.conf.ext
default_fields = home=/home/%u
driver = ldap
}
verbose_proctitle = yes
verbose_ssl = yes
protocol lmtp {
mail_plugins = " quota notify mail_log zlib acl quota sieve"
}
protocol lda {
mail_plugins = " quota notify mail_log zlib acl quota sieve"
}
protocol imap {
mail_plugins = " quota notify mail_log zlib acl imap_quota imap_zlib imap_acl antispam"
}
- --
Steffen Kaiser
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
iQEVAwUBUQEQdF3r2wJMiz2NAQL62AgAsXfP01TYvGjsu9Tcny8vCHMEOhBw0QVO
rvx7YDdYgyVLb/JwHQseq5XGPzRHh6PFn5HrrUFpnG87E52ZKTH1rkwYiuyM8fso
HAsUM0mlz9fGGPucMa9HoTbw5turbqbjVags8x6Om4W4sgp+RITd4UZq/Qcu/ShF
jfI5KDEK9bnPh9WwVKV6Yfd/1auZH+SCacb69Bb/cyVDiwbxOUTAEZikgWYgFOG2
/B1KzUPrjtumAS9myswIJxEG/4DmEt0In5fgQLM7cDdbGQl400JzR2rEa4bd3C1b
3DImA3J/YUfLpuqGS60rhx1rpSfad61Us2dh5kGgbswtbwKj2FtnTg==
=Jpqg
-----END PGP SIGNATURE-----
More information about the dovecot
mailing list