#505 use lock-free access name2asi and oid2asi tables
Closed: Fixed None Opened 7 years ago by rmeggins.

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
Updating 8ff26ec..9c36be0
Fast-forward
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)
To ssh://git.fedorahosted.org/git/389/ds.git
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
createTimestamp: 20130114223225Z
modifyTimestamp: 20130114223225Z
parentid: 1
entryid: 10

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.

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
result code.

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

3 years ago

Login to comment on this ticket.

Metadata