Skip to content

Issue 6265 - lmdb - missing entries in range searches #6266

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 25, 2024

Conversation

progier389
Copy link
Contributor

@progier389 progier389 commented Jul 16, 2024

Several issue seen after generating ldif with 2000 users and importing it in a replica:

  1. The entryid attribute in missing in the suffix entry.
  2. Access log shows that the internal search looking for "(parentid>=1)" is not returning all entries but one.
  3. When initializing a replica through a replication agreement some entries are missing (because of 2)
  4. Once 2. get fixed, the bulk import still fails because the default values for nsds5ReplicaFlowControlWindow and nsds5ReplicaFlowControlPause are not adapted to lmdb (supplier sent the entry faster than bdb and the target replica import them slower.

The fix is about

  1. Ensuring that the operational attribute are properly set when importing the suffix entry.
  2. Avoid using database bulk operation when computing range unless we are sure that bdb is used.
  3. Fixed by 2
  4. Change the default values for nsds5ReplicaFlowControlWindow and nsds5ReplicaFlowControlPause if agreement is on a lmdb backend.

Issue: #6265

Reviewed by: @vashirov, @droideck (Thanks!)

Copy link
Member

@vashirov vashirov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reviewed only the tests, just 2 minor comments.

@progier389
Copy link
Contributor Author

Fixed the two issues that @vashirov has found.

@progier389
Copy link
Contributor Author

Fixed @droideck review comments

Copy link
Member

@droideck droideck left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@progier389 progier389 merged commit f75b5e2 into 389ds:main Jul 25, 2024
195 checks passed
progier389 added a commit that referenced this pull request Jul 25, 2024
* Issue 6265 - lmdb - missing entries in range searches

Several issues seen after generating ldif with 2000 users and importing it in a replica:

1. The entryid attribute in missing in the suffix entry.
2. Access log shows that the internal search looking for "(parentid>=1)" is not returning all entries but one.
3. When initializing a replica through a replication agreement some entries are missing (because of 2)
4. Once 2. get fixed, the bulk import still fails because the default values for nsds5ReplicaFlowControlWindow and nsds5ReplicaFlowControlPause are not adapted to lmdb (supplier sent the entry faster than bdb and the target replica import them slower.

The fix is about:

1. Ensuring that the operational attribute are properly set when importing the suffix entry.
2. and 3. Avoid using database bulk operation when computing range unless we are sure that bdb is used. (rely instead on the  generic dblayer database iterator - dblayer_cursor_iterate.
4. Change the default values for nsds5ReplicaFlowControlWindow and nsds5ReplicaFlowControlPause if agreement is on a lmdb backend.

Issue: #6265

Reviewed by: @vashirov, @droideck (Thanks!)

(cherry picked from commit f75b5e2)
progier389 added a commit that referenced this pull request Jul 25, 2024
* Issue 6265 - lmdb - missing entries in range searches

Several issues seen after generating ldif with 2000 users and importing it in a replica:

1. The entryid attribute in missing in the suffix entry.
2. Access log shows that the internal search looking for "(parentid>=1)" is not returning all entries but one.
3. When initializing a replica through a replication agreement some entries are missing (because of 2)
4. Once 2. get fixed, the bulk import still fails because the default values for nsds5ReplicaFlowControlWindow and nsds5ReplicaFlowControlPause are not adapted to lmdb (supplier sent the entry faster than bdb and the target replica import them slower.

The fix is about:

1. Ensuring that the operational attribute are properly set when importing the suffix entry.
2. and 3. Avoid using database bulk operation when computing range unless we are sure that bdb is used. (rely instead on the  generic dblayer database iterator - dblayer_cursor_iterate.
4. Change the default values for nsds5ReplicaFlowControlWindow and nsds5ReplicaFlowControlPause if agreement is on a lmdb backend.

Issue: #6265

Reviewed by: @vashirov, @droideck (Thanks!)

(cherry picked from commit f75b5e2)
@progier389 progier389 deleted the i4506 branch May 20, 2025 13:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

with lmdb a range search may fail to return some entries leading to truncated bulk import
3 participants