Bug 2124660
| Summary: | Retro changelog trimming uses maxage incorrectly | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 9 | Reporter: | mreynolds |
| Component: | 389-ds-base | Assignee: | thierry bordaz <tbordaz> |
| Status: | CLOSED ERRATA | QA Contact: | LDAP QA Team <idm-ds-qe-bugs> |
| Severity: | high | Docs Contact: | |
| Priority: | high | ||
| Version: | 9.2 | CC: | bsmejkal, ccallaha, idm-ds-dev-bugs, pasik, pcech, tbordaz |
| Target Milestone: | rc | Keywords: | Triaged |
| Target Release: | 9.2 | Flags: | pm-rhel:
mirror+
|
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | sync-to-jira | ||
| Fixed In Version: | 389-ds-base-2.2.4-3.el9 | Doc Type: | If docs needed, set a value |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2023-05-09 07:41:32 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
Fix is pushed upstream => POST As per comment #c6 marking as VERIFIED. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (389-ds-base bug fix and enhancement update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2023:2274 |
Description The retro changelog trimming uses maxage incorrectly to decide if trimming is needed. Package Version and Platform: Platform: CentOS 8-Stream Package and version: 389-ds-base-1.4.3.28-6.module_el8.6+1102+fe5d910f.x86_64 The following code in retrocl_trim.c uses maxage incorrectly. int must_trim = 0; /* See if we need to trim */ /* Has enough time elapsed since our last check? */ if (cur_time - ts.ts_s_last_trim >= (ts.ts_c_max_age)) { <<<<<<==== wrong condition /* Is the first entry too old? */ time_t first_time; time_t now_maxage = slapi_current_utc_time(); /* real time for trimming candidates */ /* * good we could avoid going to the database to retrieve * this time information if we cached the last value we'd read. * But a client might have deleted it over protocol. */ first_time = retrocl_getchangetime(SLAPI_SEQ_FIRST, &ldrc); slapi_log_err(SLAPI_LOG_PLUGIN, RETROCL_PLUGIN_NAME, "cltrim: ldrc=%d, first_time=%ld, cur_time=%ld\n", ldrc, first_time, cur_time); if (LDAP_SUCCESS == ldrc && first_time > (time_t)0L && first_time + ts.ts_c_max_age < now_maxage) { must_trim = 1; } } See https://github.com/389ds/389-ds-base/issues/5368