Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[incquery-dev] Query Explorer (and our tooling in general) is still badly broken

Hi all,

a problems mentioned in the recent bugzilla (https://bugs.eclipse.org/bugs/show_bug.cgi?id=428016) are still present (as of the current master). I was working with the EMFxcel sample (https://github.com/ujhelyiz/EMF-IncQuery-Examples/tree/master/emfxcel) while discovering these issues.

- the @QueryExplorer annotation is still incorrectly handled (e.g. a message= assignment makes the pattern disappear from the QE, unless display=true is given)


I have also found some new issues:

- the emfxcel example seems to incorrectly need dynamic EMF mode (but only after trying to re-initialize the queries, it works fine on the first run):

!ENTRY org.eclipse.incquery.patternlanguage.emf.ui 4 0 2014-02-16 11:24:18.415
!MESSAGE EMF-IncQuery encountered an error in processing the EMF model. This happened while trying to process new metamodel elements.

!STACK 0
org.eclipse.incquery.runtime.base.exception.IncQueryBaseException: NsURI (http://www.eclipse.org/emf/2002/Ecore) collision detected between different instances of EPackages. If this is normal, try using dynamic EMF mode.
	at org.eclipse.incquery.runtime.base.core.NavigationHelperContentAdapter.checkEPackage(NavigationHelperContentAdapter.java:595)




- incorrect error handling (causes no visible error reports in the EIQ editor, and makes the pattern disappear from the QE). Note: there was indeed an error in the EIQ, but the reporting was totally bogus and the whole system stopped working after this (see also next exception).

!ENTRY org.eclipse.ui 4 0 2014-02-16 11:14:47.301
!MESSAGE Unhandled event loop exception
!STACK 0
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.RuntimeException: org.eclipse.incquery.runtime.exception.IncQueryException: The following error occurred during the preparation of an EMF-IncQuery pattern matcher: Impossible to match pattern: exported pattern variable Nev can not be determined based on the pattern constraints. HINT: certain constructs (e.g. negative patterns or check expressions) cannot output symbolic parameters.)
	at org.eclipse.swt.SWT.error(SWT.java:4397)
	at org.eclipse.swt.SWT.error(SWT.java:4312)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:138)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3976)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3653)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:138)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:610)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1426)
Caused by: java.lang.RuntimeException: org.eclipse.incquery.runtime.exception.IncQueryException: The following error occurred during the preparation of an EMF-IncQuery pattern matcher: Impossible to match pattern: exported pattern variable Nev can not be determined based on the pattern constraints. HINT: certain constructs (e.g. negative patterns or check expressions) cannot output symbolic parameters.
	at org.eclipse.incquery.tooling.ui.queryexplorer.handlers.RuntimeMatcherRegistrator.run(RuntimeMatcherRegistrator.java:74)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
	... 24 more
Caused by: org.eclipse.incquery.runtime.exception.IncQueryException: The following error occurred during the preparation of an EMF-IncQuery pattern matcher: Impossible to match pattern: exported pattern variable Nev can not be determined based on the pattern constraints. HINT: certain constructs (e.g. negative patterns or check expressions) cannot output symbolic parameters.
	at org.eclipse.incquery.patternlanguage.emf.specification.SpecificationBuilder.getBodies(SpecificationBuilder.java:250)
	at org.eclipse.incquery.patternlanguage.emf.specification.SpecificationBuilder.buildBodies(SpecificationBuilder.java:232)
	at org.eclipse.incquery.patternlanguage.emf.specification.SpecificationBuilder.buildSpecification(SpecificationBuilder.java:196)
	at org.eclipse.incquery.patternlanguage.emf.specification.SpecificationBuilder.getOrCreateSpecification(SpecificationBuilder.java:155)
	at org.eclipse.incquery.tooling.ui.queryexplorer.util.QueryExplorerPatternRegistry.registerPatternModel(QueryExplorerPatternRegistry.java:129)
	at org.eclipse.incquery.tooling.ui.queryexplorer.handlers.RuntimeMatcherRegistrator.registerPatternsFromPatternModel(RuntimeMatcherRegistrator.java:113)
	at org.eclipse.incquery.tooling.ui.queryexplorer.handlers.RuntimeMatcherRegistrator.run(RuntimeMatcherRegistrator.java:71)
	... 26 more
Caused by: org.eclipse.incquery.runtime.matchers.planning.QueryPlannerException: Impossible to match pattern: exported pattern variable Nev can not be determined based on the pattern constraints. HINT: certain constructs (e.g. negative patterns or check expressions) cannot output symbolic parameters.
	at org.eclipse.incquery.runtime.matchers.psystem.basicdeferred.ExportedParameter.checkSanity(ExportedParameter.java:76)
	at org.eclipse.incquery.runtime.matchers.psystem.PBodyNormalizer.checkSanity(PBodyNormalizer.java:127)
	at org.eclipse.incquery.runtime.matchers.psystem.PBodyNormalizer.normalizeBody(PBodyNormalizer.java:58)
	at org.eclipse.incquery.patternlanguage.emf.specification.SpecificationBuilder.getBodies(SpecificationBuilder.java:246)
	... 32 more


