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

Reply via email to