ArangoDB-Community / arangodb-tinkerpop-provider

An implementation of the Tinkerpop OLTP Provider for ArangoDB
Apache License 2.0
83 stars 16 forks source link

ArangoDB plugin unable to load graph: java.lang.NullPointerException on open #57

Closed jpelayo closed 3 years ago

jpelayo commented 4 years ago

Hi!

I'm trying to learn Gremlin by using it over ArangoDB. It looks quite straigtforward as only the console and a plugin seem to be needed.

I'm getting a java.lang.NullPointerException when loading the graph. Before that, I was warned to declare a missing relation in the config file, but as soon as the config file seems correct, the exception is thrown without further info.

The only piece might be missing is the Tinkerpop server, but the doc says that ArangoDB is compatible with the console "out of the box", and the connection is there because the collections are being checked if there is a config error.

This is my test graph: Captura de pantalla 2020-01-22 a las 11 22 32 Captura de pantalla 2020-01-22 a las 11 22 03

This is my config:

gremlin.graph = com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph
gremlin.arangodb.conf.graph.vertex = testfrom
gremlin.arangodb.conf.graph.vertex = testto
gremlin.arangodb.conf.graph.edge = testedge
gremlin.arangodb.conf.graph.relation = testedge:testfrom->testto
gremlin.arangodb.conf.graph.shouldPrefixCollectionNames = false
gremlin.arangodb.conf.graph.db = Test02
gremlin.arangodb.conf.graph.name = Test02Graph01
gremlin.arangodb.conf.arangodb.user = xxxxx
gremlin.arangodb.conf.arangodb.password = xxxxx
gremlin.arangodb.conf.arangodb.hosts = 127.0.0.1:8529
gremlin.arangodb.conf.arangodb.usessl = false

note: on OSX 10.14.6, Java SE RE (build 1.8.0_161-b12)

This is the error:

gremlin> :plugin list
==>tinkerpop.server[active]
==>tinkerpop.gephi
==>tinkerpop.utilities[active]
==>tinkerpop.arangodb[active]
==>tinkerpop.sugar
==>tinkerpop.credentials
==>tinkerpop.tinkergraph[active]
gremlin> config = new org.apache.commons.configuration.PropertiesConfiguration("/Users/xxxxx/Applications/TinkerPop/arangotest.properties")
==>org.apache.commons.configuration.PropertiesConfiguration@2b917fb0
gremlin> g = ArangoDBGraph.open(config)
java.lang.NullPointerException
Type ':help' or ':h' for help.
Display stack trace? [yN]_
java.lang.NullPointerException
    at com.arangodb.tinkerpop.gremlin.client.ArangoDBGraphClient.getGraphVariables(ArangoDBGraphClient.java:494)
    at com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph.<init>(ArangoDBGraph.java:601)
    at com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph.open(ArangoDBGraph.java:543)
    ...

I know that there is an obvious misstep somewhere. Can someone please point me in the right direction?

Thanks!

PS: if I delete the line gremlin.arangodb.conf.graph.edge = testedge in the config, the error changes, so there is a nice connection:

gremlin> g = ArangoDBGraph.open(config)
WARN  com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph  - Empty edges collection(s), the default 'edge' collection will be used.
java.lang.NullPointerException

PS2: Problem is similar with the gremlin server.

Config (properties):

gremlin.graph = com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph
gremlin.arangodb.conf.graph.db = Test02
gremlin.arangodb.conf.graph.name = Test02Graph01
gremlin.arangodb.conf.graph.vertex = testfrom
gremlin.arangodb.conf.graph.vertex = testto
gremlin.arangodb.conf.graph.edge = testedge
gremlin.arangodb.conf.graph.relation = testedge:testfrom->testto
gremlin.arangodb.conf.graph.shouldPrefixCollectionNames = false
gremlin.arangodb.conf.arangodb.hosts = 127.0.0.1:8529
gremlin.arangodb.conf.arangodb.user = xxxx
gremlin.arangodb.conf.arangodb.password = xxxx

Config (yaml):

