Omer Frenkel has posted comments on this change.

Change subject: events: removing vm.getStats from event processing
......................................................................


Patch Set 17:

(5 comments)

https://gerrit.ovirt.org/#/c/40205/17/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/EventVMStatsRefresher.java
File 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/EventVMStatsRefresher.java:

Line 79:                     VM dbVm = dbFacade.getVmDao().get(vmid);
Line 80: 
Line 81:                     VmInternalData vdsmVm = createVmInternal(entry, 
dbVm);
Line 82: 
Line 83:                     VmInternalData vmData = createVmInternalData(dbVm, 
(Map<String, Object>) map.get(vmid.toString()), notifyTime);
i still think we should merge createVmInternal and createVmInternalData to a 
single method return a single VmInternalData

the bug here still exists:

vdsmVm.hash is null (because we set it only to vmData), and this is the object 
we send to isDevicesChanged (line 92 below)

so the devicesChangedVms list will always be empty
Line 84:                     // make sure to ignore events from other hosts 
during migration
Line 85:                     // and process once the migration is done
Line 86:                     if (dbVm != null && (dbVm.getRunOnVds() == null
Line 87:                             || 
dbVm.getRunOnVds().equals(manager.getVdsId())


Line 84:                     // make sure to ignore events from other hosts 
during migration
Line 85:                     // and process once the migration is done
Line 86:                     if (dbVm != null && (dbVm.getRunOnVds() == null
Line 87:                             || 
dbVm.getRunOnVds().equals(manager.getVdsId())
Line 88:                             || 
(!dbVm.getRunOnVds().equals(manager.getVdsId()) && 
vmData.getVmDynamic().getStatus() == VMStatus.Up))) {
if dbVm is null we will get exception on the second part of the 'if'
Line 89:                         if (vmData != null) {
Line 90:                             changedVms.add(new Pair<>(dbVm, vmData));
Line 91:                         }
Line 92:                         if (isDevicesChanged(dbVm, vdsmVm)) {


Line 97:             }
Line 98: 
Line 99:             @SuppressWarnings("unchecked")
Line 100:             private VmInternalData createVmInternal(Map.Entry<String, 
Object> entry, VM dbVm) {
Line 101:                 VmDynamic vmdynamic = new 
VmDynamic(dbVm.getDynamicData());
db vm can be null (in case of external vms)
please add a null check
Line 102:                 vmdynamic.setId(new Guid((String) entry.getKey()));
Line 103:                 Map<String, Object> stats = (Map<String, Object>) 
entry.getValue();
Line 104:                 vmdynamic.setStatus(convertToVmStatus((String) 
stats.get(VdsProperties.status)));
Line 105:                 return new VmInternalData(vmdynamic, null, null, 
null);


Line 105:                 return new VmInternalData(vmdynamic, null, null, 
null);
Line 106:             }
Line 107: 
Line 108:             private VmInternalData createVmInternalData(VM dbVm, 
Map<String, Object> xmlRpcStruct, Double notifyTime) {
Line 109:                 VmDynamic vmDynamic = new VmDynamic();
this also should be based on dbVm because this is what we send to the 
monitoring (dont forget to check its not null)
Line 110:                 if (xmlRpcStruct.containsKey(VdsProperties.status)) {
Line 111:                     vmDynamic.setStatus(convertToVmStatus((String) 
xmlRpcStruct.get(VdsProperties.status)));
Line 112:                 }
Line 113: 


Line 131:                 } else {
Line 132:                     vmDynamic.setExitReason(VmExitReason.Unknown);
Line 133:                 }
Line 134: 
Line 135:                 return new VmInternalData(vmDynamic, 
dbVm.getStatisticsData(), null, new HashMap<String, LUNs>());
dbVm can be null
Line 136:             }
Line 137: 
Line 138:             private Double parseDouble(Object value) {
Line 139:                 if (Long.class.isInstance(value)) {


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

Gerrit-MessageType: comment
Gerrit-Change-Id: Ib15df9ce78bbb86c9284bdd6b772d0e6801db765
Gerrit-PatchSet: 17
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Piotr Kliczewski <piotr.kliczew...@gmail.com>
Gerrit-Reviewer: Arik Hadas <aha...@redhat.com>
Gerrit-Reviewer: Barak Azulay <bazu...@redhat.com>
Gerrit-Reviewer: Francesco Romani <from...@redhat.com>
Gerrit-Reviewer: Jenkins CI
Gerrit-Reviewer: Michal Skrivanek <mskri...@redhat.com>
Gerrit-Reviewer: Moti Asayag <masa...@redhat.com>
Gerrit-Reviewer: Omer Frenkel <ofren...@redhat.com>
Gerrit-Reviewer: Oved Ourfali <oourf...@redhat.com>
Gerrit-Reviewer: Piotr Kliczewski <piotr.kliczew...@gmail.com>
Gerrit-Reviewer: Roy Golan <rgo...@redhat.com>
Gerrit-Reviewer: automat...@ovirt.org
Gerrit-HasComments: Yes
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to