Skip to content

Unable to connect with Gremlin #869

@docbacardi

Description

@docbacardi

ArcadeDB Version: 23.1.2

JDK Version: openjdk version "11.0.17" 2022-10-18

OS: Ubuntu 22.04.1 LTS

Expected behavior

Connecting with Gremlin console to ArcadeDB v23.1.2 works like in v23.1.1 and previous.

Actual behavior

v23.1.2 crashes

Steps to reproduce

The following steps were tested on v22.12.1, v23.1.1 and v23.1.2 . Only v23.1.2 crashes.

First the server is started without any plugins:

chicken@asteroid:~/arcadedb-22.12.1$ bin/server.sh

The database "graph" is created with a test vertex:

chicken@asteroid:~/arcadedb-22.12.1$ bin/console.sh 
ArcadeDB Console v.22.12.1 - Copyrights (c) 2021 Arcade Data Ltd (https://arcadedb.com)
> create database graph
[To redirect Truffle log output to a file use one of the following options:
* '--log.file=<path>' if the option is passed using a guest language launcher.
* '-Dpolyglot.log.file=<path>' if the option is passed using the host Java launcher.
* Configure logging using the polyglot embedding API.]
[engine] WARNING: The polyglot context is using an implementation that does not support runtime compilation.
The guest application code will therefore be executed in interpreted mode only.
Execution only in interpreted mode will strongly impact the guest application performance.
For more information on using GraalVM see https://www.graalvm.org/java/quickstart/.
To disable this warning the '--engine.WarnInterpreterOnly=false' option or use the '-Dpolyglot.engine.WarnInterpreterOnly=false' system property.

{graph}> set language = sql

Set language to sql
{graph}> CREATE VERTEX TYPE TestV;

+---------+------------------+
|NAME     |VALUE             |
+---------+------------------+
|operation|create vertex type|
|typeName |TestV             |
+---------+------------------+
Command executed in 97ms
{graph}> set language = gremlin

Set language to gremlin
{graph}> g.addV('TestV').property('name','chicken')
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/home/chicken/arcadedb-22.12.1/lib/arcadedb-gremlin-22.12.1.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

VERTEX @type:TestV @rid:#1:0
+----+-------+
|NAME|VALUE  |
+----+-------+
|name|chicken|
+----+-------+
Command executed in 897ms
{graph}> quit

Then the server is stopped and started again with the Gremlin plugin enabled:

chicken@asteroid:~/arcadedb-22.12.1$ bin/server.sh -Darcadedb.server.plugins=GremlinServer:com.arcadedb.server.gremlin.GremlinServerPlugin

Finally a connection is established with the Gremlin console v3.6.2 by executing the following lines:

import org.apache.tinkerpop.gremlin.driver.Cluster;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;
import org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource;
tBuilder = Cluster.build().addContactPoint("localhost").port(8182).credentials("root", "playwithdata");
tCluster = tBuilder.create();
g = AnonymousTraversalSource.traversal().withRemote(DriverRemoteConnection.using(tCluster));
g.V().elementMap();

This works for ArcadeDB v22.12.1 and v23.1.1 . It prints the test vertex:

gremlin> tBuilder = Cluster.build().addContactPoint("localhost").port(8182).credentials("root", "playwithdata");
==>org.apache.tinkerpop.gremlin.driver.Cluster$Builder@260e3837
gremlin> tCluster = tBuilder.create();
==>localhost/127.0.0.1:8182
gremlin> g = AnonymousTraversalSource.traversal().withRemote(DriverRemoteConnection.using(tCluster));
==>graphtraversalsource[emptygraph[empty], standard]
gremlin> g.V().elementMap();
==>[id:#1:0,label:TestV,name:chicken]
gremlin> 

V23.1.2 crahes:

java.lang.NoSuchMethodError: 'void io.netty.handler.codec.DefaultHeadersImpl.<init>(io.netty.util.HashingStrategy, io.netty.handler.codec.ValueConverter, io.netty.handler.codec.DefaultHeaders$NameValidator, int, io.netty.handler.codec.DefaultHeaders$ValueValidator)'
	at io.netty.handler.codec.http.DefaultHttpHeaders.<init>(DefaultHttpHeaders.java:86)
	at io.netty.handler.codec.http.DefaultHttpHeaders.<init>(DefaultHttpHeaders.java:77)
	at io.netty.handler.codec.http.DefaultHttpMessage.<init>(DefaultHttpMessage.java:41)
	at io.netty.handler.codec.http.DefaultHttpResponse.<init>(DefaultHttpResponse.java:64)
	at io.netty.handler.codec.http.DefaultFullHttpResponse.<init>(DefaultFullHttpResponse.java:62)
	at io.netty.handler.codec.http.DefaultFullHttpResponse.<init>(DefaultFullHttpResponse.java:57)
	at io.netty.handler.codec.http.DefaultFullHttpResponse.<init>(DefaultFullHttpResponse.java:43)
	at io.netty.handler.codec.http.HttpObjectAggregator.<clinit>(HttpObjectAggregator.java:89)
	at org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer.configure(WebSocketChannelizer.java:100)
	at org.apache.tinkerpop.gremlin.server.AbstractChannelizer.initChannel(AbstractChannelizer.java:176)
	at org.apache.tinkerpop.gremlin.server.AbstractChannelizer.initChannel(AbstractChannelizer.java:80)
	at io.netty.channel.ChannelInitializer.initChannel(ChannelInitializer.java:129)
	at io.netty.channel.ChannelInitializer.handlerAdded(ChannelInitializer.java:112)
	at io.netty.channel.AbstractChannelHandlerContext.callHandlerAdded(AbstractChannelHandlerContext.java:1114)
	at io.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:609)
	at io.netty.channel.DefaultChannelPipeline.access$100(DefaultChannelPipeline.java:46)
	at io.netty.channel.DefaultChannelPipeline$PendingHandlerAddedTask.execute(DefaultChannelPipeline.java:1463)
	at io.netty.channel.DefaultChannelPipeline.callHandlerAddedForAllHandlers(DefaultChannelPipeline.java:1115)
	at io.netty.channel.DefaultChannelPipeline.invokeHandlerAddedIfNeeded(DefaultChannelPipeline.java:650)
	at io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:514)
	at io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:429)
	at io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:486)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at java.base/java.lang.Thread.run(Thread.java:829)
