Daniel Erez has uploaded a new change for review. Change subject: userportal: SearchResultsLimit race condition (#853904) ......................................................................
userportal: SearchResultsLimit race condition (#853904) https://bugzilla.redhat.com/853904 SearchableListModel - a race condition in SearchResultsLimit configuration value fetching prevented auto-refresh mechanism. * SearchableListModel -> Search() If 'SearchResultsLimit' isn't fetched yet, 'searchRequested' flag is marked on RequestSearch(). * RequestSearch() Clear model's items and raise changed events (affects only for first search). * 'GetSearchResultsLimit' -> OnSuccess() Search command should be invoked iff 'searchRequested' and model's timer isn't running (since Search starts the timer). Checking 'getIsTimerDisabled' is not sufficient since the timer is being started only *after* SearchResultsLimit value is fetched. * MainTabBasicDetailsView Add clear() method for cleaning details pane. Change-Id: Ibac4f4126feadbaec90ecc4981a9a23079ee715a Signed-off-by: Daniel Erez <[email protected]> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/tags/TagListModel.java M frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java M frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/basic/MainTabBasicDetailsView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/footer/AlertsEventsFooterView.java 5 files changed, 41 insertions(+), 5 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/81/8181/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java index 13a4f5e..2145580 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java @@ -876,6 +876,9 @@ public void RequestSearch() { searchRequested = true; + model.setItems(new ArrayList()); + model.getSelectedItemChangedEvent().raise(this, new EventArgs()); + model.getSelectedItemsChangedEvent().raise(this, new EventArgs()); } private void ApplySearchPageSize(int value) @@ -883,7 +886,7 @@ model.setSearchPageSize(value); // If there search was requested before max result limit was retrieved, do it now. - if (searchRequested && model.getIsTimerDisabled()) + if (searchRequested && !model.getTimer().isActive()) { model.getSearchCommand().Execute(); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/tags/TagListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/tags/TagListModel.java index 6d44bcc..b886f20 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/tags/TagListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/tags/TagListModel.java @@ -210,7 +210,7 @@ { super.ItemsChanged(); - if (getSelectionNodeList().isEmpty() && getAttachedTagsToEntities() != null) + if (getSelectionNodeList() != null && getSelectionNodeList().isEmpty() && getAttachedTagsToEntities() != null) { AttachedTagsToEntitiesChanged(); } diff --git a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java index 0a2ef57..0198a6c 100644 --- a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java +++ b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/presenter/tab/basic/MainTabBasicDetailsPresenterWidget.java @@ -37,6 +37,10 @@ void setEditConsoleEnabled(boolean enabled); HasClickHandlers getEditButton(); + + void clear(); + + void displayVmOsImages(boolean dispaly); } private final ConsoleUtils consoleUtils; @@ -91,9 +95,7 @@ if (modelProvider.getModel().getSelectedItem() == null) { return; } - @SuppressWarnings("unchecked") - Iterable<DiskImage> diskImages = modelProvider.getModel().getvmBasicDiskListModel().getItems(); - getView().editDistItems(diskImages); + setupDisks(modelProvider); } }); } @@ -104,9 +106,12 @@ @Override public void eventRaised(Event ev, Object sender, EventArgs args) { if (modelProvider.getModel().getSelectedItem() == null) { + getView().clear(); return; } getView().edit(modelProvider.getModel()); + getView().displayVmOsImages(true); + setupDisks(modelProvider); setupConsole(modelProvider); } @@ -126,6 +131,14 @@ })); } + private void setupDisks(final UserPortalBasicListProvider modelProvider) { + @SuppressWarnings("unchecked") + Iterable<DiskImage> diskImages = modelProvider.getModel().getvmBasicDiskListModel().getItems(); + if (diskImages != null) { + getView().editDistItems(diskImages); + } + } + private void setupConsole(final UserPortalBasicListProvider modelProvider) { UserPortalItemModel item = modelProvider.getModel().getSelectedItem(); diff --git a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/basic/MainTabBasicDetailsView.java b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/basic/MainTabBasicDetailsView.java index 5fb00bc..8a10723 100644 --- a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/basic/MainTabBasicDetailsView.java +++ b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/tab/basic/MainTabBasicDetailsView.java @@ -152,8 +152,25 @@ } @Override + public void displayVmOsImages(boolean dispaly) { + osImage.setVisible(dispaly); + vmImage.setVisible(dispaly); + } + + @Override public HasClickHandlers getEditButton() { return editProtocolLink; } + @Override + public void clear() { + vmName.setText(null); + vmDescription.setText(null); + protocolMessage.setText(null); + memory.setValue(null); + numberOfCores.setValue(null); + operatingSystem.getElement().setInnerHTML(""); //$NON-NLS-1$ + disks.clear(); + displayVmOsImages(false); + } } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/footer/AlertsEventsFooterView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/footer/AlertsEventsFooterView.java index d0d23b9..c8cffe7 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/footer/AlertsEventsFooterView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/footer/AlertsEventsFooterView.java @@ -201,6 +201,9 @@ } void setAlertCount(int count) { + if (alertImage == null) { + return; + } String countStr = constants.alertsEventFooter() + " (" + count + ")"; //$NON-NLS-1$ //$NON-NLS-2$ -- To view, visit http://gerrit.ovirt.org/8181 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibac4f4126feadbaec90ecc4981a9a23079ee715a Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Daniel Erez <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
