Le samedi 21 mars 2009 à 14:25:32, Dave Page a écrit :
> On Fri, Mar 20, 2009 at 9:26 PM, Mike Blackwell <[email protected]>
wrote:
> > If the server connection drops while on the server status page, a popup
> > is created every time the page refreshes.
> >
> > To reproduce, connect to a server an monitor it, then stop the server.
>
> Any thoughts on the best way to handle this Guillaume? Perhaps just
> stop the refresh timers as soon as a connection error occurs (and
> display a message on the status bar or somewhere).
>
That's what I did in this patch. If it's OK for you, I'll commit it.
--
Guillaume.
http://www.postgresqlfr.org
http://dalibo.com
Index: pgadmin/frm/frmStatus.cpp
===================================================================
--- pgadmin/frm/frmStatus.cpp (révision 7736)
+++ pgadmin/frm/frmStatus.cpp (copie de travail)
@@ -916,9 +916,17 @@
if (!connection)
{
- wxLogError(wxT("no connection for status"));
+ statusTimer->Stop();
+ locksTimer->Stop();
+ xactTimer->Stop();
+ logTimer->Stop();
+ statusBar->SetStatusText(wxT("no connection for status report"));
return;
}
+
+ checkConnection();
+ if (!connection)
+ return;
wxCriticalSectionLocker lock(gs_critsect);
@@ -1015,10 +1023,18 @@
if (!connection)
{
- wxLogError(wxT("no connection for locks"));
+ statusTimer->Stop();
+ locksTimer->Stop();
+ xactTimer->Stop();
+ logTimer->Stop();
+ statusBar->SetStatusText(wxT("no connection for locks report"));
return;
}
+ checkConnection();
+ if (!connection)
+ return;
+
wxCriticalSectionLocker lock(gs_critsect);
connection->ExecuteVoid(wxT("SET log_statement='none';"));
@@ -1154,10 +1170,18 @@
if (!connection)
{
- wxLogError(wxT("no connection for xact"));
+ statusTimer->Stop();
+ locksTimer->Stop();
+ xactTimer->Stop();
+ logTimer->Stop();
+ statusBar->SetStatusText(wxT("no connection for transactions report"));
return;
}
+ checkConnection();
+ if (!connection)
+ return;
+
wxCriticalSectionLocker lock(gs_critsect);
connection->ExecuteVoid(wxT("SET log_statement='none';"));
@@ -1230,10 +1254,18 @@
if (!connection)
{
- wxLogError(wxT("no connection for logs"));
+ statusTimer->Stop();
+ locksTimer->Stop();
+ xactTimer->Stop();
+ logTimer->Stop();
+ statusBar->SetStatusText(wxT("no connection for log report"));
return;
}
+ checkConnection();
+ if (!connection)
+ return;
+
wxCriticalSectionLocker lock(gs_critsect);
connection->ExecuteVoid(wxT("SET log_statement='none';"));
@@ -1344,6 +1376,10 @@
{
delete connection;
connection=0;
+ statusTimer->Stop();
+ locksTimer->Stop();
+ xactTimer->Stop();
+ logTimer->Stop();
statusBar->SetStatusText(_("Connection broken."));
}
}
@@ -1825,7 +1861,7 @@
#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 @@
#endif
currentPane = PANE_LOCKS;
cbRate->SetValue(rateToCboString(locksRate));
- if (connection->BackendMinimumVersion(8, 0))
+ if (connection && connection->BackendMinimumVersion(8, 0))
{
if(lockList->GetSelectedItemCount() > 0)
{
--
Sent via pgadmin-support mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-support