Re: configuration not being respected

Karol <karol....@...>

In the end I'm not going to use spring data for interaction with janus. For anyone that will do so, below is a snippet which will solve majority of errors that you encounter. There's one more thing tho, you will get this error:

Caused by: java.lang.IllegalArgumentException: should be one instance of Map: org.apache.tinkerpop.gremlin.structure.util.detached.DetachedVertex
    at org.springframework.util.Assert.instanceCheckFailed( ~[spring-core-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at org.springframework.util.Assert.isInstanceOf( ~[spring-core-5.2.8.RELEASE.jar:5.2.8.RELEASE]
    at ~[spring-data-gremlin-2.3.2-SNAPSHOT.jar:2.3.2-SNAPSHOT]
    at ~[spring-data-gremlin-2.3.2-SNAPSHOT.jar:2.3.2-SNAPSHOT]

To fix that you'll have to tinker with the way the spring data plugin serializes the response from the server, that is provide a custom implementation of GremlinResultVertexReader.

import org.apache.tinkerpop.gremlin.driver.Client
import org.apache.tinkerpop.gremlin.driver.Cluster
import org.apache.tinkerpop.gremlin.driver.ser.GraphSONMessageSerializerV3d0
import org.apache.tinkerpop.gremlin.driver.ser.Serializers
import org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration

class UserRepositoryConfiguration : AbstractGremlinConfiguration() { 
  override fun getGremlinConfig(): GremlinConfig = GremlinConfig(

   override fun gremlinFactory(): GremlinFactory = JanusGraphGremlinFactory(gremlinConfig)

class JanusGraphGremlinFactory(private val gremlinConfig: GremlinConfig) : GremlinFactory(gremlinConfig) {
   private val gremlinCluster: Cluster by lazy { createGremlinCluster() }
   override fun getGremlinClient(): Client {
     return this.gremlinCluster.connect()

   private fun createGremlinCluster(): Cluster =
    .credentials(gremlinConfig.username, gremlinConfig.password)

czwartek, 17 września 2020 o 11:57:56 UTC+2 HadoopMarc napisał(a):

Hi Karol,

Thanks for posting the workaround.
I stared a while at your post earlier this morning and could not see how your session log could be consistent with a working test for graph.set-vertex-id=true on the inmemory storage backend. Others?


Op donderdag 17 september 2020 om 10:15:22 UTC+2 schreef Karol:
I haven't managed to setup graph.set-vertex-id=true but for anyone using microsoft's gremlin plugin for spring data, add @GeneratedValue to the id field:

class Foo(val name: String, val age: Int? = null, @GeneratedValue val id: Int? = null)

Then the insertion should succeed:"test", 123))

Tho still, it'd be nice to know how to set the value of properties of FIXED level. Any tips will be appreciated.

środa, 16 września 2020 o 14:45:19 UTC+2 Karol napisał(a):
Hi all,

I'm trying to setup janus so that it works with spring data gremlin plugin

In order to do so I have to setup the variable graph.set-vertex-id=true as mentioned here

here's the config I'm using:

$ pwd
$ cat conf/ | grep -e '^[a-z]'

So it clearly is set to true in the config file I'll be later using. Here's how I start the server:

$ bin/
# console starts here
gremlin> graph ='conf/')
gremlin> mgmt = graph.openManagement()
gremlin> mgmt.get("graph.set-vertex-id")
gremlin> mgmt.set("graph.set-vertex-id", "true")
Cannot change the fixed configuration option: root.graph.set-vertex-id

I'm aware of mutability levels as well as the fact that the property I'm trying to set is of level FIXED and can't be changed once the db is up. The thing is I'm unable to change it no matter what I do.

There's a probably working solution posted already here but janus in this case is embedded and I want mine to be on a dedicated jvm.

Any ideas how to accomplish that?


Join to automatically receive all group messages.