[Pdns-users] 2.9.4 -> 2.9.8 breakage

Damian Gerow damian at sentex.net
Wed May 21 18:33:52 UTC 2003


Late last night, I thought I'd try updating from 2.9.4 to 2.9.8 (I'm using
FreeBSD, so the upgrade process is fairly simple).  This turned out to be a
*very bad idea*, as I had some pretty serious breakage.  Luckily, I just
have my one domain in there, so it was far from catastrophic.  :)

FYI, I use the gmysql backend.  The domain in question throughout all of
this is 'afflictions.org'.

Firstly, the port install overwrote my configuration file.  But that's an
issue for the maintainer, and not this list.

After re-building my configuration file (again, it's none-too-complicated),
I launched pdns in monitor.  I immediately started getting these errors:

    May 21 00:37:46 asylum pdns[10793]: Opened file '/usr/local/etc/pdns.conf' for configuration
    May 21 00:37:46 asylum pdns[10793]: Fatal error: Trying to set unexisting parameter 'receiver-threads'
    May 21 00:37:46 asylum pdns[10791]: Our pdns instance exited with code 1
    May 21 00:37:46 asylum pdns[10791]: Respawning

Fine.  I wasn't specifying receiver-threads before, so I won't do it this
time.  But now I start seeing:

    May 21 00:38:39 asylum pdns[10889]: gmysql Connection failed: Unable to connect to database: Access denied for user: '$gmysql-password at 10.9.22.8' (Using password: NO)
    May 21 00:38:39 asylum pdns[10889]: Caught an exception instantiating a backend, cleaning up
    May 21 00:38:39 asylum pdns[10889]: TCP server is unable to launch backends - will try again when questions come in: Unable to launch gmysql connection: Unable to connect to database: Access denied for user: '$gmysql-password at 10.9.22.8' (Using password: NO)
    May 21 00:38:39 asylum pdns[10889]: About to create 3 backend threads
    May 21 00:38:39 asylum pdns[10889]: gmysql Connection failed: Unable to connect to database: Access denied for user: '$gmysql-password at 10.9.22.8' (Using password: NO)
    May 21 00:38:39 asylum pdns[10889]: Caught an exception instantiating a backend, cleaning up
    May 21 00:38:39 asylum pdns[10889]: gmysql Connection failed: Unable to connect to database: Access denied for user: '$gmysql-password at 10.9.22.8' (Using password: NO)
    May 21 00:38:39 asylum pdns[10889]: Caught an exception instantiating a backend, cleaning up
    May 21 00:38:39 asylum pdns[10889]: gmysql Connection failed: Unable to connect to database: Access denied for user: '$gmysql-password at 10.9.22.8' (Using password: NO)
    May 21 00:38:39 asylum pdns[10889]: Caught an exception instantiating a backend, cleaning up
    May 21 00:38:39 asylum pdns[10889]: Done launching threads, ready to distribute questions

(replace $gmysql-password with the actual value in pdns.conf)

WTF?  After some diddling around, I managed to get pdns to connect by:

    - removing password requirements for pdns.* in MySQL
    - setting gmysql-password to be the *username* (i.e. 'pdns').

So now that that's working, let's try the recursor.  I run a separate
recursing daemon on a separate server, and am using that.  I set
$allow-recursion to be my two private networks, and localhost.  Some
quick test showed that:

    - localhost cannot do recursion
    - external cannot do recursion
    - the two private LANs can do recursion

Okay, I can deal with that.  But then I do some more tests.  If I look up
from the two private LANs, all of a sudden, looking up from localhost works.
Alright, so let's test external.  Yep, that works too.  Uh-oh.  BTW, I've
just re-verified that this is the case, using 'login.yahoo.com' as a test
object.  External recursive lookup fails, then internal recursive lookup
works, then external recursive lookup works.

Finally, I moved one of my domains to be a 'master', as the secondary for my
domain is broken, and won't ever refresh the domain if it doesn't get a
NOTIFY.

However, that started giving me /these/ errors:

    May 21 00:53:43 asylum pdns[12914]: Master/slave communicator launching
    May 21 00:53:43 asylum pdns[12914]: gmysql Connection succesful
    May 21 00:53:43 asylum pdns[12914]: Communicator thread died because of error: GSQLBackend unable to retrieve list of slave domains: Failed to execute mysql_query: Unknown column 'master' in 'field list'

At this point, all I had done was enable 'master = yes', and change the
'type' column in the 'domains' table from NATIVE to MASTER.  I'll look into
that one in more detail later.

So, I have an installation of PowerDNS that cannot connect to a MySQL
database with passwords, doesn't understand the 'receiver-threads'
directive, doesn't place any restrictions on cached recursive lookups, and
doesn't seem to want to be a master for a domain.

I realize these are potentially four very distinct problems, but can anyone
shed some light on them?  I can probably figure out the master problem on my
own, but I'm utterly stumped on why pdns would interpret $gmysql-password as
$gmysql-user.

The recursive problem could be because I didn't --enable-recursor, but I
would have thought that would be for the internal recursor, not the
pass-it-on-to-another-server recursor.


More information about the Pdns-users mailing list