parttimenerd / intellij-profiler-plugin

IntelliJ plugin to view JFR profiler files and to profile using JFR
Other
53 stars 4 forks source link

Conflict with IntelliJ core #6

Open JohannesLichtenberger opened 1 year ago

JohannesLichtenberger commented 1 year ago

Hi Johannes, after the plugin update, I'm now getting a box, that the plugin is conflicting with IntelliJ core and it has to be disabled and IntelliJ needs to restart (Ultimate), sadly.

parttimenerd commented 1 year ago

This is not great. Thanks for reporting the issue. I didn't really change that much in the update and the plugin verifier shows no problems too. Could you try to uninstall and then reinstall it and send me error traces if available?

I'm going to try the update process myself in the morning (albeit with only the community edition).

JohannesLichtenberger commented 1 year ago

Where are the error traces stored? Sadly I currently can't print the screen on Mate/Cinnamon for some reason (print somehow opens the IntelliJ file menu strange enough).

JohannesLichtenberger commented 1 year ago

So, I'll have to go to bed now, too... greetings from Freiburg (I think you're in Karlsruhe / nearby?) :-)

parttimenerd commented 1 year ago

Greetings from Karlsruhe, if you ever come to Karlsruhe, drop me a message.

parttimenerd commented 1 year ago

It seems to me that the .jfr file type is possibly registered to the Ultimate profiler. Could you verify, that you can open JFR files without the plugin?

And could you uninstall and then reinstall the new version of my plugin?

JohannesLichtenberger commented 1 year ago

Yes, I can view JFR files with the integrated async-profiler/JFR stuff from IntelliJ Ultimate -- that's probably the only thing I'm using right now from Ultimate (and only for my OSS projects -- SirixDB/Brackit; that's why I got a few licenses from JetBrains for free). I'll check in the evening after work, but yesterday uninstall/reinstall didn't help.

JohannesLichtenberger commented 1 year ago

Did you already change something?

parttimenerd commented 1 year ago

No, but I could not reproduce in IntelliJ community, but I found a similar issue for a different project, which had problems with conflicting file types.

parttimenerd commented 1 year ago

I modified the JFR file type name. This should hopefully help. Version 0.0.4 should be in the JetBrains marketplace soon and can be downloaded from the releases page.

JohannesLichtenberger commented 1 year ago

Stupid question, but I can only find latest + 0.0.3 on the releases page: https://github.com/parttimenerd/intellij-profiler-plugin/releases

parttimenerd commented 1 year ago

I was the development release, but I created a proper 0.0.4 release.

JohannesLichtenberger commented 1 year ago

Ah ok, thanks :-)

JohannesLichtenberger commented 1 year ago

This particular issue is fixed. But still, somehow after the method executed, the flamegraph and so on is not shown :-/

Maybe I'll have to switch to the community edition for now?

parttimenerd commented 1 year ago

This particular issue is fixed. But still, somehow after the method executed, the flamegraph and so on is not shown :-/

This is really weird. Can you click on the profile.jfr file and open it?

JohannesLichtenberger commented 1 year ago

Where do you store the generated JFR files? In my home folder where IJ Ultimate usually stores the files, it's not generated. The options however are available. I'm using the async profiler option usually

parttimenerd commented 1 year ago

In the project main folder.

JohannesLichtenberger commented 1 year ago

hmm, weird... nothing generated it seems

parttimenerd commented 1 year ago

Could you give me the text in the "Profiling [...]" tab in the lower part of the IDE?

image
JohannesLichtenberger commented 1 year ago

There's no such output:


> Task :sirix-core:compileJava UP-TO-DATE
> Task :sirix-xquery:compileKotlin NO-SOURCE
> Task :sirix-xquery:compileJava UP-TO-DATE
> Task :sirix-xquery:processResources UP-TO-DATE
> Task :sirix-xquery:classes UP-TO-DATE
> Task :sirix-xquery:generatePomFileForMavenPublication
> Task :sirix-xquery:jar UP-TO-DATE
> Task :sirix-core:processResources UP-TO-DATE
> Task :sirix-core:classes UP-TO-DATE
> Task :sirix-core:generatePomFileForMavenPublication
> Task :sirix-core:jar UP-TO-DATE
> Task :sirix-core:compileTestJava UP-TO-DATE
> Task :sirix-core:processTestResources UP-TO-DATE
> Task :sirix-core:testClasses UP-TO-DATE
> Task :sirix-core:testsJar UP-TO-DATE
> Task :sirix-xquery:inspectClassesForKotlinIC UP-TO-DATE
> Task :sirix-xquery:compileTestKotlin NO-SOURCE
> Task :sirix-xquery:compileTestJava UP-TO-DATE
> Task :sirix-xquery:processTestResources UP-TO-DATE
> Task :sirix-xquery:testClasses UP-TO-DATE
> Task :sirix-xquery:test
21:59:22,026 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback-test.xml] at [file:/home/johannes/IdeaProjects/sirix/bundles/sirix-xquery/build/resources/test/logback-test.xml]
21:59:22,026 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs multiple times on the classpath.
21:59:22,026 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs at [jar:file:/home/johannes/IdeaProjects/sirix/bundles/sirix-core/build/libs/sirix-core-0.9.7-SNAPSHOT-tests.jar!/logback-test.xml]
21:59:22,026 |-WARN in ch.qos.logback.classic.LoggerContext[default] - Resource [logback-test.xml] occurs at [file:/home/johannes/IdeaProjects/sirix/bundles/sirix-xquery/build/resources/test/logback-test.xml]
21:59:22,050 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
21:59:22,050 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
21:59:22,054 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
21:59:22,057 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
21:59:22,068 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to ERROR
21:59:22,069 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
21:59:22,069 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
21:59:22,069 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@5d12a356 - Registering current configuration as safe fallback point

