El 10/10/16 a las 10:56, Ian Kent escribió:
> On Mon, 2016-10-10 at 10:42 +0200, Jakub Hrozek wrote:
>> On Mon, Oct 10, 2016 at 10:04:30AM +0200, Victor Tapia wrote:
>>> Hi list,
>>>
>>> I've faced a race condition when SSSD boots in a machine with a big
>>> clock drift. This is what I see:
>>>
>>> 1. SSSD starts before the network is up, queries the LDAP server without
>>> success and sets a retry timer (~60 secs)
>>> 2. NTP starts and corrects the clock, 1 hour back for example.
>>> 3. SSSD takes ~60 secs + the drift correction (1 hour) to retry the
>>> connection.
>>>
>>> In this particular scenario the credentials cache is disabled, so the
>>> wait time to login is noticeable. How feasible would it be to use a
>>> monotonic clock for this kind of timed events?
>>
>> I really have not tried this and I guess I don't know tevent internals
>> well enough if this works, but I wonder if just using:
>>     clock_getime()
> 
> With a CLOCK_MONOTONIC I presume?
> I think that's what has been suggested.
> 

I was thinking about using CLOCK_MONOTONIC_RAW:

CLOCK_MONOTONIC_RAW (since Linux 2.6.28; Linux-specific)
Similar to CLOCK_MONOTONIC, but provides access to a raw hardware-based
time that is not subject to NTP adjustments or the incremental
adjustments performed by adjtime(3).

>>     and constructing struct timeval
>> in place of:
>>     tevent_timeval_current_ofs()
>> could solve this particular issue.
>>
>> On the other hand, this is a pattern we use in SSSD all through the code
>> for timed events and we're just not well equipped to handle time drifts.
>> Did you investigate why doesn't sssd detect the networking change from
>> libnl messages or from resolv.conf being touched?

I didn't dig much into it yet (I just checked tevent to confirm it uses
gettimeofday()), so I'll take this as my next step.

Thanks,

Victor
_______________________________________________
sssd-devel mailing list -- sssd-devel@lists.fedorahosted.org
To unsubscribe send an email to sssd-devel-le...@lists.fedorahosted.org

Reply via email to