[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [Libevent-users] libevent timer triggering early



On Mon, May 12, 2014 at 3:39 AM, Elanchezhiyan Elango
<elanelango@xxxxxxxxx> wrote:
> I have an application that uses libevent timers to trigger periodic database
> operations.
>
> Following is the general overview of how the timer is used.
> 1. A timer is set to trigger at a specific time.
> 2. The process continues to run other operations.
> 3. The timer triggers at the right time, does DB operations, sets the timer
> to triggered after a specific number of seconds (within the next 5 minutes).
> 4. The process continues to run other operations.
> 5. The timer triggers but earlier than the number of seconds set in step 3.
>
> The first few timer triggers look correct. After that initially the timer
> seems to trigger only a few seconds earlier than the number of seconds set
> in step 3. But it keeps getting worse. It looks like the magnitude of error
> in how early the timer is triggered depends on the length of DB operations
> done inside the timer's event handler function. Eventually the timer
> triggers at unpredictable times and it's a mess because the DB operations
> happen at weird times.
>
> Any idea why this might be happening?

Maybe the time cache is interfering with the timer?  This shouldn't
happen for most asynchronous programming problems, but if the DB
operation is taking multiple seconds, you could run into trouble here.

To diagnose the problem (and possibly to solve it), try constructing
your event base with the EVENT_BASE_NO_CACHE_TIME option

best wishes,
-- 
Nick
***********************************************************************
To unsubscribe, send an e-mail to majordomo@xxxxxxxxxxxxx with
unsubscribe libevent-users    in the body.