In cases where we must allow dynamic schema updates, we need to reduce the contention for these tables - investigate the use of lock-free hash/tree/other data structure - or perhaps use hazard pointers/reference counting to store old versions of these tables - dynamic updates would update a "new" copy of the table, and only replace tables referenced by other threads when the ref count drops to 0
git merge perf02
ldap/servers/slapd/attr.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ldap/servers/slapd/attrlist.c | 17 +++++++++++++++++
ldap/servers/slapd/attrsyntax.c | 12 ++++++++++++
ldap/servers/slapd/back-ldbm/id2entry.c | 6 ++++--
ldap/servers/slapd/back-ldbm/import-threads.c | 12 ++++++------
ldap/servers/slapd/back-ldbm/ldbm_entryrdn.c | 8 +++++++-
ldap/servers/slapd/back-ldbm/ldif2ldbm.c | 12 ++++++------
ldap/servers/slapd/back-ldbm/proto-back-ldbm.h | 2 +-
ldap/servers/slapd/entry.c | 32 +++++++++++++++++++++-----------
ldap/servers/slapd/plugin_syntax.c | 36 +++++++++++++++++++++++++++++++++++-
ldap/servers/slapd/proto-slap.h | 2 ++
ldap/servers/slapd/slapi-plugin.h | 4 ++--
ldap/servers/slapd/slapi-private.h | 2 ++
13 files changed, 172 insertions(+), 30 deletions(-)
$ git push origin master
Enter passphrase for key '/home/lkrispen/.ssh/id_rsa_fedora':
Counting objects: 37, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (19/19), 3.76 KiB, done.
Total 19 (delta 17), reused 0 (delta 0)
8ff26ec..9c36be0 master -> master
Unfortunately, it looks we have to reopen this bug.
With this patch, the ordinary ldapsearch (without return attribute list) returns some operational attributes which should not be.
creatorsName: cn=directory manager
modifiersName: cn=directory manager
This symptom breaks some ACL test cases.
This is an effect of the lazy attribute type initialization, which should only be done if the syntax is needed. I did miss the case where in vattr.c the flags are copied and a check for OP_ATTR is done.
I will investigate if this should be fixed for thios additional case, or if the lazy init should be removed.
git patch file (master -- additional patch)
Bug description: commit 9c36be0
introduced "lazy attribute type initialization". When searching,
operational attributes in the returned entry had no chance to
get initialized with the syntax, where the fact that the attribute
is operational is set. Due to the missing info, the operational
attributes are unconditionally returned to the client.
Fix description: This patch adds the attribute type initialization
to slapi_vattr_list_attrs, which is called from the sending search
Reviewed by Rich and Ludwig (Thank you!!)
Pushed to master: commit 435972e
Metadata Update from @nhosoi:
- Issue assigned to lkrispen
- Issue set to the milestone: 1.3.1
to comment on this ticket.