Fix server status bug when server connection drops, per a report from Mike
authorguillaume <guillaume@a7884b65-44f6-0310-8a51-81a127f17b15>
Mon, 23 Mar 2009 08:59:45 +0000 (08:59 +0000)
committerguillaume <guillaume@a7884b65-44f6-0310-8a51-81a127f17b15>
Mon, 23 Mar 2009 08:59:45 +0000 (08:59 +0000)
Blackwell.

git-svn-id: svn://svn.pgadmin.org/trunk/pgadmin3@7738 a7884b65-44f6-0310-8a51-81a127f17b15

pgadmin/frm/frmStatus.cpp

index 510d2d5c8902d13e4312283bf936875b25c58a07..cef5557fcd67f5e749538ab96707023bc5874d07 100644 (file)
@@ -916,9 +916,17 @@ void frmStatus::OnRefreshStatusTimer(wxTimerEvent &event)
     
        if (!connection)
        {
-           wxLogError(wxT("no connection for status"));
+           statusTimer->Stop();
+           locksTimer->Stop();
+           xactTimer->Stop();
+           logTimer->Stop();
+               statusBar->SetStatusText(wxT("Connection broken."));
            return;
     }
+
+       checkConnection();
+       if (!connection)
+           return;
     
     wxCriticalSectionLocker lock(gs_critsect);
 
@@ -1015,10 +1023,18 @@ void frmStatus::OnRefreshLocksTimer(wxTimerEvent &event)
 
        if (!connection)
        {
-           wxLogError(wxT("no connection for locks"));
+           statusTimer->Stop();
+           locksTimer->Stop();
+           xactTimer->Stop();
+           logTimer->Stop();
+               statusBar->SetStatusText(wxT("Connection broken."));
            return;
     }
 
+       checkConnection();
+       if (!connection)
+           return;
+    
     wxCriticalSectionLocker lock(gs_critsect);
 
     connection->ExecuteVoid(wxT("SET log_statement='none';"));
@@ -1154,10 +1170,18 @@ void frmStatus::OnRefreshXactTimer(wxTimerEvent &event)
 
        if (!connection)
        {
-           wxLogError(wxT("no connection for xact"));
+           statusTimer->Stop();
+           locksTimer->Stop();
+           xactTimer->Stop();
+           logTimer->Stop();
+               statusBar->SetStatusText(wxT("Connection broken."));
            return;
     }
 
+       checkConnection();
+       if (!connection)
+           return;
+    
     wxCriticalSectionLocker lock(gs_critsect);
 
     connection->ExecuteVoid(wxT("SET log_statement='none';"));
@@ -1230,10 +1254,18 @@ void frmStatus::OnRefreshLogTimer(wxTimerEvent &event)
 
        if (!connection)
        {
-           wxLogError(wxT("no connection for logs"));
+           statusTimer->Stop();
+           locksTimer->Stop();
+           xactTimer->Stop();
+           logTimer->Stop();
+               statusBar->SetStatusText(wxT("Connection broken."));
            return;
     }
     
+       checkConnection();
+       if (!connection)
+           return;
+    
     wxCriticalSectionLocker lock(gs_critsect);
 
     connection->ExecuteVoid(wxT("SET log_statement='none';"));
@@ -1344,6 +1376,10 @@ void frmStatus::checkConnection()
        {
            delete connection;
                connection=0;
+           statusTimer->Stop();
+           locksTimer->Stop();
+           xactTimer->Stop();
+           logTimer->Stop();
                statusBar->SetStatusText(_("Connection broken."));
        }
 }
@@ -1825,7 +1861,7 @@ void frmStatus::OnSelStatusItem(wxListEvent &event)
 #endif
     currentPane = PANE_STATUS;
     cbRate->SetValue(rateToCboString(statusRate));
-       if (connection->BackendMinimumVersion(8, 0))
+       if (connection && connection->BackendMinimumVersion(8, 0))
        {
                if(statusList->GetSelectedItemCount() > 0) 
                {
@@ -1859,7 +1895,7 @@ void frmStatus::OnSelLockItem(wxListEvent &event)
 #endif
        currentPane = PANE_LOCKS;
        cbRate->SetValue(rateToCboString(locksRate));
-       if (connection->BackendMinimumVersion(8, 0))
+       if (connection && connection->BackendMinimumVersion(8, 0))
        {
                if(lockList->GetSelectedItemCount() > 0) 
                {