<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2658.24">
<TITLE>Problem with initial service scheduling (2.0b3)</TITLE>
</HEAD>
<BODY>
<P><FONT SIZE=2>Hi all,</FONT>
</P>
<P><FONT SIZE=2>I currently have a configuration with 4800 services : 600 active and 4200 passive. And, as the number was growing, I noticed a problem in the way nagios scheduled their initial check time : With the 2.0b3 original code, with max_service_check_spread=30, when I look at the scheduling queue just after start, I see that the last service checks are scheduled to run in 4 hours !</FONT></P>
<P><FONT SIZE=2>This delay corresponds to :</FONT>
</P>
<P><FONT SIZE=2>max_service_check_spread * (total_services / total_scheduled_services)</FONT>
</P>
<P><FONT SIZE=2>And should be equal to max_service_check_spread.</FONT>
</P>
<P><FONT SIZE=2>I found the reason in event.c/init_timing_loop() and I am including a change which appears to correct the problem but, as I am not sure to fully understand the 'interleave_block' logic, this change should be taken with care :</FONT></P>
<P><FONT SIZE=2>The reason : in the 'schedule service checks' section of init_timing_loop(), next check time is incremented for each service, and not for each SCHEDULED service. So, in my case it is incremented 'total_services' times and the last check time is equal to :</FONT></P>
<P><FONT SIZE=2>Current_time + total_services * service_inter_check_delay</FONT>
</P>
<P><FONT SIZE=2>Where it should be :</FONT>
</P>
<P><FONT SIZE=2>Current_time + total_scheduled_services * service_inter_check_delay</FONT>
</P>
<P><FONT SIZE=2>Which is coherent with the way service_inter_check_delay is computed.</FONT>
</P>
<P><FONT SIZE=2>My change consists of taking the 'should_be_scheduled' check out of the inner loop, and add a line in order to have the code enter the inner 'interleave_block' loop only for active checks. This way current_interleave_block goes from 0 to total_schedules_services instead of going up to total_services.</FONT></P>
<P><FONT SIZE=2>Once again, the patch I am submitting seems to correct the problem in MY case. But I don't know if it is correct when interleave variables have some different values.</FONT></P>
<P><FONT SIZE=2>Regards</FONT>
</P>
<P><FONT SIZE=2>François</FONT>
</P>
<P><FONT FACE="Arial" SIZE=2 COLOR="#000000"></FONT>
</BODY>
</HTML>