Skip to content
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

Performance search rate: change entry cache monitor to recursive pthread mutex #4324

Closed
tbordaz opened this issue Sep 14, 2020 · 5 comments
Closed
Labels
In JIRA ticket is in JIRA performance Issue impacts performance priority_high need urgent fix / highly valuable / easy to fix
Milestone

Comments

@tbordaz
Copy link
Contributor

tbordaz commented Sep 14, 2020

Entry cache (entry and dn) are protected by a PRMonitor. Changing this Monitor into a recursive pthread mutex (cache aligned) increases throughput by 8%

@Firstyear
Copy link
Contributor

I think I've looked at this in the past, that PRLock and PRMonitor are both slower than pthread mutex and recursive pthread mutexs. So it's probably not the only place in the code base that this would create a benefit.

tbordaz added a commit to tbordaz/389-ds-base that referenced this issue Jan 26, 2021
…ecursive pthread mutex

Bug description:
	The entry cache is protected with recursive mutex. Currently it is
	implemented using PR_Monitor (NSPR). When the entry cache mutex
	becomes the bottleneck (for example base search searchrate on
	the same entry), using pthread recursive mutex gives 8% benefit.

Fix description:
	Changing the c_mutex from PR_Monitor to pthread recursive mutex

relates: 389ds#4324

Reviewed by: Mark Reynolds, Simon Pichugin

