PLANNED MAINTENANCE

Hello, DataStax Community!

We want to make you aware of a few operational updates which will be carried out on the site. We are working hard to streamline the login process to integrate with other DataStax resources. As such, you will soon be prompted to update your password. Please note that your username will remain the same.

As we work to improve your user experience, please be aware that login to the DataStax Community will be unavailable for a few hours on:

  • Wednesday, July 15 16:00 PDT | 19:00 EDT | 20:00 BRT
  • Thursday, July 16 00:00 BST | 01:00 CEST | 04:30 IST | 07:00 CST | 09:00 AEST

For more info, check out the FAQ page. Thank you for being a valued member of our community.


question

rohansurana2810_190538 avatar image
rohansurana2810_190538 asked ·

Tokenregex() NullPointerException

Hi,

I was trying out the tokenRegex() for searching one of the fields. It was working fine in the studio but in Java, it gave null pointer exception.

Ask Schema =>

schema.vertexLabel('Ask').
        ifNotExists().
        partitionBy('tenantId', Ascii).
        clusterBy('domainId', Ascii).
        property('askScope', Text).
        create()

Data==>

g.addV("Ask").property("tenantId", "t1").property("domainId", "d1").property("askScope","check")

Search Index =>

schema.vertexLabel('Ask').searchIndex().ifNotExists().by('askScope').asText().create()

In datastax studio =>

g.V().hasLabel("Ask").has("askScope",tokenRegex("check"))

output:

{
  "id": "dseg:/Ask/t1/d1",
  "label": "Ask",
  "type": "vertex",
  "properties": {}
}

These are the pom.xml dependencies

<dependency>
    <groupId>com.datastax.oss</groupId>
    <artifactId>java-driver-core</artifactId>
    <version>4.7.2</version>
</dependency>
<dependency>
    <groupId>org.apache.tinkerpop</groupId>
    <artifactId>gremlin-driver</artifactId>
    <version>3.4.5</version>
</dependency>
<dependency>
    <groupId>org.apache.tinkerpop</groupId>
    <artifactId>gremlin-core</artifactId>
    <version>3.4.5</version>
</dependency>

In java =>

GraphTraversal<Vertex, Vertex> vertex = g.V().hasLabel("Ask").has("askScope", Search.tokenRegex("check")).next();

Exception :

java.lang.NullPointerException: null
at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936)
at org.apache.tinkerpop.gremlin.driver.Handler$GremlinResponseHandler.channelRead0(Handler.java:221)
at org.apache.tinkerpop.gremlin.driver.Handler$GremlinResponseHandler.channelRead0(Handler.java:198)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
at org.apache.tinkerpop.gremlin.driver.Handler$GremlinSaslAuthenticationHandler.channelRead0(Handler.java:124)
at org.apache.tinkerpop.gremlin.driver.Handler$GremlinSaslAuthenticationHandler.channelRead0(Handler.java:68)


On the server: /var/log/cassandra/gremlin.log

stack trace ==>

WARN  2020-06-29 22:12:11,484 DseOpSelectorHandler.java:115 - Invalid OpProcessor requested [null]
org.apache.tinkerpop.gremlin.server.op.OpProcessorException: Invalid OpProcessor requested [null]
at com.datastax.bdp.graph.plugin.DseOpSelectorHandler.decode(DseOpSelectorHandler.java:109)
at com.datastax.bdp.graph.plugin.DseOpSelectorHandler.decode(DseOpSelectorHandler.java:43)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:88)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at com.datastax.bdp.graph.plugin.GremlinServerGraphHandler.handleRequestMessage(GremlinServerGraphHandler.java:47)
at com.datastax.bdp.graph.plugin.AbstractRequestMessageHandler.channelRead(AbstractRequestMessageHandler.java:63)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at com.datastax.bdp.cassandra.audit.GremlinServerAuditLogRequestHandler.handleRequestMessage(GremlinServerAuditLogRequestHandler.java:37)
at com.datastax.bdp.graph.plugin.AbstractRequestMessageHandler.channelRead(AbstractRequestMessageHandler.java:63)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)


On the server: /var/log/cassandra/system.log

stack trace ==>

WARN  [gremlin-server-worker-1] 2020-06-30 07:30:57,571  AbstractGryoMessageSerializerV3d0.java:211 - Request [PooledUnsafeDirectByteBuf(ridx: 150, widx: 150, cap: 184)] could not be deserialized by org.apache.tinkerpop.gremlin.driver.ser.AbstractGryoMessageSerializerV3d0.
java.lang.IllegalStateException: org.apache.tinkerpop.gremlin.process.traversal.P.tokenRegex(java.lang.Object)
at org.apache.tinkerpop.gremlin.structure.io.gryo.GryoSerializersV3d0$PSerializer.read(GryoSerializersV3d0.java:343)
at org.apache.tinkerpop.gremlin.structure.io.gryo.GryoSerializersV3d0$PSerializer.read(GryoSerializersV3d0.java:291)
at org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.shaded.ShadedSerializerAdapter.read(ShadedSerializerAdapter.java:52)
at org.apache.tinkerpop.shaded.kryo.Kryo.readObject(Kryo.java:708)
at org.apache.tinkerpop.shaded.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.read(DefaultArraySerializers.java:396)
at org.apache.tinkerpop.shaded.kryo.serializers.DefaultArraySerializers$ObjectArraySerializer.read(DefaultArraySerializers.java:307)
at org.apache.tinkerpop.shaded.kryo.Kryo.readObject(Kryo.java:686)
at org.apache.tinkerpop.gremlin.structure.io.gryo.kryoshim.shaded.ShadedKryoAdapter.r...........
SingleThreadEventExecutor.java:884)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoSuchMethodException: org.apache.tinkerpop.gremlin.process.traversal.P.tokenRegex(java.lang.Object)
at java.lang.Class.getMethod(Class.java:1786)
at org.apache.tinkerpop.gremlin.structure.io.gryo.GryoSerializersV3d0$PSerializer.read(GryoSerializersV3d0.java:341)
... 65 common frames omitted


