Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exception with ELK 0.5.0 #1911

Closed
philip-alldredge opened this issue Jul 22, 2019 · 14 comments
Closed

Exception with ELK 0.5.0 #1911

philip-alldredge opened this issue Jul 22, 2019 · 14 comments

Comments

@philip-alldredge
Copy link
Collaborator

@philip-alldredge philip-alldredge commented Jul 22, 2019

@lwrage FYI. Caused by ELK 0.5.0

Model: FlightGuidanceIMA_FlighGuidance.cmdflow with aircraft-example. Show contents of Platform and ApplicationSystem subcomponents.

When performing a layout, an exception occurs and is written to error log without notifying user. Depends on user settings and operation being performed, the user will have a diagram which has not been layed out or the operation will not be performed.

Seems to be related to:
eclipse/elk#382

java.lang.NullPointerException
at org.eclipse.elk.alg.layered.p5edges.loops.calculators.SelfLoopComponentDependencyGraphCalculator.calculateEdgeOrder(SelfLoopComponentDependencyGraphCalculator.java:242)
at org.eclipse.elk.alg.layered.p5edges.loops.calculators.SelfLoopComponentDependencyGraphCalculator.calculateEdgeOrder(SelfLoopComponentDependencyGraphCalculator.java:302)
at org.eclipse.elk.alg.layered.p5edges.loops.calculators.SelfLoopComponentDependencyGraphCalculator.calculateEdgeOrder(SelfLoopComponentDependencyGraphCalculator.java:302)
at org.eclipse.elk.alg.layered.p5edges.loops.calculators.SelfLoopComponentDependencyGraphCalculator.calculateEdgeDependecies(SelfLoopComponentDependencyGraphCalculator.java:200)
at org.eclipse.elk.alg.layered.intermediate.SelfLoopPlacer.process(SelfLoopPlacer.java:85)
at org.eclipse.elk.alg.layered.intermediate.SelfLoopPlacer.process(SelfLoopPlacer.java:1)
at org.eclipse.elk.alg.layered.ElkLayered.layout(ElkLayered.java:592)
at org.eclipse.elk.alg.layered.ElkLayered.doLayout(ElkLayered.java:152)
at org.eclipse.elk.alg.layered.LayeredLayoutProvider.layout(LayeredLayoutProvider.java:57)
at org.eclipse.elk.core.RecursiveGraphLayoutEngine.executeAlgorithm(RecursiveGraphLayoutEngine.java:248)
at org.eclipse.elk.core.RecursiveGraphLayoutEngine.layoutRecursively(RecursiveGraphLayoutEngine.java:216)
at org.eclipse.elk.core.RecursiveGraphLayoutEngine.layoutRecursively(RecursiveGraphLayoutEngine.java:198)
at org.eclipse.elk.core.RecursiveGraphLayoutEngine.layoutRecursively(RecursiveGraphLayoutEngine.java:198)
at org.eclipse.elk.core.RecursiveGraphLayoutEngine.layoutRecursively(RecursiveGraphLayoutEngine.java:198)
at org.eclipse.elk.core.RecursiveGraphLayoutEngine.layout(RecursiveGraphLayoutEngine.java:94)
at org.eclipse.elk.core.RecursiveGraphLayoutEngine.layout(RecursiveGraphLayoutEngine.java:72)
at org.osate.ge.internal.diagram.runtime.layout.DiagramElementLayoutUtil.layout(DiagramElementLayoutUtil.java:126)
at org.osate.ge.internal.diagram.runtime.layout.DiagramElementLayoutUtil.lambda$0(DiagramElementLayoutUtil.java:103)
at org.osate.ge.internal.diagram.runtime.AgeDiagram.runModification(AgeDiagram.java:129)
at org.osate.ge.internal.diagram.runtime.AgeDiagram.access$8(AgeDiagram.java:128)
at org.osate.ge.internal.diagram.runtime.AgeDiagram$AgeDiagramModificationAction.execute(AgeDiagram.java:761)
at org.osate.ge.internal.services.impl.DefaultActionService.execute(DefaultActionService.java:282)
at org.osate.ge.internal.services.impl.DefaultActionService.execute(DefaultActionService.java:276)
at org.osate.ge.internal.graphiti.features.AgeActionCustomFeature.execute(AgeActionCustomFeature.java:49)
at org.eclipse.graphiti.features.custom.AbstractCustomFeature.execute(AbstractCustomFeature.java:83)
at org.eclipse.graphiti.internal.command.GenericFeatureCommandWithContext.execute(GenericFeatureCommandWithContext.java:64)
at org.eclipse.graphiti.ui.internal.command.GefCommandWrapper.execute(GefCommandWrapper.java:51)
at org.eclipse.graphiti.ui.internal.editor.EmfOnGefCommand.execute(EmfOnGefCommand.java:54)
at org.eclipse.graphiti.internal.command.GFPreparableCommand2.doExecute(GFPreparableCommand2.java:43)
at org.eclipse.emf.transaction.RecordingCommand.execute(RecordingCommand.java:135)
at org.eclipse.emf.workspace.EMFCommandOperation.doExecute(EMFCommandOperation.java:119)
at org.eclipse.emf.workspace.AbstractEMFOperation.execute(AbstractEMFOperation.java:150)
at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:491)
at org.eclipse.emf.workspace.impl.WorkspaceCommandStackImpl.doExecute(WorkspaceCommandStackImpl.java:208)
at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:165)
at org.eclipse.graphiti.ui.internal.editor.GFWorkspaceCommandStackImpl.execute(GFWorkspaceCommandStackImpl.java:97)
at org.eclipse.graphiti.ui.internal.editor.GFCommandStack.execute(GFCommandStack.java:139)
at org.eclipse.graphiti.ui.editor.DiagramBehavior.executeFeature(DiagramBehavior.java:1133)
at org.osate.ge.internal.ui.editor.AgeDiagramBehavior.lambda$10(AgeDiagramBehavior.java:1108)
at org.osate.ge.internal.diagram.runtime.AgeDiagram.modify(AgeDiagram.java:120)
at org.osate.ge.internal.diagram.runtime.layout.DiagramElementLayoutUtil.layout(DiagramElementLayoutUtil.java:103)
at org.osate.ge.internal.diagram.runtime.layout.DiagramElementLayoutUtil.layout(DiagramElementLayoutUtil.java:74)
at org.osate.ge.internal.ui.handlers.LayoutDiagramHandler.execute(LayoutDiagramHandler.java:18)
at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:294)
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:96)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:320)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:254)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:173)
at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:156)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:497)
at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:490)
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:438)
at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.handleWidgetSelection(AbstractContributionItem.java:449)
at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.lambda$2(AbstractContributionItem.java:475)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4131)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1055)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3944)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3547)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1173)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1062)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:566)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:155)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:661)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597)
at org.eclipse.equinox.launcher.Main.run(Main.java:1476)

