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
attachment 0001-Ticket-505-use-lock-free-access-name2asi-and-oid2asi.patch
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.
git patch file (master -- additional patch) 0001-Ticket-505-use-lock-free-access-name2asi-and-oid2asi.2.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 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
389-ds-base is moving from Pagure to Github. This means that new issues and pull requests will be accepted only in 389-ds-base's github repository.
This issue has been cloned to Github and is available here: - https://github.com/389ds/389-ds-base/issues/505
If you want to receive further updates on the issue, please navigate to the github issue and click on subscribe button.
subscribe
Thank you for understanding. We apologize for all inconvenience.
Metadata Update from @spichugi: - Issue close_status updated to: wontfix (was: Fixed)
Log in to comment on this ticket.