Radius Sending Rollback Message?
    Sharma Raj 
    Raj.Sharma at orange.ch
       
    Thu Dec  8 11:02:49 CET 2005
    
    
  
Radius Sending Rollback Message
A rather curious scenario of events:
In our setup of Radius, we use an Oracle database. Ordinarily, when NAS sends Accounting Start messages to Radius, Radius sends Update messages to Oracle. Periodically, something odd happens - Radius sends a Rollback message to Oracle which undoes the Update. This Rollback message is really not wanted as the Oracle DB doesnt get updated, but I havent got a clue why this happens. Please let me know if you've seen this before or if you know why this would happen. Help greatly appreciated.
Some more details are below.
 (Radius-Oracle communicate with:
Data Manipulation Language (DML) consists of UPDATEs, INSERTs and MERGEs.
Transaction Control consists of COMMIT, SAVEPOINT, ROLLBACK and SET TRANSCATION.)
Here are the two failing sessions, (containing 4 UPDATE messages from the radius server) that did not successfully update the oracle DB.
UPDATE radacct SET Status = 1, NASIPAddress = '10.10.32.4', AcctStartTime = to_d
ate('2005-11-18 14:12:21','YYYY-MM-DD HH24:MI:SS'), CalledStationId = 'wx', XDI
AL= '213.55.204.140',  FramedIPAddress= '10.12.33.152' WHERE CallingStationId = 
 '11118380323'                                                                  
UPDATE radacct SET  Status = 0 , AcctStopTime = to_date('2005-11-18 14:28:20','Y
YYY-MM-DD HH24:MI:SS')  WHERE CallingStationId = decode('11118380323','', '11110
000000', '11118380323')  
                                                       
UPDATE radacct SET Status = 1, NASIPAddress = '10.10.32.4', AcctStartTime = to_d
ate('2005-11-18 14:29:10','YYYY-MM-DD HH24:MI:SS'), CalledStationId = 'wx', XDI
AL= '213.55.204.140',  FramedIPAddress= '10.12.23.199' WHERE CallingStationId = 
 '11118380323'                                                                  
UPDATE radacct SET  Status = 0 , AcctStopTime = to_date('2005-11-18 15:13:04','Y
YYY-MM-DD HH24:MI:SS')  WHERE CallingStationId = decode('11118380323','', '11110
000000', '11118380323') 
The Oracle DB listener trace for the first message shows the DML was received ok but the end of a trace shows a ROLLBACK (this undoes all the DMLs since the last COMMIT was sent). Details:
UPDATE radacct SET Status = :"SYS_B_0", NASIPAddress = :"SYS_B_1",
AcctStartTime = to_date(:"SYS_B_2",:"SYS_B_3"), CalledStationId =
:"SYS_B_4", XDIAL= :"SYS_B_5", FramedIPAddress = :"SYS_B_6"
WHERE
 CallingStationId =:"SYS_B_7"
call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.01       0.00          2          3         14           1
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        2      0.01       0.01          2          3         14           1
Misses in library cache during parse: 1
Optimizer goal: CHOOSE
Parsing user id: 162
Rows     Row Source Operation
-------  ---------------------------------------------------
      1  UPDATE
      1   INDEX UNIQUE SCAN PK_RADACCT (object id 622971)
********************************************************************************
SELECT CallingStationId,
             FramedIpAddress
      from radius.radacct
      where rowid = :b1
      and Status = 1
call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        1      0.00       0.00          0          1          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        3      0.00       0.00          0          1          0           1
Misses in library cache during parse: 0
Optimizer goal: CHOOSE
Parsing user id: 162     (recursive depth: 1)
Rows     Row Source Operation
-------  ---------------------------------------------------
      1  TABLE ACCESS BY USER ROWID RADACCT
********************************************************************************
UPDATE radius.radacct
         set Status = 0
         where Status = 1
         and FramedIpAddress = :b2
         and CallingStationId != :b1
call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.03       0.04          0       2066          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        2      0.03       0.04          0       2066          0           0
Misses in library cache during parse: 0
Optimizer goal: CHOOSE
Parsing user id: 162     (recursive depth: 1)
Rows     Row Source Operation
-------  ---------------------------------------------------
      0  UPDATE
      0   TABLE ACCESS BY INDEX ROWID RADACCT
   2587    INDEX RANGE SCAN RADACCT_IX4 (object id 464104)
********************************************************************************
rollback
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freeradius.org/pipermail/freeradius-users/attachments/20051208/786e1af9/attachment.html>
    
    
More information about the Freeradius-Users
mailing list