Index: /trunk/packages/sipb-xen-dns/code/dnsserver.py
===================================================================
--- /trunk/packages/sipb-xen-dns/code/dnsserver.py	(revision 301)
+++ /trunk/packages/sipb-xen-dns/code/dnsserver.py	(revision 302)
@@ -8,4 +8,7 @@
 
 import sipb_xen_database
+import psycopg2
+import sqlalchemy
+import time
 
 class DatabaseAuthority(common.ResolverBase):
@@ -24,4 +27,17 @@
                                   expire=3600000, minimum=21600, ttl=3600)
     def _lookup(self, name, cls, type, timeout = None):
+        for i in range(3):
+            try:
+                value = self._lookup_unsafe(name, cls, type, timeout = None)
+            except (psycopg2.OperationalError, sqlalchemy.exceptions.SQLError):
+                if i == 2:
+                    raise
+                print "Reloading database"
+                time.sleep(0.5)
+                continue
+            else:
+                return value
+
+    def _lookup_unsafe(self, name, cls, type, timeout):
         sipb_xen_database.clear_cache()
         if not (name.lower() == self.domain or 
