<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://reviewboard.asterisk.org/r/1688/">https://reviewboard.asterisk.org/r/1688/</a>
     </td>
    </tr>
   </table>
   <br />





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On January 25th, 2012, 2:09 p.m., <b>wdoekes</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I could be wrong, but I think the only thing you&#39;re fixing here is that skipping the checking works more reliably.

Before: if next was unset, it would always scan the dir
After patch: if next is unset, it won&#39;t

In the reporters case, next was always set, so he isn&#39;t affected by this fix.
My theoretical problem with the granularity of mtime isn&#39;t addressed.
Although I&#39;m not sure that is the cause of the reporters problem either.

(It would be if another file was also added at t=11:02:59.early, but I don&#39;t see any of that. According to his logs, the dir mtime *is* picked up correctly, but the file is simply not found that first time. Unless... if an utime(2) call updates the dir-mtime at t=11:02:59.early, and then the scan is done, new files at t=11:02:59.late would be skipped because then `last` and dir-mtime would be (int)1324029779.)</pre>
 </blockquote>




 <p>On January 25th, 2012, 8:45 p.m., <b>rmudgett</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">You&#39;re right.  The fixed skip check will not help.  After reviewing the code again, I am convinced that the problem is the mtime granularity.  Unfortunately, from what I have read, not all systems populate the nanosecond resolution fields with active values or even use the same field names.

To fix this for all systems using the old method, would require scanning the directory every second with the resulting increased CPU overhead.</pre>
 </blockquote>








</blockquote>

<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Or.. you could force it to do an extra scan while mtime hasn&#39;t changed.

instead of:

if (st.st_mtime == last &amp;&amp; (!next || now &lt; next)) continue;

you&#39;d do:

if (st.st_mtime == last &amp;&amp; (!next || now &lt; next) &amp;&amp; checked_once_more_when_now_GT_last) continue;

// checked_once_more_when_now_GT_last = ((st.st_mtime == last &amp;&amp; (!next || now &lt; next)) &amp;&amp; now &gt; last);</pre>
<br />








<p>- wdoekes</p>


<br />
<p>On January 25th, 2012, 8:53 p.m., rmudgett wrote:</p>






<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('https://reviewboard.asterisk.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Asterisk Developers.</div>
<div>By rmudgett.</div>


<p style="color: grey;"><i>Updated Jan. 25, 2012, 8:53 p.m.</i></p>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Call-files are sometimes delayed incorrectly.

This is actually a regression that has been in the code since 2007-07-11 (-r74704).  That code restructuring to reduce code indention, incorrectly inverted a test to determine if the spool directory needed to be rescanned.

Most of the changes to scan_thread() are coding guidelines fixes.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">It compiles and I saw that the test was incorrectly inverted during a restructuring.</pre>
  </td>
 </tr>
</table>



<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>


 <a href="https://issues.asterisk.org/jira/browse/ASTERISK-19081">ASTERISK-19081</a>


</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>/branches/1.8/pbx/pbx_spool.c <span style="color: grey">(352703)</span></li>

</ul>

<p><a href="https://reviewboard.asterisk.org/r/1688/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>








  </div>
 </body>
</html>