On 12/29/2011 12:55 AM, Fabio Sangiovanni wrote:
Hello list,

I'm a newbie of pdns and I'm setting up a recursor-only installation as local 
dns cache for a high load smtp server.
I'm using the lua scripting feature as a way to track down MX queries. In 
particular, the preresolve() function relies on luasql to execute queries on a 
(local) mysql database.
This is my problem: if I enable more than one thread in recursor.conf I get the 
lua script loaded more than once, and ultimately concurrent queries to the db 
that could mess up the stored data, depending on the execution order of select 
and update queries by the various threads.
I'd like to avoid circumventing these race conditions through complicated lua coding, and 
instead I'd prefer to keep things as simple as possible and limit the number of pdns 
threads to just 1 ("threads=1" setting in recursor.conf).
I know that the lua feature is not meant to be used this way, but this could 
really help me solving a big problem :)

Since I'm just hosting a tiny little site I'm probably missing something - but can you please explain what you're trying to accomplish? If you're just logging MX queries as they occur - what's the race condition that you see occurring? Are you totaling requests by client IP - in which case I don't see a concern, or by the target address? If by the target address, could you not use a stored procedure that basically executes "lock table ; update bigtable set queries = queries + 1 where mxip = parameter ; unlock table" (I don't use mysql so I don't know mysql-specific syntax - nor how that would impact performance).

Alternatively, have your lua script only add records to a temporary table - so there would be potentially multiple entries for a given target address. Then have a cron job periodically grab the temporary table, add the values to the primary totals table, and delete the temporary values.

--
Daniel
_______________________________________________
Pdns-users mailing list
[email protected]
http://mailman.powerdns.com/mailman/listinfo/pdns-users

Reply via email to