3.0.2: rlm_sql_null duplicating its statements
Phil Mayers
p.mayers at imperial.ac.uk
Fri Apr 11 15:22:37 CEST 2014
On 11/04/14 12:24, Alan DeKok wrote:
> Stefan Winter wrote:
>> Whoa. Why would that be a configuration error?
>
> Because we can't guarantee that the writes occur properly.
>
>> I have multiple instances
>> of rlm_sql_null, all writing different SQL statements, and all writing
>> into the same file for forwarding to the SQL server by radsqlrelay.
>
> Which doesn't work with POSIX locks, as you pointed out. It might
> work accidentally, but different threads writing to the same file will
> cause problems. One thread closing a file descriptor will cause another
> thread to magically lose its lock.
I think it's important to note this *will* be working for 2.2.x on Linux
because the locking #ifdef will end up using flock() which has saner,
per-fd semantics.
That said: I don't see why your changes would cause semantic problems
here. Since all rlm_sql instances use the logging api, surely they'll
all interact just fine with >1 instance writing to the same name?
I am rather concerned about the locking overhead of the new approach
though; my gut feeling tells me a double mutex acquire/release will
likely be more expensive than the open()/close() calls, but hopefully
I'm wrong.
More information about the Freeradius-Users
mailing list