Yevgeny Zaspitsky has uploaded a new change for review.

Change subject: engine: fix StoragePoolStatusHandler initialization
......................................................................

engine: fix StoragePoolStatusHandler initialization

The patch is about fixing NPE in the engine start up.

SchedulerUtilQuartzImpl could not be injected by CDI into
StoragePoolStatusHandler as the last one isn't a managed bean.
Thus schedulerUtil member remained uninitiallized which caused the NPE.

Change-Id: I6ca052e8cc564bb7291199dc1f79849a4e2580b8
Signed-off-by: Yevgeny Zaspitsky <yzasp...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StoragePoolStatusHandler.java
1 file changed, 17 insertions(+), 10 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/27/42227/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StoragePoolStatusHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StoragePoolStatusHandler.java
index 5e650d9..4c78e1c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StoragePoolStatusHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StoragePoolStatusHandler.java
@@ -2,39 +2,42 @@
 
 import java.util.HashMap;
 import java.util.List;
+import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 
 import org.ovirt.engine.core.bll.Backend;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.action.SetStoragePoolStatusParameters;
 import org.ovirt.engine.core.common.action.VdcActionType;
-import org.ovirt.engine.core.common.businessentities.StoragePoolStatus;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
+import org.ovirt.engine.core.common.businessentities.StoragePoolStatus;
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
+import org.ovirt.engine.core.di.Injector;
 import org.ovirt.engine.core.utils.timer.OnTimerMethodAnnotation;
 import org.ovirt.engine.core.utils.timer.SchedulerUtil;
 import org.ovirt.engine.core.utils.timer.SchedulerUtilQuartzImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.inject.Inject;
-
 public final class StoragePoolStatusHandler {
     private static final Logger log = 
LoggerFactory.getLogger(StoragePoolStatusHandler.class);
 
     private static HashMap<Guid, StoragePoolStatusHandler> 
_nonOperationalPools = new HashMap<>();
 
-    private Guid poolId;
-    private String timerId;
-    @Inject
-    private SchedulerUtilQuartzImpl schedulerUtil;
+    private final Guid poolId;
+    private final SchedulerUtilQuartzImpl schedulerUtil;
 
-    private StoragePoolStatusHandler(Guid poolId) {
+    private String timerId;
+
+    private StoragePoolStatusHandler(Guid poolId, SchedulerUtilQuartzImpl 
schedulerUtil) {
+        Objects.requireNonNull(schedulerUtil, "schedulerUtil cannot be null");
+
         this.poolId = poolId;
-        timerId = null;
+        this.schedulerUtil = schedulerUtil;
+        this.timerId = null;
     }
 
     protected SchedulerUtil getScheduler() {
@@ -85,7 +88,11 @@
             }
         } else if (status == StoragePoolStatus.NotOperational) {
             synchronized (_nonOperationalPools) {
-                _nonOperationalPools.put(poolId, new 
StoragePoolStatusHandler(poolId).scheduleTimeout());
+                final SchedulerUtilQuartzImpl schedulerUtil = 
Injector.get(SchedulerUtilQuartzImpl.class);
+                final StoragePoolStatusHandler storagePoolStatusHandler = new 
StoragePoolStatusHandler(
+                        poolId,
+                        schedulerUtil);
+                _nonOperationalPools.put(poolId, 
storagePoolStatusHandler.scheduleTimeout());
             }
         }
     }


-- 
To view, visit https://gerrit.ovirt.org/42227
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6ca052e8cc564bb7291199dc1f79849a4e2580b8
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Yevgeny Zaspitsky <yzasp...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to