modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortletUtil.java
| 5 ++++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
| 3 ++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalColumn.java
| 2 ++
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
| 4 ----
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java
| 4 ++++
5 files changed, 12 insertions(+), 6 deletions(-)
New commits:
commit a4b6506d915ea2ef26ff92005c46f0d6947eee7c
Author: Jay Shaughnessy <jshaughn(a)redhat.com>
Date: Fri Jun 1 14:33:07 2012 -0400
[Bug 827150 - Dashboard portlets left running queries in background]
There were a few issues here.
First, whenever the dash was re-built (when the refresh period changed
or a portlet was deleted, and maybe other scenarios) old portlets may have been
left with stale references, leaving them around, undrawn, but for auto-refresh
portlets, still querying the server at their refresh intervals. Note
that this happens *even when* proper destroy() calls have been made.
Second, we had protection in place not to refresh hidden portlets, but
undrawn/visible portlets (like the ones in this scenario) still refreshed. So,
I beefed up that check just to block backend queries in a similar situation.
Third, we shouldn't even have been rebuilding the dash when changing the
refresh interval, the refresh period update was already being applied to the
existing portlets. So, stopped that from happening. This may have actually solved a
different problem I've noticed, a double-rendering of the dash on he very
first login for a user. I think because we set the refresh period for
the first time.
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortletUtil.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortletUtil.java
index 00e51ac..8f0ca51 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortletUtil.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/AutoRefreshPortletUtil.java
@@ -38,6 +38,7 @@ public class AutoRefreshPortletUtil {
//cancel any existing timer
if (null != refreshTimer) {
refreshTimer.cancel();
+ refreshTimer = null;
}
if (refreshInterval >= MeasurementUtility.MINUTES) {
@@ -48,7 +49,9 @@ public class AutoRefreshPortletUtil {
// if the portlet is already refreshing or if the portlet is not
currently on screen then
// don't bother doing the work. this protects against unnecessary
or unwanted db queries
// being performed in the background.
- if (!autoRefreshPortlet.isRefreshing() &&
autoRefreshPortletCanvas.isVisible()) {
+ if (!autoRefreshPortlet.isRefreshing() &&
autoRefreshPortletCanvas.isDrawn()
+ && autoRefreshPortletCanvas.isVisible()) {
+
autoRefreshPortlet.refresh();
}
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
index ac85aad..6c6544c 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/DashboardView.java
@@ -196,6 +196,8 @@ public class DashboardView extends LocatableVLayout {
portalLayout.destroy();
portalLayout = null;
+ portletWindows.clear();
+
buildPortlets();
}
@@ -548,7 +550,6 @@ public class DashboardView extends LocatableVLayout {
}
private void loadPortletWindows() {
-
for (int i = 0; i < storedDashboard.getColumns(); i++) {
for (DashboardPortlet storedPortlet : storedDashboard.getPortlets(i)) {
String locatorId = getPortletLocatorId(portalLayout, storedPortlet);
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalColumn.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalColumn.java
index fcc65b4..a68c1ae 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalColumn.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/PortalColumn.java
@@ -78,7 +78,9 @@ public class PortalColumn extends VStack {
@Override
public void destroy() {
+ removeFromParent();
SeleniumUtility.destroyMembers(this);
+
super.destroy();
}
}
\ No newline at end of file
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
index a3aff3a..9c10889 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/dashboard/portlets/recent/alerts/AbstractRecentAlertsPortlet.java
@@ -116,10 +116,6 @@ public abstract class AbstractRecentAlertsPortlet extends
AlertHistoryView imple
return refreshTimer;
}
- public void setRefreshTimer(Timer refreshTimer) {
- this.refreshTimer = refreshTimer;
- }
-
public PortletWindow getPortletWindow() {
return portletWindow;
}
diff --git
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java
index 09279cd..4847085 100644
---
a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java
+++
b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/util/preferences/UserPreferences.java
@@ -64,8 +64,12 @@ public class UserPreferences {
private static ArrayList<String> preferencesThatShouldNotCauseRefresh;
static {
preferencesThatShouldNotCauseRefresh = new ArrayList<String>();
+ // this is auto-set while navigating around and does not affect the current page
preferencesThatShouldNotCauseRefresh.add(UserPreferenceNames.RECENT_RESOURCES);
+ // this is auto-set while navigating around and does not affect the current page
preferencesThatShouldNotCauseRefresh.add(UserPreferenceNames.RECENT_RESOURCE_GROUPS);
+ // this update is already applied to current portlets by the dashboard impl
+
preferencesThatShouldNotCauseRefresh.add(UserPreferenceNames.PAGE_REFRESH_PERIOD);
}
public UserPreferences(Subject subject) {
Show replies by date