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

Re: [Libevent-users] libevent timer triggering early



Hi Nick,

Thanks for the suggestion. The code I am looking at is using obsoleted libevent functions. It's using event_init() instead of event_base_new(). Is there some way to set the NO_CACHE_TIME option with the obsoleted functions?

Thanks,
Elan.


On Mon, May 12, 2014 at 8:19 AM, Nick Mathewson <nickm@xxxxxxxxxxxxx> wrote:
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.