Thank you

graphdse searchgremlindse-java-driver-core
10 |1000 characters needed characters left characters exceeded

Up to 8 attachments (including images) can be used with a maximum of 1.0 MiB each and 10.0 MiB total.

1 Answer

bettina.swynnerton avatar image
bettina.swynnerton answered ·

Hi,

thanks for providing the schema and example data, this allowed me to run a quick test.

The following worked for me on DSE Graph 6.8.1, java driver version 4.7.2:

import com.datastax.dse.driver.api.core.graph.FluentGraphStatement;
import com.datastax.dse.driver.api.core.graph.GraphNode;
import com.datastax.dse.driver.api.core.graph.GraphResultSet;
import com.datastax.dse.driver.api.core.graph.predicates.Search;
import com.datastax.oss.driver.api.core.CqlSession;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
import org.apache.tinkerpop.gremlin.structure.Vertex;

import static com.datastax.dse.driver.api.core.graph.DseGraph.g;

public class Test {
    public static void main(String[] args) 

        try (CqlSession session = CqlSession.builder().build()) {

            GraphTraversal<Vertex, Vertex> traversal = g.V().hasLabel("Ask").has("askScope", Search.tokenRegex("check"));
            FluentGraphStatement statement2 = FluentGraphStatement.newInstance(traversal);

            GraphResultSet result2 = session.execute(statement2);
            for (GraphNode node : result2) {
                System.out.println(node.asVertex());
            }
        }
    }
}

To construct the GraphTraversal I had to remove the `next()` step from the traversal that you gave in your question. Let me have a more complete snippet of your java code, so I can see the context.

Cheers!

5 comments Share
10 |1000 characters needed characters left characters exceeded

Up to 8 attachments (including images) can be used with a maximum of 1.0 MiB each and 10.0 MiB total.

Thank you for the quick response, here is my code snippet,

import com.datastax.dse.driver.api.core.graph.predicates.Search;
import org.apache.tinkerpop.gremlin.driver.remote.DriverRemoteConnection;
import org.apache.tinkerpop.gremlin.process.traversal.AnonymousTraversalSource;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal;
import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource;

public class Test {
    public static void main(String[] args) throws Exception{

        GraphTraversalSource g = AnonymousTraversalSource.traversal().withRemote(DriverRemoteConnection.using(cluster, "withComment.g"))

        GraphTraversal<Vertex, Vertex> trav = g.V().hasLabel("Ask").has("askScope", Search.tokenRegex("check"));
        System.out.println(trav.valueMap().toList());

        g.close()
    }
}
0 Likes 0 · ·

Also,

On the server: /var/log/cassandra/system.log

stack trace ==>

WARN  [gremlin-server-worker-1] 2020-06-30 07:30:57,571  AbstractGryoMessageSerializerV3d0.java:211 - Request [PooledUnsafeDirectByteBuf(ridx: 150, widx: 150, cap: 184)] could not be deserialized by org.apache.tinkerpop.gremlin.driver.ser.AbstractGryoMessageSerializerV3d0.
java.lang.IllegalStateException: org.apache.tinkerpop.gremlin.process.traversal.P.tokenRegex(java.lang.Object)
at org.apache.tinkerpop.gremlin.structure.io.gryo.GryoSerializersV3d0$PSerializer.read(GryoSerializersV3d0.java:343.....
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoSuchMethodException: org.apache.tinkerpop.gremlin.process.traversal.P.tokenRegex(java.lang.Object)
at java.lang.Class.getMethod(Class.java:1786)
at org.apache.tinkerpop.gremlin.structure.io.gryo.GryoSerializersV3d0$PSerializer.read(GryoSerializersV3d0.java:341)
... 65 common frames omitted
0 Likes 0 · ·

Hi @rohansurana2810_190538,

could you please confirm your versions for me? DSE version and driver version?

Thanks!

0 Likes 0 · ·
rohansurana2810_190538 avatar image rohansurana2810_190538 bettina.swynnerton ♦♦ ·

Sure, here it is

DSE version - 6.8.1

Java driver version - 4.7.2

Also other dependencies:

<dependency>
    <groupId>com.datastax.oss</groupId>
    <artifactId>java-driver-core</artifactId>
    <version>4.7.2</version>
</dependency>
<dependency>
    <groupId>org.apache.tinkerpop</groupId>
    <artifactId>gremlin-driver</artifactId>
    <version>3.4.5</version>
</dependency>
<dependency>
    <groupId>org.apache.tinkerpop</groupId>
    <artifactId>gremlin-core</artifactId>
    <version>3.4.5</version>
</dependency>


Thank you!

0 Likes 0 · ·
Show more comments