On Fri, Apr 02, 2004 at 09:10:18PM -0500, Jerry D. Hedden wrote:
> I have determined that there is a definite bug in the Event module. 
> I have a fairly involved newsgroup reading application that I
> recently converted to using the Event module.  One of the timers is
> supposed to report the applications progress every 15 minutes on the
> quarter hour. 
> 
> my $now = time();
> my $prog_timer = Event->timer('at' => ($now + 900) - ($now % 900),
>                               'interval' => 900,
>                               'hard'     => 1,
>                               'cb'       => \&Progress);
> 
> However, as the program runs, these reports keep getting
> (cumulatively) later past the quarter hour.  When I put debug
> statements in the application to report the state of the reporting
> watcher, it shows that the time ('at' attribute) is correctly set to
> the quarter hour.

Yah, I can't see how 'at' could be calculated wrong.  See timer.c:35

> I've tried to go through the code to find the source of the
> discrepency, but haven't found where the problem lies yet.  I suspect
> that the module tries to keep track of time on its own without
> checking against the system clock.

Nope.

NVtime is implemented with time or gettimeofday (if you have
Time::HiRes).  See Event.pm:27

> As a result, small errors slowly
> accumulate causing events to be triggered later and later.  (For me,
> this error is accumulating at a rate of about 3 seconds every 15
> minutes of operation.)

Dunno.  The code is pretty simple and looks correct.

Have you tried NetServer::Portal?

-- 
A new cognitive theory of emotion, http://openheartlogic.org

Attachment: signature.asc
Description: Digital signature

Reply via email to