JanusGraph

J

JanusGraph

JanusGraph - Distributed, open source, massively scalable graph database.

Join
Ttien4/29/2024

Server can't be started due to `lost+found` folder

I'm running JanusGraph as a docker container with a mounted volume at /var/lib/janusgraph. Experiencing this issue after restarting the container: ```sh chown: cannot read directory '/var/lib/janusgraph/lost+found': Permission denied...
Ccriminosis4/25/2024

Phantom Unique Data / Data Too Large?

I've been chasing down a weird writing bug for our graph writer, but I feel like I've stumbled into conflicting realities in my graph and wanted to share in case I'm missing something larger. For context the environment in play is my local development environment, all running inside docker compose (host machine is MacOS, on the off chance it matters). - JanusGraph 1.0.0 - Cassandra 4 - Elasticsearch 8...
Ttien4/24/2024

Could not start BerkeleyJE transaction

Hey I've just encounter this issue and needed to restart the entire server for it to go away. I believe it's the issue being described here https://github.com/JanusGraph/janusgraph/issues/2120...
Ddee2xu4/23/2024

JanusGraphManagement from Java client

Is it possible to, from the GraphTraversalSource, get to a JanusGraphManagment instance?
Rrpuga4/21/2024

~20% write performance hit when using custom str IDs?

Hi, I've been experimenting with using custom vertex IDs. I have a process that reads data from a file and writes (or updates with mergeV()) nodes to a JanusGraph 1.0.0 instance with a Cassandra+ES backend. Keeping exactly the same client code and test data, I noticed a 20% write slowdown when writing nodes with custom string IDs, rather than custom int IDs. In both cases, the IDs are exactly the same, with the only difference being that in one case I convert int to string, before submitting the query to the JG server (I'm using parametrized scripts submitted via gremlin-python). Is this a known issue? (I could not find info about this in the documentation)...
Ccriminosis4/19/2024

Mixed Index (ElasticSearch) Backpressure Ignored?

I understand that JG views writes to mixed indices as a "best effort" and documents(https://docs.janusgraph.org/operations/recovery/#transaction-failure) that failures in transactions with regards to mixed indices are left to a separate periodic clean up process after enabling JG's WAL:
If the primary persistence into the storage backend succeeds but secondary persistence into the indexing backends or the logging system fail, the transaction is still considered to be successful because the storage backend is the authoritative source of the graph. ... In addition, a separate process must be setup that reads the log to identify partially failed transaction and repair any inconsistencies caused....
Sshivam57.4/18/2024

Could not instantiate implementation: org.janusgraph.diskstorage.es.ElasticSearchIndex

i am using latets janusversion-1
Solution:
this issue has been resolved ,there were credential issue
Ppm_osc4/2/2024

JanusGraph authentication - restricted privileges

Hi All, we secured our JanusGraph with SaslAuthenticationHandler as desribed in the docs (https://docs.janusgraph.org/operations/server/#advanced-janusgraph-server-configurations). The defined user now can be used to read/write data in the graph database as well as for managing the schema. Is there a way to create a user that can only perform read/write on the graph but cannot change the schema? Thank you for any pointer on this....
Solution:
As "hadoopmarc" also answered on janusgraph-users list recently, the main pointers are: 1. authorization section of the Apache TinkerPop documentation (https://tinkerpop.apache.org/docs/current/reference/#authorization) 2. a sample file in the Gremlin server source code (https://github.com/apache/tinkerpop/blob/master/gremlin-server/src/test/java/org/apache/tinkerpop/gremlin/server/authz/AllowListAuthorizer.java) For reference, I thought it might be useful for others to share some snippets how I made authorization work with JanusGraph 1.0.0. The main purpose of authorization was to restrict users to access the JanusGraph Management System (e.g. open a graph and make schema changes on it)...
CCosmoBean4/1/2024

Issues faced for consistent indexing (both Composite & Mixed) [ElasticSearch]

--> Schema was provisioned, and then, all the schema was verified and the management objects closed. [All the indexes were in enabled state, both mixed and composite] --> [Issue:1] Index wasn't created in ElasticSearch, giving a 404, when a vertex totals direct Index Query is performed --> As a work around. for initial data 1000 Documents of sample data was ingested, and as we expected, the indexes were not present --> data was re-indexed. Indexes were created in ElasticSearch, and some composite indexes needed re-Indexing as well. After reindexing, the performance was as expected...
Solution:
@Boxuan Li , while i was using multi-tenacy, there were more configs to be given to the elastic search as well, for the graphName. Marking this as resolved. The index was being created with janusgraph_IndexName, where as it was supposed to be created in tenant_IndexName, It was a misconfiguration, that wasn't carefully considered. ...
Ttien3/22/2024

Custom ID best practice

Hey I'm looking into using custom ID for my DB vertices & came across this: https://github.com/JanusGraph/janusgraph/issues/1221#issuecomment-938060054 Where there is a mention of potentially moving to use UUID internally. Can I ask what's the overall consensus/traction on this? And does this mean it's preferable for new graphs to use custom id with UUID now? Thank you....
Ddee2xu3/21/2024

Indexing

Is it possible to have both a composite and mixed index for a vertex property. If so, is it ever desirable?
Solution:
Depending on your operator, the good index should be called. with equality (like in your exemple) yes the composite index should be called. In another traversal, if you go on a text operator, the mixed index will be called. It’s also depends on the type of index you specified for your property in your mixed index.
Sshivam57.3/15/2024

I need to perform upgrade my janusgraph to new version

Current Version Janus 0.6.3/Cassandra 4.0.5Migrate to Version Janus 1.0.0/Cassandra 4.0.6 how I can perform miggration...
JBJamie Burns3/11/2024

script in empty-sample.groovy is called twice

I have JanusGraph running as it's own process and remote to it from Gremlin. Since i'm learning, i create an in-memory graph in empty-sample.goovy when i start JanusGraph g = graph.traversal() rV = g.addV('r').property('name', 'r-name').next()...
Ppm_osc3/10/2024

JG 0.6 vs JG 1.0 different behaviour for same Gremlin query

Hi All, I have noticed some difference between JG 0.6 and JG 1.0. I have a person node created as follows: g.addV('person').property('firstName', 'John').property('lastName', 'Doe')...
Solution:
I did some more digging. It seems that this is not related to JanusGraph but to TinkerPop. Once I used Gremlin Console 3.5.5 and loaded "Modern" graph, executing "g.V().project('name', 'age').by('name').by('age')" returns: ==>[name:marko,age:29] ==>[name:vadas,age:27]...
Tthelearningpanda3/10/2024

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 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:...
JBJamie Burns3/7/2024

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...
Ttien3/6/2024

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....
FRFabio R3/1/2024

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() ...
Ccriminosis2/27/2024

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....
Ccdegroc2/20/2024

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?...
Next