BUILD SUCCESSFUL in 12s
15 actionable tasks: 3 executed, 12 up-to-date
9:59:33 PM: Execution finished ':sirix-xquery:test --tests "org.sirix.xquery.node.SirixXMark111mbTest.xmark01"'.
parttimenerd commented 1 year ago

Oh, this is weird. Let's schedule a meeting, so you can share your screen. It's pretty hard to remotely access the problem, so please write me a mail.

JohannesLichtenberger commented 1 year ago

Hey, just tried the new plugin version, as there was another issue with the same problem. I can now see the visualizations..., but I'm getting the following PluginException based on the underlying ClassNotFoundException. This is the stacktrace:

com.intellij.diagnostic.PluginException: Cannot create extension (class=me.bechberger.jfrplugin.runner.JFRErrorHandler) [Plugin: me.bechberger.jfrplugin]
    at com.intellij.serviceContainer.ComponentManagerImpl.createError(ComponentManagerImpl.kt:1051)
    at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.doCreateInstance(XmlExtensionAdapter.kt:70)
    at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.createInstance(XmlExtensionAdapter.kt:31)
    at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapter(ExtensionPointImpl.java:473)
    at com.intellij.openapi.extensions.impl.ExtensionPointImpl.processAdapters(ExtensionPointImpl.java:421)
    at com.intellij.openapi.extensions.impl.ExtensionPointImpl.computeExtensionList(ExtensionPointImpl.java:249)
    at com.intellij.openapi.extensions.impl.ExtensionPointImpl.getExtensionList(ExtensionPointImpl.java:243)
    at com.intellij.openapi.extensions.ExtensionPointName.getExtensionList(ExtensionPointName.java:39)
    at com.intellij.diagnostic.IdeErrorsDialog.getSubmitter(IdeErrorsDialog.java:944)
    at com.intellij.diagnostic.IdeErrorsDialog.getSubmitter(IdeErrorsDialog.java:934)
    at com.intellij.diagnostic.DefaultIdeaErrorLogger.canHandle(DefaultIdeaErrorLogger.java:51)
    at com.intellij.diagnostic.DialogAppender.appendToLoggers(DialogAppender.java:95)
    at com.intellij.diagnostic.DialogAppender.lambda$queueAppend$0(DialogAppender.java:79)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:779)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:730)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:724)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:749)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:909)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:756)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$5(IdeEventQueue.java:437)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:436)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
    at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:615)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:434)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:838)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:480)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
Caused by: java.lang.ClassNotFoundException: me.bechberger.jfrplugin.runner.JFRErrorHandler PluginClassLoader(plugin=PluginDescriptor(name=Java JFR Profiler, id=me.bechberger.jfrplugin, descriptorPath=plugin.xml, path=~/.local/share/JetBrains/IntelliJIdea2022.3/intellij-profiler-plugin, version=0.0.6, package=null, isBundled=false), packagePrefix=null, instanceId=167, state=active)
    at com.intellij.serviceContainer.ComponentManagerImplKt.doLoadClass(ComponentManagerImpl.kt:1519)
    at com.intellij.serviceContainer.ComponentManagerImplKt.access$doLoadClass(ComponentManagerImpl.kt:1)
    at com.intellij.serviceContainer.ComponentManagerImpl.loadClass(ComponentManagerImpl.kt:941)
    at com.intellij.openapi.extensions.impl.InterfaceExtensionImplementationClassResolver.resolveImplementationClass(InterfaceExtensionImplementationClassResolver.kt:24)
    at com.intellij.openapi.extensions.impl.XmlExtensionAdapter.doCreateInstance(XmlExtensionAdapter.kt:49)
    ... 34 more

Furthermore I thought I can drill down into the flamegraph by clicking on a method/box, but afterwards the window disappeared.

parttimenerd commented 1 year ago

Oh, I missed implementing an error handler.