zoom: re-connect when database is reused
authorAdam Dickmeiss <adam@indexdata.dk>
Mon, 5 Mar 2012 13:09:54 +0000 (14:09 +0100)
committerAdam Dickmeiss <adam@indexdata.dk>
Mon, 5 Mar 2012 13:09:54 +0000 (14:09 +0100)
Re-connect is necessary if a connection is lost or a timeout occurs.
If not, we'll be seeing zero hits, when we shouldn't.

src/filter_zoom.cpp

index aaa9ef5..e8e1681 100644 (file)
@@ -322,7 +322,7 @@ void yf::Zoom::Backend::connect(std::string zurl,
                                 int *error, char **addinfo,
                                 ODR odr)
 {
-    ZOOM_connection_connect(m_connection, zurl.c_str(), 0);
+    ZOOM_connection_connect(m_connection, zurl.length() ? zurl.c_str() : 0, 0);
     get_zoom_error(error, addinfo, odr);
 }
 
@@ -872,7 +872,10 @@ yf::Zoom::BackendPtr yf::Zoom::Frontend::get_backend_from_databases(
     std::list<BackendPtr>::const_iterator map_it;
     if (m_backend && !m_backend->enable_explain && 
         m_backend->m_frontend_database == database)
+    {
+        m_backend->connect("", error, addinfo, odr);
         return m_backend;
+    }
 
     std::string input_args;
     std::string torus_db;