Questions about implementing and deploying custom traversal extensions in JanusGraph
Hello,
I’m currently working on a project that has been using Neo4j, and we’re exploring migrating to JanusGraph. The main challenge we’re facing relates to how we currently use Neo4j: we’ve developed several stored procedures, including a custom traversal procedure (a recursive function that decides which path to traverse based on edge properties).
From what I’ve gathered so far, it seems that a similar feature could be implemented in JanusGraph by extending the DSL and deploying it as a JAR into the extensions directory. However, I’m not completely sure if this is the best approach.
Our key requirements are performance-related — this traversal processes a large number of nodes and edges, and it should return complete paths. Therefore, it’s important for us to execute it server-side rather than client-side.
I created a proof of concept for the extension, but I’ve encountered issues during deployment. I placed the JAR file in the /opt/janusgraph/ext directory and added it to plugins.txt. However, when running the Gremlin console, I get the following error:
Exception in thread "main" java.lang.NullPointerException: Cannot invoke method activate() on null object
at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:113)
Could you please help clarify the following points?
Is extending the DSL the recommended approach for implementing a custom traversal in JanusGraph?
If so, is the deployment method I described (placing the JAR in /opt/janusgraph/ext and declaring it in plugins.txt) correct?
How can I debug the above error? Could it be related to an incomplete plugin JAR? If possible, could you share an example of a working extension that I could use as a reference?
Thank you in advance for your help and any insights you can provide.
Best regards,
Michael0 Replies