I have tried the patch with success. I can now set a retention of 100 years !
he is the trace for 38 years: fn-archnfs-dir: ua_prune.c:208-0 select now=1224854259 period=1198368000 sql=SELECT count(*) from Job WHERE JobTDate<26486259 AND ClientId=1 AND PurgedFiles=0 and now for 100 years, the difference is negative and test is correct: fn-archnfs-dir: ua_prune.c:208-0 select now=1224854392 period=3153600000 sql=SELECT count(*) from Job WHERE JobTDate<-1928745608 AND ClientId=1 AND PurgedFiles=0 thx for this very quick patch ! please, could you confirm that this patch will be integrated in the next stable release ? > Yes, this looks like an oversight on my part. The editing was done unsigned > and it should have used signed numbers. > > I've attached a patch to this email that should correct the problem. I > have compiled the patch, but have not explicitly tested it with a long > retention period, so feedback would be welcome. > > Dan: thanks for reporting this. > > Best regards, > > Kern > > On Thursday 23 October 2008 14:19:07 Dan Langille wrote: >> FYI >> >> Begin forwarded message: >> > From: LeJav <[EMAIL PROTECTED]> >> > Date: October 23, 2008 4:10:25 AM EDT >> > To: [EMAIL PROTECTED] >> > Subject: [Bacula-users] Unlimited Retention >> > >> > Hello, >> > >> > Here is my problem: I want to backup my system with normal strategy >> > (full every week, incremental, retention....), but I have also data >> > on >> > this server that I want to archive indefinitely (without retention). >> > To do that, i declared first retention period for this job as 100 >> > years. >> > But it did not work. >> > Investigating in source code, I found that: >> > >> > ua_prune.c >> > ... >> > period = client->FileRetention; >> > now = (utime_t)time(NULL); >> > >> > /* Select Jobs -- for counting */ >> > Mmsg(query, count_select_job, edit_uint64(now - period, ed1), >> > edit_int64(cr.ClientId, ed2)); >> > Dmsg3(050, "select now=%u period=%u sql=%s\n", (uint32_t)now, >> > (uint32_t)period, query.c_str()); >> > ... >> > >> > and : time() returns the time since the Epoch (00:00:00 UTC, January >> > 1, 1970), measured in seconds. >> > for instance, today, now = 1224742378 = 38.8 years >> > this means that if i set a retention > 39 years, now-period will be >> > negative, >> > and then a very very big number in unsigned int64, so jobs will be >> > always pruned >> > >> > for information, there is no such problem for volume retention: >> > next_vol.c : >> > ... >> > if ((mr->LastWritten + mr->VolRetention) < (utime_t)time(NULL) >> > ... >> > everything is utime_t = int64_t >> > so, there is here no problem >> > >> > >> > it would be nice to have for retention a keyword like "infinite". >> > >> > The solution I have found is to set AutoPrune = no for the client, >> > and to set >> > pruning for files, jobs and volumes for the jobs which need it. >> > >> > Any other suggestion ? >> > >> > Thx ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Bacula-users mailing list Bacula-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bacula-users