ServerGremlinExecutor.<init> - Could not invoke constructor on class org.janusgraph.graphdb.manageme
Hi, I am still learning to use JanusGraph. I was working on doing bulk ingestion of data into JanusGraph and I am struggling with overcoming this error which involves using
I configured 3 nodes to be the CassandraDB backend cluster, which are all up and running. Here's the complete janusgraph-cql-configuration.properties file:...
ConfiguredGraphFactory for dynamic graph creation.I configured 3 nodes to be the CassandraDB backend cluster, which are all up and running. Here's the complete janusgraph-cql-configuration.properties file:...
many graphs
I'm a little confused about accessing graphs. I have ideas for two unrelated graphs. For now, in my gremlin server yaml i have four graphs (while i'm learning)
graphs: {
graph: conf/janusgraph-inmemory.properties,
ConfigurationManagementGraph: conf/janusgraph-cql-configurationgraph.properties,...
Solution:
You then also don't need
JanusGraphFactory.open() any more since JanusGraph Server already opened the graph instances for you.
By using the JanusGraphFactory directly in Gremlin Console you basically circumvent this whole functionality from JanusGraph Server and instead access the JanusGraph API directly to load the graphs yourselves. This means that it doesn't know about your Gremlin Server YAML which also explains why you cannot use graph names defined in that YAML...Indexing on vertex label
Hi, I was under the assumption that vertex label are indexed by default. But this doesn't seems to be the case.
I also can't to find a way to index label from consulting the documentation. Is this not possible? And if so what is the reason for this?
Thank you....
Add a collection of values in an edge property
Hi, I tried to find out some Gremlin example but nothing.
Is it possible add, in a single edge property a collection (like a list) of values?
For instance:
g.addE('link').from('x').to('y').property('p', [1, 2, 4]).next() ...
Custom Vertex IDs and Serialized Graph
Just wondering if anyone has tried to use custom vertex ids and restore a serialized graph?
g.io("/tmp/foo.kryo").write().iterate()
Then doing the converse with a read() but then it errors with must provide vertex id....Concurrent updates during a REINDEX
đđ» Hello. I was reading JanusGraph documentation on reindexing (https://docs.janusgraph.org/schema/index-management/index-reindexing/) which says
JanusGraph can begin writing incremental index updates right after an index is defined. However, before the index is complete and usable, JanusGraph must also take a one-time read pass over all existing graph elements associated with the newly indexed schema type(s). Once this reindexing job has completed, the index is fully populated and ready to be used. The index must then be enabled to be used during query processing.which made me wonder how JanusGraph handles incremental updates happening concurrently to a
REINDEX.
For instance, if we consider a slow reindexing process (e.g. done through the ManagementSystem interface) that can take several hours, how are concurrent additions/updates/deletions of vertices/edges/properties handled?...Is Java 17 support on the roadmap?
Hi JanusGraph team, thanks for your hard work. Are there any plans to support Java 17 in the near future?
Solution:
Hi! We use JanusGraph in production with Java 17. However, JanusGraph didnât migrate some tests libraries to support proper testing against Java 17 runtime. There are plans to fix that but there is no ETA for that.
See: https://github.com/JanusGraph/janusgraph/pull/3937
See: https://github.com/JanusGraph/janusgraph/pull/4040
Previously we agreed to drop support for Java 8 and then add support for Java 17 because supporting proper testing for both versions are more challenging. However, janusgraph-driver will still support Java 8 if you depend on it. ...
Do Custom Vertex IDs Guarantee Single Instance of That Vertex?
Previously I was using a composite index with a unique constraint with locking to try to enforce uniqueness for new vertices, but switching to using that property as a custom vertex ID has a noticeable performance boost.
Just wondering if we're still guaranteed vertex uniqueness that locking previously would (try to) enforce?
I figured it does, assuming that custom vertex id is what's getting serialized to the backend. If so I'm guessing there literally wouldn't be a place for a doppelgÀnger to exist, but figured I'd ask since it wasn't explicitly stated in the docs after switching to custom vertex ids....
Solution:
Just wondering if we're still guaranteed vertex uniqueness that locking previously would (try to) enforce?Yes. And the reason is exactly what you suggested: the vertex id is what gets serialized to the backend. Good suggestion that we should have included it in the doc. Would you mind creating an issue or PR for that?...
secure connection - TLS
I could not find any topic about TLS encryption and how Janus does it in the docs.
Does Janus support TLS encryption?...
Best configuration for a single server
Server Spec: 256 vCPU (Threads) / 4 TB memory
RAID5: 35TB XFS Filesystem
Current have a single server I'd like to test with in a semi-production state. I realize it's not HA but it has plenty of horsepower for a decently size dataset. Having never installed JanusGraph, nor ScyllaDB, I'm not sure how much memory to assign to each service. I imagine the underlying DB will consume the most amount of resources. Please correct me if I'm wrong.
...
Elasticsearch mixed index performance
Hi All, we use JanusGraph 1.0 with Cassandra storage backend and 3 node cluster Elasticsearch index backend. We try to ingest 100.000 nodes. Our nodes are very simple for benchmarking purpose: all are person nodes with id, first name and last name properties. 'id' has a composite index, first name and last name are supposed to have mixed index. At this point we don't ingest any edges.
Ingestion time of 100.000 nodes without any mixed index (only composite index for 'id') took for us 2 minutes. While ingesting the same data with mixed index on first name and last name took 50 minutes which is significantly slower.
I am wondering if we misconfigured something or using mixed index is expected to slow down ingestion so drastically?...
Support to query vertex with custom id in Gremlin.Net SDK
@Florian Hockmann I am exploring usage of custom vertex id in our graph, when I play around with C# SDK v3.7.1 to query a vertex which has custom identifier and property added to the vertex, I get an exception:
...
No serializer found for type 'janusgraph.RelationIdentifier'.
Stacktrace attached.
No serializer found for type 'janusgraph.RelationIdentifier'.
Stacktrace attached.
Solution:
They are included in the NuGet package JanusGraph.Net, but you still have to use them in your code.
Did you create the client as shown in the README? https://github.com/JanusGraph/janusgraph-dotnet/?tab=readme-ov-file#usage
Since you're using GraphBinary, you should create the client like this:
...
Vertex ID collisions
Hello!
I'm following up on my questions from https://discord.com/channels/981533699378135051/1198566881360093274/1198566881360093274 and https://discord.com/channels/981533699378135051/1188579609667711047
We want to migrate our existing JanusGraph from Bigtable to Cassandra.
One of the hypothesis was to try and leverage JG 1.0 custom vertex IDs, to import a GraphSON file while keeping the original IDs....
Changing default ES index name prefix
Hi, is it possible to change the default prefix of Elasticsearch index names? Currently, when I define a mixed index, JanusGraph creates a correspoing index in ES named
janusgraph_<index_name>. I would like to change the prefix for all indices to something like jgtest1_<index_name>.
I tried following the documentation (https://docs.janusgraph.org/index-backend/elasticsearch/#janusgraph-indexx-and-indexxelasticsearch-options), adding this line to the JanusGraph server .properties file:
index.search.elasticsearch.index-name = jgtest1
however, this does not seem to work. ...Solution:
Your configuration is generally correct except the index-name option. You added âelasticsearchâ after âsearchâ which isnât a valid configuration option. Instead, try to use âindex.search.index-name = jgidxtestâ. Hopefully it should fix the issue you are having. Let me know otherwise.
Migrating from Bigtable to Cassandra
Hello!
I want to explore migrating our Janusgraph storage from Bigtable to Cassandra.
One suggestion is checking Google's Dataflow export to Parquet, but I'm not sure if the underlying storage schema would be the same.
I'm hoping to not resort to a GraphSON export, because we want to keep the vertex IDs, and still have some showstoppers when testing JG 1.0...
Drop the Janus Graph Schema
Hello!!
Hope you are having a good day!
I have corrupted the schema of my Janusgraph and now I am not able to access my graph. Is there a way to drop the schema without deleting the data....
Idempotent upsert, is that possible?
For our project, we need to be able to insert vertexes and edges at a very high pace using spark streaming. After many tests, we found an approach that seems very promising. In our context, we could have sporadic vertex collisions, so instead of checking for the existence of a vertex before inserting it, we decided to use a custom ID. As an id, we use a hash generated from the vertex property; the id somehow represents the vertex value, so if two vertexes have the same property values, they hav...
Deserializing of Vertex ID with Custom String value
Hi,
I've come across an issue with deserialization from users enabling custom vertex ID values and types as documented on https://docs.janusgraph.org/advanced-topics/custom-vertex-id/.
Below is a sample GraphSON serialization error highlighting the issue, where a vertex has a custom string ID value (U933779):
```java.lang.IllegalArgumentException: Invalid id - each token expected to be a number...
Solution:
Hey, turns out it was a mismatch between driver and server version due to the user being on an older version of G.V(), i need to remember to make this the first thing i check đ
TreeStep and MultiQuery support
On JanusGraph 1.0, a traversal like
g.V().has(...).out(...).has(...).out(...).has(...) nicely leverages the MultiQuery optimisation and returns results in acceptable time.
However, as soon as we add a tree() step, as in g.V().has(...).out(...).has(...).out(...).has(...).tree(), all MultiQuery optimisations are disabled and the traversal time increases drastically.
Based on the following code, I think this applies to all Steps with PATH requirement (e.g. PathStep, TreeStep): https://github.com/JanusGraph/janusgraph/blob/v1.0/janusgraph-core/src/main/java/org/janusgraph/graphdb/tinkerpop/optimize/JanusGraphTraversalUtil.java#L393
...