You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2023/01/24 12:23:00 UTC

[jira] [Commented] (TINKERPOP-2647) :uninstall without first disabling a plugin will lead to error on startup

    [ https://issues.apache.org/jira/browse/TINKERPOP-2647?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17680192#comment-17680192 ] 

ASF GitHub Bot commented on TINKERPOP-2647:
-------------------------------------------

AmatyaAvadhanula opened a new pull request, #1950:
URL: https://github.com/apache/tinkerpop/pull/1950

   Fixes https://issues.apache.org/jira/browse/TINKERPOP-2647
   
   When a plugin is used and uninstalled without being deactivated first, the console would fail to start up. This PR aims to deactivate such plugins when uninstall is called to prevent errors.
   
   Ran `mvn clean install` to success and performed manual testing in the Gremlin Console




> :uninstall without first disabling a plugin will lead to error on startup
> -------------------------------------------------------------------------
>
>                 Key: TINKERPOP-2647
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-2647
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: console
>    Affects Versions: 3.4.12
>            Reporter: Stephen Mallette
>            Priority: Trivial
>
> In the Gremlin Console, if you add a plugin like:
> {code}
> gremlin> :install org.apache.tinkerpop spark-gremlin 3.6.0-SNAPSHOT
> ==>loaded: [org.apache.tinkerpop, spark-gremlin, 3.6.0-SNAPSHOT] - restart the console to use [tinkerpop.spark]
> gremlin> :plugin use tinkerpop.spark
> ==>tinkerpop.spark activated
> {code}
> and then you choose to remove it:
> {code}
> gremlin> :uninstall spark-gremlin
> ==>Uninstalled spark-gremlin - restart the console for removal to take effect
> gremlin> :x
> {code}
> When you restart, the console will be in a bad state and produce this sort of exception:
> {code}
> $ bin/gremlin.sh
>          \,,,/
>          (o o)
> -----oOOo-(3)-oOOo-----
> plugin activated: tinkerpop.server
> plugin activated: tinkerpop.utilities
> plugin activated: tinkerpop.tinkergraph
> plugin activated: tinkerpop.spark
> gremlin> :uninstall tinkerpop.spark
> ==>There is no module with the name tinkerpop.spark to remove - /home/smallette/git/apache/tinkerpop/gremlin-console/target/apache-tinkerpop-gremlin-console-3.6.0-SNAPSHOT-standalone/ext/tinkerpop.spark
> gremlin> :uninstall spark-gremlin
> ==>Uninstalled spark-gremlin - restart the console for removal to take effect
> gremlin> :x
> smallette@ubuntu-vm:~/git/apache/tinkerpop/gremlin-console/target/apache-tinkerpop-gremlin-console-3.6.0-SNAPSHOT-standalone$ bin/gremlin.sh
>          \,,,/
>          (o o)
> -----oOOo-(3)-oOOo-----
> plugin activated: tinkerpop.server
> plugin activated: tinkerpop.utilities
> plugin activated: tinkerpop.tinkergraph
> Exception in thread "main" java.lang.NullPointerException: Cannot invoke method activate() on null object
> 	at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91)
> 	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:43)
> 	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
> 	at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:34)
> 	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
> 	at org.apache.tinkerpop.gremlin.console.PluggedIn$activate.call(Unknown Source)
> 	at org.apache.tinkerpop.gremlin.console.Console$_closure18.doCall(Console.groovy:149)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:498)
> 	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101)
> 	at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
> 	at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:263)
> 	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041)
> 	at groovy.lang.Closure.call(Closure.java:405)
> 	at groovy.lang.Closure.call(Closure.java:421)
> 	at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2330)
> 	at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2315)
> 	at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2356)
> 	at org.codehaus.groovy.runtime.dgm$186.invoke(Unknown Source)
> 	at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:244)
> 	at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
> 	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
> 	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
> 	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
> 	at org.apache.tinkerpop.gremlin.console.Console.<init>(Console.groovy:147)
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> 	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
> 	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> 	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
> 	at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:80)
> 	at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105)
> 	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)
> 	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:237)
> 	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:265)
> 	at org.apache.tinkerpop.gremlin.console.Console.main(Console.groovy:524)
> {code}
> The reason for this issue is that the plugin registration in {{ext/plugins.txt}} file is not cleaned up and so the console tries to load it on startup. Normally you would {{:plugin unuse tinkerpop:spark}} prior to the {{:uninstall}} to make sure the cleanup worked properly. 
> To fix this problem, {{:uninstall}} should just remove the registration the same way that {{:plugin unuse}} would.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)