[bug-13371] [perspective] resolving conflict

build: b2019032708

When I click save in the designer I see a empty resolve conflict window:

output console reports:

> 10:32:14.122 [AWT-EventQueue-0] INFO designer.update-and-save - resolving 1 conflicts...
> Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
> 	at java.base/java.util.Objects.requireNonNull(Unknown Source)
> 	at java.base/java.util.Optional.<init>(Unknown Source)
> 	at java.base/java.util.Optional.of(Unknown Source)
> 	at com.inductiveautomation.ignition.designer.project.ConflictResolutionDialog$ConflictPanel$FileDiffView.getData(ConflictResolutionDialog.java:577)
> 	at com.inductiveautomation.ignition.designer.project.ConflictResolutionDialog$ConflictPanel$FileDiffView.<init>(ConflictResolutionDialog.java:538)
> 	at com.inductiveautomation.ignition.designer.project.ConflictResolutionDialog$ConflictPanel.lambda$new$2(ConflictResolutionDialog.java:466)
> 	at java.base/java.util.ArrayList.forEach(Unknown Source)
> 	at com.inductiveautomation.ignition.designer.project.ConflictResolutionDialog$ConflictPanel.<init>(ConflictResolutionDialog.java:465)
> 	at com.inductiveautomation.ignition.designer.project.ConflictResolutionDialog.lambda$new$9(ConflictResolutionDialog.java:267)
> 	at java.desktop/javax.swing.JTree.fireValueChanged(Unknown Source)
> 	at java.desktop/javax.swing.JTree$TreeSelectionRedirector.valueChanged(Unknown Source)
> 	at java.desktop/javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(Unknown Source)
> 	at java.desktop/javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(Unknown Source)
> 	at java.desktop/javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(Unknown Source)
> 	at java.desktop/javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(Unknown Source)
> 	at com.inductiveautomation.ignition.designer.project.ConflictResolutionDialog.lambda$new$8(ConflictResolutionDialog.java:259)
> 	at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
> 	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
> 	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
> 	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
> 	at java.base/java.security.AccessController.doPrivileged(Native Method)
> 	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
> 	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
> 	at java.desktop/java.awt.WaitDispatchSupport$2.run(Unknown Source)
> 	at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
> 	at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
> 	at java.base/java.security.AccessController.doPrivileged(Native Method)
> 	at java.desktop/java.awt.WaitDispatchSupport.enter(Unknown Source)
> 	at java.desktop/java.awt.Dialog.show(Unknown Source)
> 	at java.desktop/java.awt.Component.show(Unknown Source)
> 	at java.desktop/java.awt.Component.setVisible(Unknown Source)
> 	at java.desktop/java.awt.Window.setVisible(Unknown Source)
> 	at java.desktop/java.awt.Dialog.setVisible(Unknown Source)
> 	at com.inductiveautomation.ignition.designer.project.ConflictResolutionDialog.resolve(ConflictResolutionDialog.java:130)
> 	at com.inductiveautomation.ignition.designer.IgnitionDesigner.pullAndResolve(IgnitionDesigner.java:1527)
> 	at com.inductiveautomation.ignition.designer.IgnitionDesigner.handleSave(IgnitionDesigner.java:1314)
> 	at com.inductiveautomation.ignition.designer.IgnitionDesigner$Handler.handleSaveAction(IgnitionDesigner.java:2596)
> 	at com.inductiveautomation.ignition.designer.IgnitionDesigner$Handler$5.actionPerformed(IgnitionDesigner.java:2200)
> 	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
> 	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
> 	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
> 	at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source)
> 	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
> 	at com.jidesoft.plaf.basic.BasicJideButtonListener.mouseReleased(Unknown Source)
> 	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
> 	at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
> 	at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
> 	at java.desktop/java.awt.Component.processEvent(Unknown Source)
> 	at java.desktop/java.awt.Container.processEvent(Unknown Source)
> 	at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
> 	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
> 	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
> 	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
> 	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
> 	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
> 	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
> 	at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
> 	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
> 	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
> 	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
> 	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
> 	at java.base/java.security.AccessController.doPrivileged(Native Method)
> 	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
> 	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
> 	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
> 	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
> 	at java.base/java.security.AccessController.doPrivileged(Native Method)
> 	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
> 	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
> Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
> 	at java.base/java.util.Objects.requireNonNull(Unknown Source)
> 	at java.base/java.util.Optional.<init>(Unknown Source)
> 	at java.base/java.util.Optional.of(Unknown Source)
> 	at com.inductiveautomation.ignition.designer.project.ConflictResolutionDialog$ConflictPanel$FileDiffView.getData(ConflictResolutionDialog.java:577)
> 	at com.inductiveautomation.ignition.designer.project.ConflictResolutionDialog$ConflictPanel$FileDiffView.<init>(ConflictResolutionDialog.java:538)
> 	at com.inductiveautomation.ignition.designer.project.ConflictResolutionDialog$ConflictPanel.lambda$new$2(ConflictResolutionDialog.java:466)
> 	at java.base/java.util.ArrayList.forEach(Unknown Source)
> 	at com.inductiveautomation.ignition.designer.project.ConflictResolutionDialog$ConflictPanel.<init>(ConflictResolutionDialog.java:465)
> 	at com.inductiveautomation.ignition.designer.project.ConflictResolutionDialog.lambda$new$9(ConflictResolutionDialog.java:267)
> 	at java.desktop/javax.swing.JTree.fireValueChanged(Unknown Source)
> 	at java.desktop/javax.swing.JTree$TreeSelectionRedirector.valueChanged(Unknown Source)
> 	at java.desktop/javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(Unknown Source)
> 	at java.desktop/javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(Unknown Source)
> 	at java.desktop/javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(Unknown Source)
> 	at java.desktop/javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(Unknown Source)
> 	at java.desktop/javax.swing.JTree.setSelectionPath(Unknown Source)
> 	at java.desktop/javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent(Unknown Source)
> 	at java.desktop/javax.swing.plaf.basic.BasicTreeUI$Handler.handleSelection(Unknown Source)
> 	at java.desktop/javax.swing.plaf.basic.BasicTreeUI$Handler.mousePressed(Unknown Source)
> 	at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
> 	at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
> 	at java.desktop/java.awt.Component.processEvent(Unknown Source)
> 	at java.desktop/java.awt.Container.processEvent(Unknown Source)
> 	at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
> 	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
> 	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
> 	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
> 	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
> 	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
> 	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
> 	at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
> 	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
> 	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
> 	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
> 	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
> 	at java.base/java.security.AccessController.doPrivileged(Native Method)
> 	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
> 	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
> 	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
> 	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
> 	at java.base/java.security.AccessController.doPrivileged(Native Method)
> 	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
> 	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
> 	at java.desktop/java.awt.WaitDispatchSupport$2.run(Unknown Source)
> 	at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
> 	at java.desktop/java.awt.WaitDispatchSupport$4.run(Unknown Source)
> 	at java.base/java.security.AccessController.doPrivileged(Native Method)
> 	at java.desktop/java.awt.WaitDispatchSupport.enter(Unknown Source)
> 	at java.desktop/java.awt.Dialog.show(Unknown Source)
> 	at java.desktop/java.awt.Component.show(Unknown Source)
> 	at java.desktop/java.awt.Component.setVisible(Unknown Source)
> 	at java.desktop/java.awt.Window.setVisible(Unknown Source)
> 	at java.desktop/java.awt.Dialog.setVisible(Unknown Source)
> 	at com.inductiveautomation.ignition.designer.project.ConflictResolutionDialog.resolve(ConflictResolutionDialog.java:130)
> 	at com.inductiveautomation.ignition.designer.IgnitionDesigner.pullAndResolve(IgnitionDesigner.java:1527)
> 	at com.inductiveautomation.ignition.designer.IgnitionDesigner.handleSave(IgnitionDesigner.java:1314)
> 	at com.inductiveautomation.ignition.designer.IgnitionDesigner$Handler.handleSaveAction(IgnitionDesigner.java:2596)
> 	at com.inductiveautomation.ignition.designer.IgnitionDesigner$Handler$5.actionPerformed(IgnitionDesigner.java:2200)
> 	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
> 	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
> 	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
> 	at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source)
> 	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
> 	at com.jidesoft.plaf.basic.BasicJideButtonListener.mouseReleased(Unknown Source)
> 	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
> 	at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
> 	at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
> 	at java.desktop/java.awt.Component.processEvent(Unknown Source)
> 	at java.desktop/java.awt.Container.processEvent(Unknown Source)
> 	at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
> 	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
> 	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
> 	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
> 	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
> 	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
> 	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
> 	at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
> 	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
> 	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
> 	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
> 	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
> 	at java.base/java.security.AccessController.doPrivileged(Native Method)
> 	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
> 	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
> 	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
> 	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
> 	at java.base/java.security.AccessController.doPrivileged(Native Method)
> 	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
> 	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
> 	at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
> 10:33:02.618 [AWT-EventQueue-0] INFO designer.update-and-save - conflict resolution cancelled.

Interesting. Any idea how you got into this state, ie reproduction steps? Also, could you send a .gwbk or project export in?

Myself and a colleague were working on the same view. I updated a onClick action event script first, and then they continued to update it. Then I experienced the above when I tried to save my designer. In the end I was able to click remote and applied.

1 Like

We can send project or gateway, which do you prefer and could you supply a private link?

Okay - I’ve opened an internal ticket to investigate. We’ll let you know if we need more info, or once this is resolved. Thanks for reporting.

1 Like

The ticket associated with this issue has been fixed as of 4/19.

Thank you!