[Pdns-users] SPF records - Parsing Exceptions / STL Errors (WAS: specifying more complex sql queries with gmysql back-end)

Tom tom at t0mb.net
Thu Nov 24 09:38:57 UTC 2011

Thank you for your help.  It looks like I don't need to do this any 
more.  Basically, I was having problems with a massive qsize-q, and 
despite my hugely beefy sql servers not breaking a sweat in terms of 
CPU/Memory/Disk IO, I was thinking that InnoDB might be struggling after 
seeing the InnoDB status showing loads and loads of unstarted 
transactions.  Anyway, it turns out that the problem was actually down 
to us recently allowing customers to start setting up SPF records.  We 
weren't validating them properly, and we were seeing a lot of exceptions 
like the following:

Exception: Parsing record content: Data field in DNS should start with 
quote (") at position 0 of 'v=spf1 include:_spf.google.com ~all'

and even more worryingly, like this:

TCP Connection Thread died because of STL error: Parsing record content: 
Data field in DNS should start with quote (") at position 0 of 'v=spf1 
a:randomdomain.com ~all'

Basically, after starting to validate these records, and retrospectively 
fixing the records already in the database, my performance has returned 
to normal.

We are running a custom version of, with a custom written MSSQL 
back-end which we have as second in priority to the gmysql backend.  
I've looked in to trying to use OpenDBX in order to upgrade to a later 
version of PDNS (v3+) without having to rewrite portions of the custom 
back-end, but I think it would be too much work to try and re-design our 
database and control panel to work with the database format that OpenDBX 
requires.  I don't think it's practical.  I think upgrading to 2.9.22 
wouldn't be too much work, but I'm wondering whether the issues I've 
raised above would have been fixed if we did that.  I know that there 
are some bugs fixed which cause the TCP thread to recycle when there are 
timeouts, but I don't know about these parsing exceptions.

Any ideas if I should ask one of our developers to try and get our 
patches to apply cleanly to 2.9.22?

If only they had contributed the patches to the project all those years 

Thanks for your help so far!


On 14/11/11 22:30, Nils Breunese (Lemonbit) wrote:
> Tom wrote:
>> Our setup is a little more complex than the default way of doing things.  We have a table which has what we call 'override records', which take priority over the records that appear in the normal records database.  We also generate SOAs dynamically.  Basically, the query I have does a union with records from both overriderecords and records, unless the dns is suspended, which is another comparison that needs to be done, and it also determines whether the request type is an SOA using a case statement, and then executes a stored procedure to generate the 'content' column data.
>> I just want to write this in to the config file rather than calling it as a stored procedure, and I'm hoping then that I can reduce load of the database server by actually having MySQL cache the results of the queries (which it doesn't do at all when you call a stored proc).
> Could you catch all that logic in a view maybe? Then you could write a query against that and put that in your config file. Just a thought, I don't know if that could work.
> http://dev.mysql.com/doc/refman/5.0/en/views.html
> Nils.
> _______________________________________________
> Pdns-users mailing list
> Pdns-users at mailman.powerdns.com
> http://mailman.powerdns.com/mailman/listinfo/pdns-users

More information about the Pdns-users mailing list