[asterisk-dev] [Code Review] Fix incorrect duration reporting in CDRs created in batch mode that use ast_cdr_getvar

Tilghman Lesher reviewboard at asterisk.org
Thu Jun 21 10:12:40 CDT 2012


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1996/#review6529
-----------------------------------------------------------



/branches/1.8/cdr/cdr_adaptive_odbc.c
<https://reviewboard.asterisk.org/r/1996/#comment12325>

    The point of this section is that duration is (due to legacy reasons) calculated as an integer, whereas the adaptive driver is permitted to calculate the duration and billsec in fractions of a second.  If you're going to eliminate this here, you need to address this shortcoming in the core.



/branches/1.8/main/cdr.c
<https://reviewboard.asterisk.org/r/1996/#comment12326>

    I really don't think you should do this, especially in a released version.  You are likely to break more dialplans than you will help, and it violates one of our core tenets that multiple developers have regretted (thou shalt not change how CDRs work).


- Tilghman


On June 20, 2012, 4:14 p.m., Matt Jordan wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1996/
> -----------------------------------------------------------
> 
> (Updated June 20, 2012, 4:14 p.m.)
> 
> 
> Review request for Asterisk Developers, Mark Michelson and Tilghman Lesher.
> 
> 
> Summary
> -------
> 
> Certain places in core/cdr.c would, if the duration value were 0, would calculate the duration as being the delta between the current time and the time at which the CDR record was started.  While this does not typically cause a problem in non-batch mode, this can cause an issue in batch mode where CDR records are gathered and written long after those calls have ended. In particular, this affects calls that were never answered, as those are expected to have a duration of 0.  Often, this would result in CDR logs with a significant number of calls with lengthy durations, but dispositions of "BUSY".
> 
> Note that this does not affect CSV CDRs, as that backend does not use ast_cdr_getvar and instead directly reports the duration value.  The affected core backends include cdr_apative_odbc and cdr_custom; other extended or deprecated CDR backends may potentially still directly manipulate the duration values. 
> 
> This patch essentially reverts r91617, when this behavior was introduced.
> 
> 
> This addresses bug ASTERISK-19860.
>     https://issues.asterisk.org/jira/browse/ASTERISK-19860
> 
> 
> Diffs
> -----
> 
>   /branches/1.8/main/cdr.c 368829 
>   /branches/1.8/cdr/cdr_adaptive_odbc.c 368829 
> 
> Diff: https://reviewboard.asterisk.org/r/1996/diff
> 
> 
> Testing
> -------
> 
> Ran through the Asterisk Test Suite's CDR tests.  A new test for batch CDR creation was also written that also tests that the disposition/billsec are 0 when they should be, and non-zero when the calls are answered.
> 
> 
> Thanks,
> 
> Matt
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20120621/3bf629ee/attachment-0001.htm>


More information about the asterisk-dev mailing list