"Deploy All Metadata" experiences Null Pointer Exception - Causes Deploy to fail without notifying user of problems

Issue #237 resolved
Vivek M. Chawla created an issue

I have an IDEA project with two Illuminated Cloud modules. Each module points to a different Salesforce org.

After adding several hundred files to one of the modules by pulling / merging from a Git repo, I tried to push the new and modified metadata to that module's associated org by using the "Deploy All Metadata" feature.

In the "Select Deployment Scope" dialog, I selected the appropriate Connection, and for "Contents" I selected the name of the module I wanted to deploy. I left the "Filter by Content Selection" box unchecked.

From my perspective as a user, the UI showed the "Comparing Local and Server Metadata States" progress pop-up. The progress bar got close to completion, and then it disappears. Nothing happens from that point on, and I have no idea if the deploy succeeded or failed.

By looking into the idea.log file, it looks like there is a null-pointer exception that is causing the problem. I have emailed you the idea.log folder directly, but here is a small snippet:

-31 13:40:52,436 [1466340]  DEBUG - tellij.builder.ForceComBuilder - Local file not on server: /IDEA/SAMPLE_PROJECT2/AMXPACKAGE/src/workflows/WorkPerformanceCycle.workflow 
2016-01-31 13:40:52,667 [1466571]  ERROR - llij.ide.plugins.PluginManager - null 
java.lang.NullPointerException
    at com.illuminatedcloud.intellij.builder.ForceComBuilder.validateConflicts(SourceFile:2390)
    at com.illuminatedcloud.intellij.builder.ForceComBuilder.fullBuild(SourceFile:2477)
    at com.illuminatedcloud.intellij.builder.FullBuildAction.build(SourceFile:17)
    at com.illuminatedcloud.intellij.builder.AbstractDeployAction.doActionPerformed(SourceFile:84)
    at com.illuminatedcloud.intellij.builder.AbstractBuildAction.actionPerformed(SourceFile:86)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:182)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter$1.run(ActionMenuItem.java:311)
    at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:958)
    at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:124)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:281)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:109)
    at com.intellij.ui.plaf.beg.BegMenuItemUI.a(BegMenuItemUI.java:513)
    at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:45)
    at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:533)
    at java.awt.Component.processMouseEvent(Component.java:6535)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6300)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4891)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4713)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2750)
    at java.awt.Component.dispatchEvent(Component.java:4713)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at com.intellij.ide.IdeEventQueue.c(IdeEventQueue.java:866)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:650)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:381)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
2016-01-31 13:40:52,668 [1466572]  ERROR - llij.ide.plugins.PluginManager - IntelliJ IDEA 15.0.3  Build #IU-143.1821.5 
2016-01-31 13:40:52,668 [1466572]  ERROR - llij.ide.plugins.PluginManager - JDK: 1.8.0_40-release 
2016-01-31 13:40:52,668 [1466572]  ERROR - llij.ide.plugins.PluginManager - VM: OpenJDK 64-Bit Server VM 
2016-01-31 13:40:52,668 [1466572]  ERROR - llij.ide.plugins.PluginManager - Vendor: JetBrains s.r.o 
2016-01-31 13:40:52,668 [1466572]  ERROR - llij.ide.plugins.PluginManager - OS: Mac OS X 
2016-01-31 13:40:52,668 [1466572]  ERROR - llij.ide.plugins.PluginManager - Last Action: IlluminatedCloud.FullBuild 
2016-01-31 13:40:52,739 [1466643]  DEBUG - tellij.builder.ForceComBuilder - Initialized local source caches for 46 files in 62 ms. 
2016-01-31 13:40:52,773 [1466677]  DEBUG - tellij.builder.ForceComBuilder - Initialized local source caches for 46 files in 86 ms. 

I have verified that I can deploy to server by "saving" metadata one file at a time. I have also verified that I can deploy a single folder, and even multiple folders using the "selected" scope. Seems like the problem is only showing up when I try to deploy the entire module.

Comments (5)

  1. Scott Wells repo owner

    It appears that one of the files being deployed has been most recently changed by another user and is therefore a potential conflict, but unfortunately the specifics of the user aren't being returned by the API call. As a result, getLastModifiedByUser().getName() is causing the NPE. I can (and will!) obviously be defensive against this situation, but it's a little strange that the last modified by user info isn't being returned...

  2. Scott Wells repo owner

    Okay, I added defensive handling of this situation as well as logging when it happens. This will be in the next build.

  3. Scott Wells repo owner

    Should be fixed in 1.6.8.2, though you won't get the exact conflicting username in these situations, just the user ID at most.

  4. Log in to comment