]> git.sur5r.net Git - openldap/commit
This patch fixes some subtle interactions between SLAPI and syncrepl. Due to
authorLuke Howard <lukeh@openldap.org>
Wed, 25 Aug 2004 11:52:55 +0000 (11:52 +0000)
committerLuke Howard <lukeh@openldap.org>
Wed, 25 Aug 2004 11:52:55 +0000 (11:52 +0000)
commitea6f5bad6548ecc0775574b36e906518a7aa8bc9
tree91b5140ace9cc7aa7cdae8944963919dc47a8db0
parent2aacf1d353976cc5b3fd478115a591667c90d25c
This patch fixes some subtle interactions between SLAPI and syncrepl. Due to
SLAPI always assigning connection and operation IDs of zero for internal
operations, such operations would cause a stale contextCSN to be returned from
slap_get_commit_csn(). As a result, SLAPI internal updates would be invisible
to replicas until an external update was made. Also, SLAPI internal operations
never called slap_graduate_commit_csn() which leaked pending CSNs.

Also included in this patch is a general cleanup of some of the SLAPI code.

Note that we need to use a separate mutex on conn_nextid to avoid a deadlock
where a post-operation plugin tries to acquire connections_mutex, having locked
the per-connection mutex, while the listener thread tries to acquire the
per-connection mutex (having locked connections_mutex). connection.c needs to
be fixed to acquire mutexes in the same order.
servers/slapd/connection.c
servers/slapd/proto-slap.h
servers/slapd/slapi/slapi_ops.c