Update to the problem: the accounting-stop alternate query is actually
an INSERT, not an UPDATE, by default, which actually surprises me, as in
case of a duplicate packet, an INSERT into a properly unique-indexed
table is doomed. I have now simply changed the -alt into an UPDATE
query, so it would also not affect any record, but at least will not
cause Oracle to balk.
My only problem now is how to make sure FreeRADIUS does not freeze upon
an SQL error.
Cheers,
Mike
Mother wrote:
Hi all,
I am seeing a strange situation. I receive an accounting-stop request
from a NAS, and FreeRADIUS (1.1.7 against Oracle) updates the
corresponding radacct record. However, the NAS is not receiving the ack,
and thus re-sends the stop request. On the second request, FreeRADIUS
tries to do an update query again, and then, an insert query, with the
stop message details (i.e. only a stop time, reason idle-timeout, etc.),
which fails. After the third request from the NAS (and corresponding
update followed by insert), Oracle throws a unique constraint violation
error, and the server freezes.
Questions:
1. Why is FreeRADIUS failing to see that this request was already
acknowledged, i.e. it has been updated on the database, and just sends
an ACK, rather than trying to insert a new record?
2. Why does FreeRADIUS freeze on an SQL error from Oracle? Should it not
just log the error and carry on about its business? I am finding my
server freezing every few days due to these issues, for example, if a
query takes too long to run, or a trigger fails to execute. Is
FreeRADIUS against Oracle more fragile than say MySQL?
Cheers,
Mike
-
List info/subscribe/unsubscribe? See
http://www.freeradius.org/list/users.html
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html