@philip-alldredge
Copy link
Collaborator Author

@philip-alldredge philip-alldredge commented Jul 22, 2019

I am unsure when OSATE moved to ELK 0.5.0 the 2.5.0 release contains it.

@philip-alldredge
Copy link
Collaborator Author

@philip-alldredge philip-alldredge commented Jul 22, 2019

@lwrage this is something that is easy to workaround for degraded layout capabilities. Degraded compared to when ELK is fully functional. I recommend that I implement a workaround and that it is included in the 2.5.1 release.

philip-alldredge added a commit that referenced this issue Jul 22, 2019
@philip-alldredge philip-alldredge added this to the 2.5.1 milestone Jul 22, 2019
philip-alldredge added a commit that referenced this issue Jul 22, 2019
@lwrage
Copy link
Contributor

@lwrage lwrage commented Mar 31, 2020

@philip-alldredge ELK 0.6.0 and 0.6.1 are available. Could you try and see if upgrading fixes the issue?

@philip-alldredge
Copy link
Collaborator Author

@philip-alldredge philip-alldredge commented Apr 6, 2020

It fixed the issue in some cases but it still throws a NPE exception in others. I'll try to put together a minimal example and report to ELK developers. I'll add/modify our workaround to the case that throws the exception if possible.

philip-alldredge added a commit that referenced this issue Apr 6, 2020
Improved #1911. Flow paths are still not layed out if the container
contains an expanded feature groups.
@philip-alldredge
Copy link
Collaborator Author

@philip-alldredge philip-alldredge commented Apr 6, 2020

@lwrage I looked into the issue and ELK 0.6.1 removes the need for some of our workarounds. However, there is still a case that a NPE is thrown. I've opened an issue with ELK. I would still recommend upgrading to ELK 0.6.1 because it will improve our layout capabilities. The opened pull request prevents the NPE from occurring.

@philip-alldredge
Copy link
Collaborator Author

@philip-alldredge philip-alldredge commented Apr 17, 2020

#2268 is ready to be merged. However, completely solving this issue will need to wait until the next version of ELK. eclipse/elk#548 should fix the remaining issue. Once that is released, we can remove our remaining workaround.

@philip-alldredge
Copy link
Collaborator Author

@philip-alldredge philip-alldredge commented May 11, 2020

@lwrage while working on same layout improvements, I came across an ELK exception. This problems affects the nightly builds. A new stable release shouldn't be issued until we resolve it. It's the same issue as mentioned above but it has a much wider impact than I realized. I'm looking into how we can work around the issue and I also intend to experiment with the ELK nightly to verify that it will be fixed in the next ELK release.

@lwrage
Copy link
Contributor

@lwrage lwrage commented May 11, 2020

@philip-alldredge If you find that a certain elk nightly build works we can (temporarily) use that for our nightly builds. If you create a full copy of that site we can host it on osate-build.

@philip-alldredge
Copy link
Collaborator Author

@philip-alldredge philip-alldredge commented May 12, 2020

@lwrage What is the process of doing that? Once I find an offline archive of the preferred nightly build, can I send it to you to host? What is the best way to send it?

@lwrage
Copy link
Contributor

@lwrage lwrage commented May 12, 2020

@philip-alldredge
Copy link
Collaborator Author

@philip-alldredge philip-alldredge commented May 12, 2020

@lwrage so a copy of the nightly update site from the ELK site isn't sufficient? What do I need to give you and how? An entire p2 mirror or just the elk portion?

@lwrage
Copy link
Contributor

@lwrage lwrage commented May 12, 2020

@philip-alldredge
Copy link
Collaborator Author

@philip-alldredge philip-alldredge commented May 14, 2020

While I'd like to get this updated as soon as possible, there is another, less critical, ELK issue that the developers are looking into. I'd like to wait a week to give them a chance to investigate. Otherwise, I can go ahead and select a nightly.

@lwrage
Copy link
Contributor

@lwrage lwrage commented May 14, 2020

Whatever works best for you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

2 participants