[ 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)