Platforms tested: F31
tbordaz added a commit that referenced this issue Jan 26, 2021
…ecursive pthread mutex (#4569)

Bug description:
	The entry cache is protected with recursive mutex. Currently it is
	implemented using PR_Monitor (NSPR). When the entry cache mutex
	becomes the bottleneck (for example base search searchrate on
	the same entry), using pthread recursive mutex gives 8% benefit.

Fix description:
	Changing the c_mutex from PR_Monitor to pthread recursive mutex

relates: #4324

Reviewed by: Mark Reynolds, Simon Pichugin

Platforms tested: F31
@tbordaz tbordaz added this to the 1.4.3 milestone Jan 26, 2021
@tbordaz tbordaz added the performance Issue impacts performance label Jan 26, 2021
tbordaz added a commit that referenced this issue Jan 26, 2021
…ecursive pthread mutex (#4569)

Bug description:
	The entry cache is protected with recursive mutex. Currently it is
	implemented using PR_Monitor (NSPR). When the entry cache mutex
	becomes the bottleneck (for example base search searchrate on
	the same entry), using pthread recursive mutex gives 8% benefit.

Fix description:
	Changing the c_mutex from PR_Monitor to pthread recursive mutex

relates: #4324

Reviewed by: Mark Reynolds, Simon Pichugin

Platforms tested: F31
tbordaz added a commit that referenced this issue Jan 26, 2021
…ecursive pthread mutex (#4569)

Bug description:
	The entry cache is protected with recursive mutex. Currently it is
	implemented using PR_Monitor (NSPR). When the entry cache mutex
	becomes the bottleneck (for example base search searchrate on
	the same entry), using pthread recursive mutex gives 8% benefit.

Fix description:
	Changing the c_mutex from PR_Monitor to pthread recursive mutex

relates: #4324

Reviewed by: Mark Reynolds, Simon Pichugin

Platforms tested: F31
@tbordaz
Copy link
Contributor Author

tbordaz commented Jan 26, 2021

fe0f615..abb9324 master
d641e85..14f67eb 389-ds-base-1.4.4
6c87556..fc16302 389-ds-base-1.4.3

@tbordaz tbordaz closed this as completed Jan 26, 2021
mreynolds389 added a commit to mreynolds389/389-ds-base that referenced this issue Feb 12, 2021
Bug Description:  When optimizing our mutexes we check for a system called
                  coherency_line_size that contains the size value, but if
                  the file did not exist the server would crash in PR_Read
                  (NULL pointer for fd).

Fix Description:  Check PR_Open() was successfully before calling PR_Read().

Relates: 389ds#4324

Reviewed by: tbordaz(Thanks!)
mreynolds389 added a commit that referenced this issue Feb 12, 2021
Bug Description:  When optimizing our mutexes we check for a system called
                  coherency_line_size that contains the size value, but if
                  the file did not exist the server would crash in PR_Read
                  (NULL pointer for fd).

Fix Description:  Check PR_Open() was successfully before calling PR_Read().

Relates: #4324

Reviewed by: tbordaz(Thanks!)
mreynolds389 added a commit that referenced this issue Feb 12, 2021
Bug Description:  When optimizing our mutexes we check for a system called
                  coherency_line_size that contains the size value, but if
                  the file did not exist the server would crash in PR_Read
                  (NULL pointer for fd).

Fix Description:  Check PR_Open() was successfully before calling PR_Read().

Relates: #4324

Reviewed by: tbordaz(Thanks!)
mreynolds389 added a commit that referenced this issue Feb 12, 2021
Bug Description:  When optimizing our mutexes we check for a system called
                  coherency_line_size that contains the size value, but if
                  the file did not exist the server would crash in PR_Read
                  (NULL pointer for fd).

Fix Description:  Check PR_Open() was successfully before calling PR_Read().

Relates: #4324

Reviewed by: tbordaz(Thanks!)
@mreynolds389
Copy link
Contributor

8d40f27..d4c2ab3 389-ds-base-1.4.4 -> 389-ds-base-1.4.4
7f20bcc..9a93ec7 389-ds-base-1.4.3 -> 389-ds-base-1.4.3

Fixes crash on aarch64

kimettog added a commit that referenced this issue Mar 17, 2021
* IDMDS-1068 Update failing ticket48234_test.py test

* IDMDS-1068 Update failing ticket48234_test.py test

* [INTEROP-4009] CodeReady Studio on OpenShift - Run locally

* [INTEROP-4009] CodeReady Studio on OpenShift - Run locally

* [IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* [IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* [IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* [IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* [IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* Issue 4654 Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* Issue 4654 - Updates to tickets/ticket48234_test.py

Bug Description:

Update to tickets/ticket48234_test.py which are currently failing and using
soon to be obsolete classes

Fix Description:

Updated tickets/ticket48234_test.py and ported to the suites directory
Updated to utilise the DSLDAPObject class methods

relates: <The Issue URL>

Author: Gilbert Kimetto

Reviewed by: ???
IDMDS-1068 Update failing ticket48234_test.py test

[INTEROP-4009] CodeReady Studio on OpenShift - Run locally

[INTEROP-4009] CodeReady Studio on OpenShift - Run locally

[IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

[IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* Issue 4609 - CVE - info disclosure when authenticating

Description:  If you bind as a user that does not exist.  Error 49 is returned
              instead of error 32.  As error 32 discloses that the entry does
              not exist.  When you bind as an entry that does not have userpassword
              set then error 48 (inappropriate auth) is returned, but this
              discloses that the entry does indeed exist.  Instead we should
              always return error 49, even if the password is not set in the
              entry.  This way we do not disclose to an attacker if the Bind
              DN exists or not.

Relates: #4609

Reviewed by: tbordaz(Thanks!)

* issue 4612 - Fix pytest fourwaymmr_test for non root user (#4613)

* Issue 4591 - RFE - improve openldap_to_ds help and features (#4607)

Bug Description: Improve the --help page, and finish wiring in some
features.

Fix Description: Wire in exclusion of attributes/schema for migration.

fixes: #4591

Author: William Brown <william@blackhats.net.au>

Review by: @mreynolds389, @droideck

* Issue 4577 - Add GitHub actions

Description:

* Enable IPv6 support for docker daemon
* Set server.example.com as FQDN for container

Relates: #4577

Reviewed by: @droideck (Thanks!)

* Issue 4149 - UI - port TreeView and opther components to PF4

Description:  This ports all th TreeViews to PF4, and also does some proof
              of concept changes for PF3 to PF4 migration.  There is much
              more needed, but this does not break anything

relates: #4149

Reviewed by: spichugi(Thanks!)

* Update dscontainer (#4564)

Issue 4564 - RFE - Add suffix to dscontainer rc file

Bug Description: The suffix was not added before, adding a hurdle to
automatic admin of the container instance

Fix Description: If the suffix is set, add it to the created rc file. 

fixes: #4564

Author: @Jackbennett

Review by: @Firstyear

* Issue 4469 - Backend redesign phase 3a - bdb dependency removal from back-ldbm

A massive change (https://directory.fedoraproject.org/docs/389ds/design/backend-redesign-phase3.html) that implements and use the dbimpl API in the backend.

* Issue 4593 - RFE - Print help when nsSSLPersonalitySSL is not found (#4614)

Description: RHDS instance will fail to start if the TLS server
certificate nickname doesn't match the value of the configuration
parameter "nsSSLPersonalitySSL".

The mismatch typically happens when customers copy the NSS DB from
a previous instance or export the certificate's data but forget to set
the "nsSSLPersonalitySSL" value accordingly.

Log an additional message which should help a user to set up
nsSSLPersonalitySSL correctly.

Fixes: #4593

Reviewed by: @Firstyear (Thanks!)

* Issue 4324 - Some architectures the cache line size file does not exist

Bug Description:  When optimizing our mutexes we check for a system called
                  coherency_line_size that contains the size value, but if
                  the file did not exist the server would crash in PR_Read
                  (NULL pointer for fd).

Fix Description:  Check PR_Open() was successfully before calling PR_Read().

Relates: #4324

Reviewed by: tbordaz(Thanks!)

* Issue 4469 - Backend redesing phase 3a - implement dbimpl API and use it in back-ldbm (#4618)

see design document https://directory.fedoraproject.org/docs/389ds/design/backend-redesign-phase3.html

* Issue 4615 - log message when psearch first exceeds max threads per conn

Desciption:  When a connection hits max threads per conn for the first time
             log a message in the error.  This will help customers diagnosis
             misbehaving clients.

Fixes: #4615

Reviewed by: progier389(Thanks!)

* Issue 4619 - remove pytest requirement from lib389

Description:  Remove the requirement for pytest from lib389, it causes
              unneeded package requirements on Fedora/RHEL.

Fixes: #4619

Reviewed by: mreynolds(one line commit rule)

* Bump version to 2.0.3

* Issue 4513 - CI - make acl ip address tests more robust

Description:  The tests aumme the system is using IPv6 loopback address, but it
              should still check for IPv4 loopback.

Relates: #4513

Reviewed by: ?

* Issue 2820 - Fix CI test suite issues

Description:
tickets/ticket48961_test.py was failing in CI nightly runs.
Fixed the failure by changing the code to use DSLdapObject
and moved the code into the config test suite.

Relates: #2820

Reviewed by: droideck (Thanks!)

* Issue 4169 - UI - port charts to PF4

Description:  Ported the charts under the monitor tab to use PF4 sparkline charts
              and provide realtime stats on the the caches.

Relates: #4169

Reviewed by: spichugi(Thanks!)

* Issue 4595 - Paged search lookthroughlimit bug (#4602)

Bug Description: During a paged search with lookthroughlimit enabled,
lookthroughcount is used to keep track of how many entries are
examined. A paged search reads ahead one entry to catch the end of the
search so it doesn't show the prompt when there are no more entries.
lookthroughcount doesn't take read ahead into account when tracking
how many entries have been examined.

Fix Description: Keep lookthroughcount in sync with read ahead by
by decrementing it during read ahead roll back.

Fixes: #4595

Relates: #4513

Reviewed by: droideck, mreynolds389, Firstyear, progier389 (Many thanks)

* Issue 4169 - UI - Migrate Accordians to PF4 ExpandableSection

Description:  Replace all the CustomCollapse components with PF4
              ExpandableSection component.

relates: #4169

Reviewed by: spichugi(Thanks!)

[IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* Issue 4169 - UI - Migrate alerts to PF4

Description:  Migrate the toast notifications to PF4 Alerts.

              Also fixed a refresh problem on the Tuning page.

relates: #4169

Reviewed by: spichugi(Thanks!)

* Issue 4649 - crash in sync_repl when a MODRDN create a cenotaph (#4652)

Bug description:
	When an operation is flagged OP_FLAG_NOOP, it skips BETXN plugins but calls POST plugins.
	For sync_repl, betxn (sync_update_persist_betxn_pre_op) creates an operation extension to be
	consumed by the post (sync_update_persist_op). In case of OP_FLAG_NOOP, there is no
	operation extension.

Fix description:
	Test that the operation is OP_FLAG_NOOP if the operation extension is missing

relates: #4649

Reviewed by: William Brown (thanks)

Platforms tested: F31

* Issue 4644 - Large updates can reset the CLcache to the beginning of the changelog (#4647)

Bug description:
	The replication agreements are using bulk load to load updates.
	For bulk load it uses a cursor with DB_MULTIPLE_KEY and DB_NEXT.
	Before using the cursor, it must be initialized with DB_SET.

	If during the cursor/DB_SET the CSN refers to an update that is larger than
	the size of the provided buffer, then the cursor remains not initialized and
	c_get returns DB_BUFFER_SMALL.

	The consequence is that the next c_get(DB_MULTIPLE_KEY and DB_NEXT) will return the
	first record in the changelog DB. This break CLcache.

Fix description:
	The fix is to harden cursor initialization so that if DB_SET fails
	because of DB_BUFFER_SMALL. It reallocates buf_data and retries a DB_SET.
	If DB_SET can not be initialized it logs a warning.

	The patch also changes the behaviour of the fix #4492.
	#4492 detected a massive (1day) jump prior the starting csn and ended the
	replication session. If the jump was systematic, for example
	if the CLcache got broken because of a too large updates, then
	replication was systematically stopped.
	This patch suppress the systematically stop, letting RA doing a big jump.
	From #4492 only remains the warning.

relates: #4644

Reviewed by: Pierre Rogier (Thanks !!!!)

Platforms tested: F31

* Issue 4646 - CLI/UI - revise DNA plugin management

Bug Description:

There was a false assumption that you have to create the shared DNA
server configuration entry, but in fact the server creates and manages
this entry.  The only thing you should edit in this entry are the
remote Bind Method and Connection Protocol.

Fix Description:

Remove the options to create the shared config entry, and edit the
core/reserved attributes.

Also fixed some issues where we were not showing CLI plugin output in
proper JSON.  This required some changes to the UI as well.

Relates: #4646

Reviewed by: spichugi(Thanks!)

[IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

[IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* Issue 4643 - Add a tool that generates Rust dependencies for a specfile (#4645)

Description: The Fedora builds of 389-DS uses the vendored crates
to build the official packages for Rawhide. Vendoring and bundling
dependencies is in violation of Fedora policies. As an upstream project
we are free to ship vendored code. But as a downstream Fedora project
we must not use the vendored code.

Add a tool that will help to generate 'Provides: bundled(crate(foo)) = version'
for Cargo.lock file content.
Replace License field which should contain all of the package licenses
we bundle in the specfile.

Fixes: #4643

Reviewed by: @Firstyear, @decathorpe, @mreynolds389 (Thanks!)

* issue 4552 - Backup Redesign phase 3b - use dbimpl in replicatin plugin (#4622)

* issue 4552 - Backup Redesign phase 3b - use dbimpl in replicatin plugin

Merge of a fix in cl5_clcache.c (changelog cache restarts from begining if large update)
Rebase with master

* Issue 4469 - Backend redesing phase 3a - implement dbimpl API and use it in back-ldbm - fix test_maxbersize_repl pytest failure

* issue 4552 - Backup Redesign phase 3b - use dbimpl in replicatin plugin - fix indent issue

* issue 4552 - Backup Redesign phase 3b - use dbimpl in replicatin plugin - fix merge issue

manual Merge of fix about changelog cache iteration restarting from beginning in case of large update + automatic rebase to master

* Issue 4552 - Backend redesign phase 3b - fix indent issue + random crash and memory leak in tombstone handling

* Merge pull request #4664 from mreynolds389/issue4663

Issue 4663 - CLI - unable to add objectclass/attribute without x-origin

Issue 4654 Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* Issue 4654 Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* Issue 4654 - Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

Bug Description:

- Update ticket48234_test.py to verify tests on RHEL 7/8 and Fedora
- Update deprecated "*_s" methods to leverage the DSLDAPObject class
- Move test from the current location in ../tickets to appropriate ../suites/aci/* directory

Fix Description:
- Issue 4654 Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

relates:

Author: Gilbert Kimetto

Reviewed by: ???

Co-authored-by: Mark Reynolds <mreynolds@redhat.com>
Co-authored-by: progier389 <progier@redhat.com>
Co-authored-by: Firstyear <william@blackhats.net.au>
Co-authored-by: Viktor Ashirov <vashirov@redhat.com>
Co-authored-by: Jack <me@jackben.net>
Co-authored-by: Simon Pichugin <spichugi@redhat.com>
Co-authored-by: Barbora Simonova <bsmejkal@redhat.com>
Co-authored-by: James Chapman <jachapma@redhat.com>
Co-authored-by: tbordaz <tbordaz@redhat.com>
kimettog added a commit that referenced this issue Apr 1, 2021
…#4710)

* IDMDS-1068 Update failing ticket48234_test.py test

* IDMDS-1068 Update failing ticket48234_test.py test

* [INTEROP-4009] CodeReady Studio on OpenShift - Run locally

* [INTEROP-4009] CodeReady Studio on OpenShift - Run locally

* [IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* [IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* [IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* [IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* [IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* Issue 4654 Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* Issue 4654 - Updates to tickets/ticket48234_test.py

Bug Description:

Update to tickets/ticket48234_test.py which are currently failing and using
soon to be obsolete classes

Fix Description:

Updated tickets/ticket48234_test.py and ported to the suites directory
Updated to utilise the DSLDAPObject class methods

relates: <The Issue URL>

Author: Gilbert Kimetto

Reviewed by: ???
IDMDS-1068 Update failing ticket48234_test.py test

[INTEROP-4009] CodeReady Studio on OpenShift - Run locally

[INTEROP-4009] CodeReady Studio on OpenShift - Run locally

[IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

[IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* Issue 4609 - CVE - info disclosure when authenticating

Description:  If you bind as a user that does not exist.  Error 49 is returned
              instead of error 32.  As error 32 discloses that the entry does
              not exist.  When you bind as an entry that does not have userpassword
              set then error 48 (inappropriate auth) is returned, but this
              discloses that the entry does indeed exist.  Instead we should
              always return error 49, even if the password is not set in the
              entry.  This way we do not disclose to an attacker if the Bind
              DN exists or not.

Relates: #4609

Reviewed by: tbordaz(Thanks!)

* issue 4612 - Fix pytest fourwaymmr_test for non root user (#4613)

* Issue 4591 - RFE - improve openldap_to_ds help and features (#4607)

Bug Description: Improve the --help page, and finish wiring in some
features.

Fix Description: Wire in exclusion of attributes/schema for migration.

fixes: #4591

Author: William Brown <william@blackhats.net.au>

Review by: @mreynolds389, @droideck

* Issue 4577 - Add GitHub actions

Description:

* Enable IPv6 support for docker daemon
* Set server.example.com as FQDN for container

Relates: #4577

Reviewed by: @droideck (Thanks!)

* Issue 4149 - UI - port TreeView and opther components to PF4

Description:  This ports all th TreeViews to PF4, and also does some proof
              of concept changes for PF3 to PF4 migration.  There is much
              more needed, but this does not break anything

relates: #4149

Reviewed by: spichugi(Thanks!)

* Update dscontainer (#4564)

Issue 4564 - RFE - Add suffix to dscontainer rc file

Bug Description: The suffix was not added before, adding a hurdle to
automatic admin of the container instance

Fix Description: If the suffix is set, add it to the created rc file. 

fixes: #4564

Author: @Jackbennett

Review by: @Firstyear

* Issue 4469 - Backend redesign phase 3a - bdb dependency removal from back-ldbm

A massive change (https://directory.fedoraproject.org/docs/389ds/design/backend-redesign-phase3.html) that implements and use the dbimpl API in the backend.

* Issue 4593 - RFE - Print help when nsSSLPersonalitySSL is not found (#4614)

Description: RHDS instance will fail to start if the TLS server
certificate nickname doesn't match the value of the configuration
parameter "nsSSLPersonalitySSL".

The mismatch typically happens when customers copy the NSS DB from
a previous instance or export the certificate's data but forget to set
the "nsSSLPersonalitySSL" value accordingly.

Log an additional message which should help a user to set up
nsSSLPersonalitySSL correctly.

Fixes: #4593

Reviewed by: @Firstyear (Thanks!)

* Issue 4324 - Some architectures the cache line size file does not exist

Bug Description:  When optimizing our mutexes we check for a system called
                  coherency_line_size that contains the size value, but if
                  the file did not exist the server would crash in PR_Read
                  (NULL pointer for fd).

Fix Description:  Check PR_Open() was successfully before calling PR_Read().

Relates: #4324

Reviewed by: tbordaz(Thanks!)

* Issue 4469 - Backend redesing phase 3a - implement dbimpl API and use it in back-ldbm (#4618)

see design document https://directory.fedoraproject.org/docs/389ds/design/backend-redesign-phase3.html

* Issue 4615 - log message when psearch first exceeds max threads per conn

Desciption:  When a connection hits max threads per conn for the first time
             log a message in the error.  This will help customers diagnosis
             misbehaving clients.

Fixes: #4615

Reviewed by: progier389(Thanks!)

* Issue 4619 - remove pytest requirement from lib389

Description:  Remove the requirement for pytest from lib389, it causes
              unneeded package requirements on Fedora/RHEL.

Fixes: #4619

Reviewed by: mreynolds(one line commit rule)

* Bump version to 2.0.3

* Issue 4513 - CI - make acl ip address tests more robust

Description:  The tests aumme the system is using IPv6 loopback address, but it
              should still check for IPv4 loopback.

Relates: #4513

Reviewed by: ?

* Issue 2820 - Fix CI test suite issues

Description:
tickets/ticket48961_test.py was failing in CI nightly runs.
Fixed the failure by changing the code to use DSLdapObject
and moved the code into the config test suite.

Relates: #2820

Reviewed by: droideck (Thanks!)

* Issue 4169 - UI - port charts to PF4

Description:  Ported the charts under the monitor tab to use PF4 sparkline charts
              and provide realtime stats on the the caches.

Relates: #4169

Reviewed by: spichugi(Thanks!)

* Issue 4595 - Paged search lookthroughlimit bug (#4602)

Bug Description: During a paged search with lookthroughlimit enabled,
lookthroughcount is used to keep track of how many entries are
examined. A paged search reads ahead one entry to catch the end of the
search so it doesn't show the prompt when there are no more entries.
lookthroughcount doesn't take read ahead into account when tracking
how many entries have been examined.

Fix Description: Keep lookthroughcount in sync with read ahead by
by decrementing it during read ahead roll back.

Fixes: #4595

Relates: #4513

Reviewed by: droideck, mreynolds389, Firstyear, progier389 (Many thanks)

* Issue 4169 - UI - Migrate Accordians to PF4 ExpandableSection

Description:  Replace all the CustomCollapse components with PF4
              ExpandableSection component.

relates: #4169

Reviewed by: spichugi(Thanks!)

[IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* Issue 4169 - UI - Migrate alerts to PF4

Description:  Migrate the toast notifications to PF4 Alerts.

              Also fixed a refresh problem on the Tuning page.

relates: #4169

Reviewed by: spichugi(Thanks!)

* Issue 4649 - crash in sync_repl when a MODRDN create a cenotaph (#4652)

Bug description:
	When an operation is flagged OP_FLAG_NOOP, it skips BETXN plugins but calls POST plugins.
	For sync_repl, betxn (sync_update_persist_betxn_pre_op) creates an operation extension to be
	consumed by the post (sync_update_persist_op). In case of OP_FLAG_NOOP, there is no
	operation extension.

Fix description:
	Test that the operation is OP_FLAG_NOOP if the operation extension is missing

relates: #4649

Reviewed by: William Brown (thanks)

Platforms tested: F31

* Issue 4644 - Large updates can reset the CLcache to the beginning of the changelog (#4647)

Bug description:
	The replication agreements are using bulk load to load updates.
	For bulk load it uses a cursor with DB_MULTIPLE_KEY and DB_NEXT.
	Before using the cursor, it must be initialized with DB_SET.

	If during the cursor/DB_SET the CSN refers to an update that is larger than
	the size of the provided buffer, then the cursor remains not initialized and
	c_get returns DB_BUFFER_SMALL.

	The consequence is that the next c_get(DB_MULTIPLE_KEY and DB_NEXT) will return the
	first record in the changelog DB. This break CLcache.

Fix description:
	The fix is to harden cursor initialization so that if DB_SET fails
	because of DB_BUFFER_SMALL. It reallocates buf_data and retries a DB_SET.
	If DB_SET can not be initialized it logs a warning.

	The patch also changes the behaviour of the fix #4492.
	#4492 detected a massive (1day) jump prior the starting csn and ended the
	replication session. If the jump was systematic, for example
	if the CLcache got broken because of a too large updates, then
	replication was systematically stopped.
	This patch suppress the systematically stop, letting RA doing a big jump.
	From #4492 only remains the warning.

relates: #4644

Reviewed by: Pierre Rogier (Thanks !!!!)

Platforms tested: F31

* Issue 4646 - CLI/UI - revise DNA plugin management

Bug Description:

There was a false assumption that you have to create the shared DNA
server configuration entry, but in fact the server creates and manages
this entry.  The only thing you should edit in this entry are the
remote Bind Method and Connection Protocol.

Fix Description:

Remove the options to create the shared config entry, and edit the
core/reserved attributes.

Also fixed some issues where we were not showing CLI plugin output in
proper JSON.  This required some changes to the UI as well.

Relates: #4646

Reviewed by: spichugi(Thanks!)

[IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

[IDMDS-1068] Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* Issue 4643 - Add a tool that generates Rust dependencies for a specfile (#4645)

Description: The Fedora builds of 389-DS uses the vendored crates
to build the official packages for Rawhide. Vendoring and bundling
dependencies is in violation of Fedora policies. As an upstream project
we are free to ship vendored code. But as a downstream Fedora project
we must not use the vendored code.

Add a tool that will help to generate 'Provides: bundled(crate(foo)) = version'
for Cargo.lock file content.
Replace License field which should contain all of the package licenses
we bundle in the specfile.

Fixes: #4643

Reviewed by: @Firstyear, @decathorpe, @mreynolds389 (Thanks!)

* issue 4552 - Backup Redesign phase 3b - use dbimpl in replicatin plugin (#4622)

* issue 4552 - Backup Redesign phase 3b - use dbimpl in replicatin plugin

Merge of a fix in cl5_clcache.c (changelog cache restarts from begining if large update)
Rebase with master

* Issue 4469 - Backend redesing phase 3a - implement dbimpl API and use it in back-ldbm - fix test_maxbersize_repl pytest failure

* issue 4552 - Backup Redesign phase 3b - use dbimpl in replicatin plugin - fix indent issue

* issue 4552 - Backup Redesign phase 3b - use dbimpl in replicatin plugin - fix merge issue

manual Merge of fix about changelog cache iteration restarting from beginning in case of large update + automatic rebase to master

* Issue 4552 - Backend redesign phase 3b - fix indent issue + random crash and memory leak in tombstone handling

* Merge pull request #4664 from mreynolds389/issue4663

Issue 4663 - CLI - unable to add objectclass/attribute without x-origin

Issue 4654 Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* Issue 4654 Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

* Issue 4654 - Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

Bug Description:

- Update ticket48234_test.py to verify tests on RHEL 7/8 and Fedora
- Update deprecated "*_s" methods to leverage the DSLDAPObject class
- Move test from the current location in ../tickets to appropriate ../suites/aci/* directory

Fix Description:
- Issue 4654 Update ticket48234_test.py and move to suites/acl/aci_excl_filter_test.py

relates:

Author: Gilbert Kimetto

Reviewed by: ???

* Test new password policy attribute "pwdReset by DM user

    Description: Verify that the DM user is not permitted to
    change the password policy attribute "pwdReset.

    Reviewed by: ?

Co-authored-by: Mark Reynolds <mreynolds@redhat.com>
Co-authored-by: progier389 <progier@redhat.com>
Co-authored-by: Firstyear <william@blackhats.net.au>
Co-authored-by: Viktor Ashirov <vashirov@redhat.com>
Co-authored-by: Jack <me@jackben.net>
Co-authored-by: Simon Pichugin <spichugi@redhat.com>
Co-authored-by: Barbora Simonova <bsmejkal@redhat.com>
Co-authored-by: James Chapman <jachapma@redhat.com>
Co-authored-by: tbordaz <tbordaz@redhat.com>
@tbordaz tbordaz added In JIRA ticket is in JIRA priority_high need urgent fix / highly valuable / easy to fix labels May 10, 2021
droideck added a commit that referenced this issue Sep 30, 2022
Bug description:
	The entry cache is protected with recursive mutex. Currently it is
	implemented using pthread recursive mutex. Very rarely, we may
	encounter 'Retry count error' (we weren't able to reproduce it reliably).

Fix description:
	As per investigation and team discussions, we decided to go with the 'revert' option,
	as it reliably helped the user who had the issue on their environment.

	Changing the c_mutex from pthread recursive mutex back to PR_Monitor.

Related: #4324

Reviewed by: @progier389 (Thanks!)
droideck added a commit that referenced this issue Sep 30, 2022
Bug description:
	The entry cache is protected with recursive mutex. Currently it is
	implemented using pthread recursive mutex. Very rarely, we may
	encounter 'Retry count error' (we weren't able to reproduce it reliably).

Fix description:
	As per investigation and team discussions, we decided to go with the 'revert' option,
	as it reliably helped the user who had the issue on their environment.

	Changing the c_mutex from pthread recursive mutex back to PR_Monitor.

Related: #4324

Reviewed by: @progier389 (Thanks!)
droideck added a commit that referenced this issue Sep 30, 2022
Bug description:
	The entry cache is protected with recursive mutex. Currently it is
	implemented using pthread recursive mutex. Very rarely, we may
	encounter 'Retry count error' (we weren't able to reproduce it reliably).

Fix description:
	As per investigation and team discussions, we decided to go with the 'revert' option,
	as it reliably helped the user who had the issue on their environment.

	Changing the c_mutex from pthread recursive mutex back to PR_Monitor.

Related: #4324

Reviewed by: @progier389 (Thanks!)
droideck added a commit that referenced this issue Sep 30, 2022
Bug description:
	The entry cache is protected with recursive mutex. Currently it is
	implemented using pthread recursive mutex. Very rarely, we may
	encounter 'Retry count error' (we weren't able to reproduce it reliably).

Fix description:
	As per investigation and team discussions, we decided to go with the 'revert' option,
	as it reliably helped the user who had the issue on their environment.

	Changing the c_mutex from pthread recursive mutex back to PR_Monitor.

Related: #4324

Reviewed by: @progier389 (Thanks!)
droideck added a commit that referenced this issue Sep 30, 2022
Bug description:
	The entry cache is protected with recursive mutex. Currently it is
	implemented using pthread recursive mutex. Very rarely, we may
	encounter 'Retry count error' (we weren't able to reproduce it reliably).

Fix description:
	As per investigation and team discussions, we decided to go with the 'revert' option,
	as it reliably helped the user who had the issue on their environment.

	Changing the c_mutex from pthread recursive mutex back to PR_Monitor.

Related: #4324

Reviewed by: @progier389 (Thanks!)
droideck added a commit that referenced this issue Sep 30, 2022
Bug description:
	The entry cache is protected with recursive mutex. Currently it is
	implemented using pthread recursive mutex. Very rarely, we may
	encounter 'Retry count error' (we weren't able to reproduce it reliably).

Fix description:
	As per investigation and team discussions, we decided to go with the 'revert' option,
	as it reliably helped the user who had the issue on their environment.

	Changing the c_mutex from pthread recursive mutex back to PR_Monitor.

Related: #4324

Reviewed by: @progier389 (Thanks!)
@droideck
Copy link
Member

de65f12..6d55379 389-ds-base-1.4.3 -> 389-ds-base-1.4.3
d4c4ff1..8564399 389-ds-base-1.4.4 -> 389-ds-base-1.4.4
9a47b3d..7ba233b 389-ds-base-2.0 -> 389-ds-base-2.0
e28c36c..6c95604 389-ds-base-2.1 -> 389-ds-base-2.1
3043f85..21314ec 389-ds-base-2.2 -> 389-ds-base-2.2

droideck added a commit that referenced this issue Oct 3, 2022
Description:
    Revert Issue 4600 - performance modify rate: reduce lock contention
    on the object extension factory (#4601), as it's another part of
    issue 4324 revert that was not cherry-picked correctly.

Related: #4324

Reviewed by: @progier389 @mreynolds389 (Thanks!)
droideck added a commit that referenced this issue Oct 3, 2022
Description:
    Revert Issue 4600 - performance modify rate: reduce lock contention
    on the object extension factory (#4601), as it's another part of
    issue 4324 revert that was not cherry-picked correctly.

Related: #4324

Reviewed by: @progier389 @mreynolds389 (Thanks!)
droideck added a commit that referenced this issue Oct 3, 2022
Description:
    Revert Issue 4600 - performance modify rate: reduce lock contention
    on the object extension factory (#4601), as it's another part of
    issue 4324 revert that was not cherry-picked correctly.

Related: #4324

Reviewed by: @progier389 @mreynolds389 (Thanks!)
@droideck
Copy link
Member

droideck commented Oct 3, 2022

Additional cherry-pick for 2.0, 2.1, 2.2:
#5471
00f5cd2..6117660 389-ds-base-2.1 -> 389-ds-base-2.1
3cc5e38..ac5ee32 389-ds-base-2.2 -> 389-ds-base-2.2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
In JIRA ticket is in JIRA performance Issue impacts performance priority_high need urgent fix / highly valuable / easy to fix
Projects
None yet
Development

No branches or pull requests

4 participants