host: localhost
port: 8182
scriptEvaluationTimeout: 30000
channelizer: org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer
graphs: {
  modern: /Users/pelayo/Applications/TinkerPop/arangotest_server.properties}
scriptEngines: {
  gremlin-groovy: {
    plugins: { org.apache.tinkerpop.gremlin.server.jsr223.GremlinServerGremlinPlugin: {},
               org.apache.tinkerpop.gremlin.tinkergraph.jsr223.TinkerGraphGremlinPlugin: {},
               com.arangodb.tinkerpop.gremlin.jsr223.ArangoDBGremlinPlugin: {},
               org.apache.tinkerpop.gremlin.jsr223.ImportGremlinPlugin: {classImports: [java.lang.Math], methodImports: [java.lang.Math#*]},
               org.apache.tinkerpop.gremlin.jsr223.ScriptFileGremlinPlugin: {files: [scripts/empty-sample.groovy]}}}}
serializers:
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}             # application/vnd.gremlin-v3.0+gryo
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0, config: { serializeResultToString: true }}                                                                       # application/vnd.gremlin-v3.0+gryo-stringd
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV3d0] }}         # application/json
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, config: { ioRegistries: [org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerIoRegistryV2d0] }}         # application/vnd.gremlin-v2.0+json
  - { className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1 }                                                                                                            # application/vnd.graphbinary-v1.0
processors:
  - { className: org.apache.tinkerpop.gremlin.server.op.session.SessionOpProcessor, config: { sessionTimeout: 28800000 }}
  - { className: org.apache.tinkerpop.gremlin.server.op.traversal.TraversalOpProcessor, config: { cacheExpirationTime: 600000, cacheMaxSize: 1000 }}
metrics: {
  consoleReporter: {enabled: true, interval: 180000},
  csvReporter: {enabled: true, interval: 180000, fileName: /tmp/gremlin-server-metrics.csv},
  jmxReporter: {enabled: true},
  slf4jReporter: {enabled: true, interval: 180000}}
strictTransactionManagement: false
idleConnectionTimeout: 0
keepAliveInterval: 0
maxInitialLineLength: 4096
maxHeaderSize: 8192
maxChunkSize: 8192
maxContentLength: 65536
maxAccumulationBufferComponents: 1024
resultIterationBatchSize: 64
writeBufferLowWaterMark: 32768
writeBufferHighWaterMark: 65536
ssl: {
  enabled: false}

Output:

/Users/xxxx/Applications/apache-tinkerpop-gremlin-server-3.4.4/bin/gremlin-server.sh /Users/xxxx/Applications/TinkerPop/arangodb_server.yaml
[INFO] GremlinServer - 3.4.4
         \,,,/
         (o o)
-----oOOo-(3)-oOOo-----

[INFO] GremlinServer - Configuring Gremlin Server from /Users/xxxxx/Applications/TinkerPop/arangodb_server.yaml
[INFO] MetricManager - Configured Metrics ConsoleReporter configured with report interval=180000ms
[INFO] MetricManager - Configured Metrics CsvReporter configured with report interval=180000ms to fileName=/tmp/gremlin-server-metrics.csv
[INFO] MetricManager - Configured Metrics JmxReporter configured with domain= and agentId=
[INFO] MetricManager - Configured Metrics Slf4jReporter configured with interval=180000ms and loggerName=org.apache.tinkerpop.gremlin.server.Settings$Slf4jReporterMetrics
[INFO] ArangoDBGraph - Creating new ArangoDB Graph from configuration
[INFO] ArangoDBGraphClient - Initiating the ArangoDb Client
**[INFO] ArangoDBUtil - Creating EdgeRelation from testedge:testfrom->testto**
[WARN] DefaultGraphManager - Graph [modern] configured at [/Users/xxxx/Applications/TinkerPop/arangotest_server.properties] could not be instantiated and will not be available in Gremlin Server.  GraphFactory message: GraphFactory could not instantiate this Graph implementation [class com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph]
java.lang.RuntimeException: GraphFactory could not instantiate this Graph implementation [class com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph]
    at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:82)
    at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:70)
    at org.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:104)
    at org.apache.tinkerpop.gremlin.server.util.DefaultGraphManager.lambda$new$0(DefaultGraphManager.java:57)
    at java.util.LinkedHashMap$LinkedEntrySet.forEach(LinkedHashMap.java:671)
    at org.apache.tinkerpop.gremlin.server.util.DefaultGraphManager.<init>(DefaultGraphManager.java:55)
    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.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init>(ServerGremlinExecutor.java:80)
    at org.apache.tinkerpop.gremlin.server.GremlinServer.<init>(GremlinServer.java:122)
    at org.apache.tinkerpop.gremlin.server.GremlinServer.<init>(GremlinServer.java:86)
    at org.apache.tinkerpop.gremlin.server.GremlinServer.main(GremlinServer.java:345)
