On 13-07-2022 13:39, Kees Bakker wrote:
On 13-07-2022 13:01, Kees Bakker wrote:
> Hi,
>
> [...]
> In other words, with 1.4.3.28 I don't get to see the message with first_time and
cur_time. I'm
> quite puzzled how that can happen. The code is like this (stripped a bit):
>
> if (!ts.ts_s_trimming) {
> 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)) {
> /* Is the first entry too old? */
> time_t first_time;
> ...
> 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;
> }
> }
> if (must_trim) {
> ...
> } else {
> slapi_log_err(SLAPI_LOG_PLUGIN, RETROCL_PLUGIN_NAME,
> "retrocl_housekeeping - changelog does not need to
be trimmed\n");
> }
> }
>
> Puzzled, because I don't understand why "cur_time - ts.ts_s_last_trim >=
(ts.ts_c_max_age)"
> is FALSE.
Unless, ...
cur_time is the relative time since start of the server (not sure if this is true,
but the code in eq_call_all_rel() seems to suggest it)
ts.ts_s_last_trim is 0 at startup
Shouldn't we compare "first_time" with the current (non-relative) time?
First an answer to Pierre's question
I had nsslapd-changelogmaxage set to 480d. (The reason for that is that I just want to
trim
the small subset.)
I changed maxage back to the default 2d. Now I see the this message, quickly after
restart.
Jul 13 14:33:13
iparep4.example.com ns-slapd[141407]: [13/Jul/2022:14:33:13.806790126
+0200] - DEBUG - DSRetroclPlugin - cltrim: ldrc=0, first_time=1615990532,
cur_time=12006600
I'm now convinced that the logic is (still) flawed. There is still a mix of UTC time
and relative time.
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 */
--
Kees