Failed to initialize a channel. Closing: [id: 0x34cc3b13, L:/127.0.0.1:8182 - R:/127.0.0.1:38930]
java.lang.NoClassDefFoundError: Could not initialize class io.netty.handler.codec.http.HttpObjectAggregator
	at org.apache.tinkerpop.gremlin.server.channel.WebSocketChannelizer.configure(WebSocketChannelizer.java:100)
	at org.apache.tinkerpop.gremlin.server.AbstractChannelizer.initChannel(AbstractChannelizer.java:176)
	at org.apache.tinkerpop.gremlin.server.AbstractChannelizer.initChannel(AbstractChannelizer.java:80)
	at io.netty.channel.ChannelInitializer.initChannel(ChannelInitializer.java:129)
	at io.netty.channel.ChannelInitializer.handlerAdded(ChannelInitializer.java:112)
	at io.netty.channel.AbstractChannelHandlerContext.callHandlerAdded(AbstractChannelHandlerContext.java:1114)
	at io.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:609)
	at io.netty.channel.DefaultChannelPipeline.access$100(DefaultChannelPipeline.java:46)
	at io.netty.channel.DefaultChannelPipeline$PendingHandlerAddedTask.execute(DefaultChannelPipeline.java:1463)
	at io.netty.channel.DefaultChannelPipeline.callHandlerAddedForAllHandlers(DefaultChannelPipeline.java:1115)
	at io.netty.channel.DefaultChannelPipeline.invokeHandlerAddedIfNeeded(DefaultChannelPipeline.java:650)
	at io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:514)
	at io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:429)
	at io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:486)
	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at java.base/java.lang.Thread.run(Thread.java:829)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions