The backend lock serializes the write operations for one backend and so sets a limit to the overall modrate by the time this lock is hold for a single operation. Inside the backend lock there are tasks, which are independent of each other, eg update id2entry, update indexes, write changelog and ruv, .. We should investigate if it is possible to execute that in parallel, the import code could be a model, where several threads handle differnt tasks, communicating over a queue. If this can be done without too much overhead, the time the backend lock is held could be reduced.
Note that the import code already does something like this - it creates a thread for each attribute/index
achieve this with mdb? Could also achieve this with bdb using MVCC - but there is the entry/dn cache per transaction problem
achieve this with mdb?
Could also achieve this with bdb using MVCC - but there is the entry/dn cache per transaction problem
Metadata Update from @nhosoi: - Issue assigned to rmeggins - Issue set to the milestone: 1.4 backlog
Metadata Update from @firstyear: - Issue assigned to firstyear (was: rmeggins)
Not relevant in LMDB
Metadata Update from @mreynolds: - Custom field reviewstatus adjusted to None - Issue close_status updated to: wontfix - Issue status updated to: Closed (was: Open)
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/573
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.