Caused by: java.lang.reflect.InvocationTargetException
    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.apache.tinkerpop.gremlin.structure.util.GraphFactory.open(GraphFactory.java:78)
    ... 13 more
**Caused by: java.lang.NullPointerException**
    at com.arangodb.tinkerpop.gremlin.client.ArangoDBGraphClient.getGraphVariables(ArangoDBGraphClient.java:494)
    at com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph.<init>(ArangoDBGraph.java:601)
    at com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph.open(ArangoDBGraph.java:543)
    ... 18 more
[INFO] ServerGremlinExecutor - Initialized Gremlin thread pool.  Threads in pool named with pattern gremlin-*
[INFO] ServerGremlinExecutor - Initialized GremlinExecutor and preparing GremlinScriptEngines instances.
[ERROR] DefaultGremlinScriptEngineManager - Could not create GremlinScriptEngine for gremlin-groovy
java.lang.IllegalStateException: javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: graph for class: Script1
    at org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager.lambda$createGremlinScriptEngine$16(DefaultGremlinScriptEngineManager.java:464)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
    at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
    at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:270)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
    at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
    at org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager.createGremlinScriptEngine(DefaultGremlinScriptEngineManager.java:450)
    at org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager.getEngineByName(DefaultGremlinScriptEngineManager.java:219)
    at org.apache.tinkerpop.gremlin.jsr223.CachedGremlinScriptEngineManager.lambda$getEngineByName$0(CachedGremlinScriptEngineManager.java:57)
    at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
    at org.apache.tinkerpop.gremlin.jsr223.CachedGremlinScriptEngineManager.getEngineByName(CachedGremlinScriptEngineManager.java:57)
    at org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda$eval$0(GremlinExecutor.java:266)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: graph for class: Script1
    at org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:378)
    at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
    at org.apache.tinkerpop.gremlin.jsr223.DefaultGremlinScriptEngineManager.lambda$createGremlinScriptEngine$16(DefaultGremlinScriptEngineManager.java:460)
    ... 24 more
Caused by: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: graph for class: Script1
    at org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:697)
    at org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:376)
    ... 26 more
Caused by: groovy.lang.MissingPropertyException: No such property: graph for class: Script1
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:65)
    at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:51)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:309)
    at Script1.run(Script1.groovy:45)
    at org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine.eval(GremlinGroovyScriptEngine.java:674)
    ... 27 more
[WARN] ServerGremlinExecutor - Could not initialize gremlin-groovy GremlinScriptEngine as init script could not be evaluated
java.util.concurrent.CompletionException: java.lang.IllegalArgumentException: gremlin-groovy is not an available GremlinScriptEngine
    at java.util.concurrent.CompletableFuture.reportJoin(CompletableFuture.java:375)
    at java.util.concurrent.CompletableFuture.join(CompletableFuture.java:1934)
    at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.lambda$new$4(ServerGremlinExecutor.java:141)
    at java.util.LinkedHashMap$LinkedKeySet.forEach(LinkedHashMap.java:559)
    at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init>(ServerGremlinExecutor.java:136)
    at org.apache.tinkerpop.gremlin.server.GremlinServer.<init>(GremlinServer.java:122)
    at org.apache.tinkerpop.gremlin.server.GremlinServer.<init>(GremlinServer.java:86)
    at org.apache.tinkerpop.gremlin.server.GremlinServer.main(GremlinServer.java:345)
