[asterisk-bugs] [Asterisk 0010668]: Incomplete CDR lock
noreply at bugs.digium.com
noreply at bugs.digium.com
Wed May 28 19:19:04 CDT 2008
A NOTE has been added to this issue.
======================================================================
http://bugs.digium.com/view.php?id=10668
======================================================================
Reported By: arkadia
Assigned To: murf
======================================================================
Project: Asterisk
Issue ID: 10668
Category: CDR/General
Reproducibility: always
Severity: minor
Priority: normal
Status: assigned
Asterisk Version: 1.4.11
SVN Branch (only for SVN checkouts, not tarball releases): 1.4
SVN Revision (number only!):
Disclaimer on File?: N/A
Request Review:
======================================================================
Date Submitted: 09-07-2007 08:26 CDT
Last Modified: 05-28-2008 19:19 CDT
======================================================================
Summary: Incomplete CDR lock
Description:
This is all about the meaning of AST_CDR_FLAG_LOCKED flag for CDR.
I assume if CDR has this flag set then it wont be updated anymore by any
ast_cdr_ functions except cases when we force such update. ast_cdr_reset()
is example of function which allows to update locked CDRs if special flag
is given.
Based on this assumption I prepared the patch with such changes:
ast_cdr_setvar() - not allowed to touch locked CDRs. I don't see any
cases when we need to change locked CDRs too. Not touching locked CDRs is
helpfull when ForkCDR being used and every new CDR may have different
custom variables.
ast_cdr_answer() - don't change status of locked CDRs. That might be
helpfull when we have a chain of CDRs for one incoming call for which we
perform several tries to make outgoing call. Every outgoing attempt may
finish with its own completion code. And if the final attempt is 'answered'
then we have only one CDR with 'answered' status. All other will keep
connection error codes which is very helpful for error monitoring.
ast_cdr_end() - don't change locked CDRs by the same reason as
ast_cdr_answer()
As there will be no changes in CDR after lock, app_forkcdr.c should be
updated to end original locked CDR.
Also it'll be great to make optional cdr reset in this application, but
thats a theme for another patch.
======================================================================
Relationships ID Summary
----------------------------------------------------------------------
related to 0012726 ForkCDR application fails to set duration
======================================================================
----------------------------------------------------------------------
svnbot - 05-28-08 19:19
----------------------------------------------------------------------
Repository: asterisk
Revision: 118858
U branches/1.4/apps/app_forkcdr.c
U branches/1.4/main/cdr.c
------------------------------------------------------------------------
r118858 | murf | 2008-05-28 19:19:02 -0500 (Wed, 28 May 2008) | 46 lines
(closes issue http://bugs.digium.com/view.php?id=10668)
(closes issue http://bugs.digium.com/view.php?id=11721)
(closes issue http://bugs.digium.com/view.php?id=12726)
Reported by: arkadia
Tested by: murf
These changes:
1. revert the changes made via bug 10668;
I should have known that such changes,
even tho they made sense at the time,
seemed like an omission, etc, were actually
integral to the CDR system via forkCDR.
It makes sense to me now that forkCDR didn't
natively end any CDR's, but rather depended
on natively closing them all at hangup time
via traversing and closing them all, whether
locked or not. I still don't completely
understand the benefits of setvar and answer
operating on locked cdrs, but I've seen
enough to revert those changes also, and
stop messing up users who depended on that
behavior. bug 12726 found reverting the changes
fixed his changes, and after a long review
and working on forkCDR, I can see why.
2. Apply the suggested enhancements proposed
in 10668, but in a completely compatible
way. ForkCDR will behave exactly as before,
but now has new options that will allow some
actions to be taken that will slightly
modify the outcome and side-effects of
forkCDR. Based on conversations I've had
with various people, these small tweaks
will allow some users to get the behavior
they need. For instance, users executing
forkCDR in an AGI script will find the
answer time set, and DISPOSITION set,
a situation not covered when the routines
were first written.
3. A small problem in the cdr serializer
would output answer and end times even
when they were not set. This is now
fixed.
------------------------------------------------------------------------
http://svn.digium.com/view/asterisk?view=rev&revision=118858
Issue History
Date Modified Username Field Change
======================================================================
05-28-08 19:19 svnbot Note Added: 0087475
======================================================================
More information about the asterisk-bugs
mailing list