- encountered after previous problem:

ENTRY org.eclipse.ui 4 0 2014-02-16 11:15:44.687
!MESSAGE Unhandled event loop exception
!STACK 0
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.IllegalStateException: Cannot edit query definition net.istvanrath.emfxcel.incquery.demo.CellInWorkSheet)
	at org.eclipse.swt.SWT.error(SWT.java:4397)
	at org.eclipse.swt.SWT.error(SWT.java:4312)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:138)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3976)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3653)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:138)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:610)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1426)
Caused by: java.lang.IllegalStateException: Cannot edit query definition net.istvanrath.emfxcel.incquery.demo.CellInWorkSheet
	at com.google.common.base.Preconditions.checkState(Preconditions.java:145)
	at org.eclipse.incquery.runtime.api.impl.BaseQuerySpecification.checkMutability(BaseQuerySpecification.java:90)
	at org.eclipse.incquery.runtime.matchers.psystem.PBody.checkMutability(PBody.java:194)
	at org.eclipse.incquery.runtime.matchers.psystem.PBody.getOrCreateVariableByName(PBody.java:141)
	at org.eclipse.incquery.patternlanguage.emf.specification.builder.EPMToPBody.getPNode(EPMToPBody.java:158)
	at org.eclipse.incquery.patternlanguage.emf.specification.builder.EPMToPBody.preProcessParameters(EPMToPBody.java:211)
	at org.eclipse.incquery.patternlanguage.emf.specification.builder.EPMToPBody.toPBody(EPMToPBody.java:107)
	at org.eclipse.incquery.patternlanguage.emf.specification.SpecificationBuilder.getBodies(SpecificationBuilder.java:245)
	at org.eclipse.incquery.patternlanguage.emf.specification.SpecificationBuilder.buildBodies(SpecificationBuilder.java:232)
	at org.eclipse.incquery.patternlanguage.emf.specification.SpecificationBuilder.buildSpecification(SpecificationBuilder.java:196)
	at org.eclipse.incquery.patternlanguage.emf.specification.SpecificationBuilder.getOrCreateSpecification(SpecificationBuilder.java:155)
	at org.eclipse.incquery.tooling.ui.queryexplorer.util.QueryExplorerPatternRegistry.registerPatternModel(QueryExplorerPatternRegistry.java:129)
	at org.eclipse.incquery.tooling.ui.queryexplorer.handlers.RuntimeMatcherRegistrator.registerPatternsFromPatternModel(RuntimeMatcherRegistrator.java:113)
	at org.eclipse.incquery.tooling.ui.queryexplorer.handlers.RuntimeMatcherRegistrator.run(RuntimeMatcherRegistrator.java:71)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
	... 24 more




I have encountered some additional issues related to the tooling in general:

- the builder runs (in my gut feeling) far too frequently. This is especially noticeable if you have many IncQuery projects open. I have seen several instances where disabling autobuild, editing one project, and then re-enabling autobuild triggers a build on _all_ incquery projects, which is very annoying.


- the cleaner is prone to weird exceptions such as

1 [Worker-5] ERROR org.eclipse.incquery  - Exception during Normal Clean!
java.lang.IllegalStateException: Inconsistent pattern declaration found. Expected net.istvanrath.emfxcel.incquery.demo.IITOnlabosHallgato, found net.istvanrath.emfxcel.incquery.demo.NemVetteFelAzOnlabot.
	at com.google.common.base.Preconditions.checkState(Preconditions.java:172)
	at org.eclipse.incquery.patternlanguage.emf.ui.builder.CleanSupport.internalNormalClean(CleanSupport.java:175)
	at org.eclipse.incquery.patternlanguage.emf.ui.builder.CleanSupport.normalClean(CleanSupport.java:149)
	at org.eclipse.incquery.patternlanguage.emf.ui.builder.EMFPatternLanguageBuilderParticipant.build(EMFPatternLanguageBuilderParticipant.java:125)

- when you edit an EIQ file, save it, and while you wait for the QE to refresh its contents, there is a weird inconsistent state which gets displayed where no patterns have matches yet. This is noticeable if you are working with large results sets where refresh operations are sufficiently slow. On a related note, didn’t we have a feature whereby the contents of large (1000+) result sets are cropped so the tree viewer is not a bottle neck? This seems to be gone, making working with complex examples a big pain.

We need to fix these ASAP.

cheers
Istvan



Istvan Rath, PhD
Research Fellow
Fault Tolerant Systems Research Group
Budapest University of Technology and Economics
rath@xxxxxxxxxx





Back to the top