Caused by: java.lang.IllegalArgumentException: gremlin-groovy is not an available GremlinScriptEngine
    at org.apache.tinkerpop.gremlin.jsr223.CachedGremlinScriptEngineManager.registerLookUpInfo(CachedGremlinScriptEngineManager.java:95)
    at org.apache.tinkerpop.gremlin.jsr223.CachedGremlinScriptEngineManager.getEngineByName(CachedGremlinScriptEngineManager.java:58)
    at org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda$eval$0(GremlinExecutor.java:266)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
[INFO] OpLoader - Adding the standard OpProcessor.
[INFO] OpLoader - Adding the session OpProcessor.
[INFO] OpLoader - Adding the traversal OpProcessor.
[INFO] TraversalOpProcessor - Initialized cache for TraversalOpProcessor with size 1000 and expiration time of 600000 ms
[INFO] GremlinServer - idleConnectionTimeout was set to 0 which resolves to 0 seconds when configuring this value - this feature will be disabled
[INFO] GremlinServer - keepAliveInterval was set to 0 which resolves to 0 seconds when configuring this value - this feature will be disabled
[WARN] AbstractChannelizer - The org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0 serialization class is deprecated.
[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v3.0+gryo with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0
[WARN] AbstractChannelizer - The org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0 serialization class is deprecated.
[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v3.0+gryo-stringd with org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0
[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v3.0+json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0
[INFO] AbstractChannelizer - Configured application/json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0
[INFO] AbstractChannelizer - Configured application/vnd.gremlin-v2.0+json with org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0
[INFO] AbstractChannelizer - application/json already has org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0 configured - it will not be replaced by org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV2d0, change order of serialization configuration if this is not desired.
[INFO] AbstractChannelizer - Configured application/vnd.graphbinary-v1.0 with org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1
[INFO] GremlinServer$1 - Gremlin Server configured with worker thread pool of 1, gremlin pool of 4 and boss thread pool of 1.
[INFO] GremlinServer$1 - Channel started at port 8182.
arcanefoam commented 4 years ago

Hi,

From a look at your configuration everything seems OK. I will take a look at the source code and get back to you.

Cheers

On Wed, 22 Jan 2020, 10:40 jpelayo, notifications@github.com wrote:

Hi!

I'm trying to learn Gremlin by using it over ArangoDB. It looks quite straigtforward as only the console and a plugin seem to be needed.

I'm getting a java.lang.NullPointerException when loading the graph. Before that, I was warned to declare a missing relation in the config file, but as soon as the config file seems correct, the exception is thrown without further info.

The only piece might be missing is the Tinkerpop server, but the doc says that ArangoDB is compatible with the console "out of the box", and the connection is there because the collections are being checked if there is a config error.

This is my test graph: [image: Captura de pantalla 2020-01-22 a las 11 22 32] https://user-images.githubusercontent.com/10059639/72886766-b42c7080-3d0a-11ea-894e-b5287ce3e263.jpg [image: Captura de pantalla 2020-01-22 a las 11 22 03] https://user-images.githubusercontent.com/10059639/72886865-e2aa4b80-3d0a-11ea-9790-0487e26736fe.jpg

This is my config:

gremlin.graph = com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph gremlin.arangodb.conf.graph.vertex = testfrom gremlin.arangodb.conf.graph.vertex = testto gremlin.arangodb.conf.graph.edge = testedge gremlin.arangodb.conf.graph.relation = testedge:testfrom->testto gremlin.arangodb.conf.graph.shouldPrefixCollectionNames = false gremlin.arangodb.conf.graph.db = Test02gremlin.arangodb.conf.graph.name = Test02Graph01 gremlin.arangodb.conf.arangodb.user = xxxxx gremlin.arangodb.conf.arangodb.password = xxxxx gremlin.arangodb.conf.arangodb.hosts = 127.0.0.1:8529 gremlin.arangodb.conf.arangodb.usessl = false

note: on OSX 10.14.6, Java SE RE (build 1.8.0_161-b12)

This is the error:

gremlin> :plugin list ==>tinkerpop.server[active] ==>tinkerpop.gephi ==>tinkerpop.utilities[active] ==>tinkerpop.arangodb[active] ==>tinkerpop.sugar ==>tinkerpop.credentials ==>tinkerpop.tinkergraph[active] gremlin> config = new org.apache.commons.configuration.PropertiesConfiguration("/Users/pelayo/Applications/TinkerPop/arangotest.properties") ==>org.apache.commons.configuration.PropertiesConfiguration@2b917fb0 gremlin> g = ArangoDBGraph.open(config) java.lang.NullPointerException Type ':help' or ':h' for help. Display stack trace? [yN]_ java.lang.NullPointerException at com.arangodb.tinkerpop.gremlin.client.ArangoDBGraphClient.getGraphVariables(ArangoDBGraphClient.java:494) at com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph.(ArangoDBGraph.java:601) at com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph.open(ArangoDBGraph.java:543) at com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph$open.call(Unknown Source)

I know that there is an obvious misstep somewhere. Can someone take a moment to take a look at it, please?

Thanks!

PS: if I delete the line gremlin.arangodb.conf.graph.edge = testedge in the config, the error changes, so there is a nice connection:

gremlin> g = ArangoDBGraph.open(config) WARN com.arangodb.tinkerpop.gremlin.structure.ArangoDBGraph - Empty edges collection(s), the default 'edge' collection will be used. java.lang.NullPointerException

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/ArangoDB-Community/arangodb-tinkerpop-provider/issues/57?email_source=notifications&email_token=AAQOU3JTHECJ2IWBSWOACRDQ7APATA5CNFSM4KKDPXA2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4IH5BFBQ, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAQOU3IU3HFHDAPAGTZM2LLQ7APATANCNFSM4KKDPXAQ .

arcanefoam commented 4 years ago

This is definitely a bug. It seems the TINKERPOP-GRAPH-VARIABLES collection is not being created properly if the graph exists. Can you try creating a collection with this name, as in TINKERPOP-GRAPH-VARIABLES, in your db and see if that solves the problem?

jpelayo commented 4 years ago

I don't know if I have followed your indications right, but still launches exception.

Captura de pantalla 2020-01-24 a las 9 30 31

gremlin> config = new org.apache.commons.configuration.PropertiesConfiguration("/Users/xxxx/Applications/TinkerPop/arangotest.properties")
==>org.apache.commons.configuration.PropertiesConfiguration@1afd72ef
gremlin> g = ArangoDBGraph.open(config)
java.lang.NullPointerException
Type ':help' or ':h' for help.
Display stack trace? [yN]y
java.lang.NullPointerException
    at com.arangodb.tinkerpop.gremlin.client.ArangoDBGraphClient.getGraphVariables(ArangoDBGraphClient.java:494)
...

BTW I added a second PS to the original post. It also happens with gremlin server. May be related.

Muchas gracias, Horacio.

arcanefoam commented 4 years ago

Can you add an object to the collection TINKERPOP-GRAPH-VARIABLES with "_key" Test02Graph01 and try again? I have added a fix for this, will release a new version.

Perdón por tardar con la respuesta.

jpelayo commented 4 years ago

That was it! Works.

gremlin> graph = ArangoDBGraph.open(config)
==>arangodbgraph[{"name":"Test02Graph01","vertices":{"testfrom", "testto"},"edges":{"testedge"},"relations":{"testedge:testfrom->testto"}}]
gremlin> g = graph.traversal()
==>graphtraversalsource[arangodbgraph[{"name":"Test02Graph01","vertices":{"testfrom", "testto"},"edges":{"testedge"},"relations":{"testedge:testfrom->testto"}}], standard]
gremlin> g.V()
==>v[testfrom/30149]
==>v[testto/30152]

Thank you very much!