[
https://issues.apache.org/jira/browse/CLOUDSTACK-9796?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15876621#comment-15876621
]
ASF GitHub Bot commented on CLOUDSTACK-9796:
--------------------------------------------
Github user nathanejohnson commented on a diff in the pull request:
https://github.com/apache/cloudstack/pull/1956#discussion_r102305779
--- Diff:
engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java ---
@@ -744,14 +744,17 @@ protected boolean checkWorkItems(final VMInstanceVO
vm, final State state) throw
protected <T extends VMInstanceVO> boolean changeState(final T vm,
final Event event, final Long hostId, final ItWorkVO work, final Step step)
throws NoTransitionException {
// FIXME: We should do this better.
- final Step previousStep = work.getStep();
- _workDao.updateStep(work, step);
+ Step previousStep = null;
+ if (work != null) {
+ previousStep = work.getStep();
--- End diff --
I'm not sure I'm following. From reading the code a bit, it looks like the
only scenario where a false would be returned from stateTransitTo would be
where the state was not properly persisted to the db. No exception is thrown
in that case. In the current code, false *or* exception will try to revert.
Also, currently previousStep would *probably* never be null - though if work is
null this will cause another NPE on line 747 of current code. In the PR,
previousStep will *probably* only be null in the case where work is null.
What is the value of making a distinction from a false versus an exception
in this case? Me adding a check for previousStep != null is simply to make
sure that work is not null above. I could also check work for null here too,
but I don't think that's what you're getting at.
> Null Pointer Exception in VirtualMachineManagerImpl.java
> --------------------------------------------------------
>
> Key: CLOUDSTACK-9796
> URL: https://issues.apache.org/jira/browse/CLOUDSTACK-9796
> Project: CloudStack
> Issue Type: Bug
> Security Level: Public(Anyone can view this level - this is the
> default.)
> Affects Versions: 4.8.0, 4.9.0
> Environment: Cloudstack 4.8
> Reporter: Nathan Johnson
> Assignee: Nathan Johnson
> Priority: Minor
> Attachments: npelog.txt
>
>
> When a situation occurs where a VM hangs in the "Starting" state for longer
> than the job.expire.minutes, and the job is deleted from the system, a null
> pointer exception will occur because the work VO will be null inside of
> advanceStop in VirtualMachineManagerImpl.java . I have attached a snippet of
> a log file of this NPE occurring in the wild.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)