Re: Not able to enable Write-ahead logs using tx.log-tx for existing JanusGraph setup
Radhika Kundam
Hi Boxuan,
Thank you for the response. I tried by forceClosing all management instances except the current one before setting "tx.log-tx". Management is getting updated with latest value, this is not the issue even without closing other instances. The issue is graph.getConfiguration().hasLogTransactions() is not getting refreshed through JanusGraphManagement property update. My understanding is logTransactions will be updated only through GraphDatabaseConfiguration:preLoadConfiguration which will be called only when we open graph instance JanusGraphFactory.open(config).I don't see any setter method to update logTransactions when we update JanusGraphManagement property. Because of this after updating JanusGraphManagement when we restart cluster it's invoking GraphDatabaseConfiguration:preLoadConfiguration which is updating logTransactions value then. Please correct me if I am missing anything and it'll be really helpful if any alternative approach to update logTransaction when we update Management property without restarting the cluster. Thanks, Radhika
|
|
Re: org.janusgraph.diskstorage.PermanentBackendException: Read 1 locks with our rid but mismatched timestamps
Ronnie
Hi Mark,
Thanks for the suggestions. Narrowed down the issue to JanusGraph's support for Azul Prime JDK 8, which generates nanosecond precision for Instant.now() API, as compared to the millisecond precision for OpenJDK 8. So the issue was resolved by applying the patch for https://github.com/JanusGraph/janusgraph/issues/1979. Thanks! Ronnie
|
|
Re: Fail to load complete edge data of Graph500 to Janusgraph 0.5.3 with Cassandra CQl as storage backends
shepherdkingqsp@...
On Tue, Aug 24, 2021 at 06:20 AM, <hadoopmarc@...> wrote:
withGot it. I will try it soon. Thanks, Marc! Shipeng
|
|
Re: Fail to load complete edge data of Graph500 to Janusgraph 0.5.3 with Cassandra CQl as storage backends
hadoopmarc@...
Hi Shipeng Qi,
The system that you use might be too small for the number of threads in the loading code. You can try to decrease the number of threads from 8 to 4 with: private static ExecutorService pool = Executors.newFixedThreadPool(4); Best wishes, Marc
|
|
Re: Not able to enable Write-ahead logs using tx.log-tx for existing JanusGraph setup
Boxuan Li
I suspect this is due to stale management instances. Check out https://developer.ibm.com/articles/janusgraph-tips-and-tricks-pt-2/#troubleshooting-indexes and see if it helps.
|
|
Fail to load complete edge data of Graph500 to Janusgraph 0.5.3 with Cassandra CQl as storage backends
shepherdkingqsp@...
Hi there,
I am new to Janusgraph. I have some problems in loading data to Janusgraph with Cassandra CQL as storage backend. When I tried to load Graph500 to Janusgraph, planning to run benchmark on it. I found that the edges loaded to janusgraph were not complete, 67107183 edges loaded while 67108864 supposed. (Vertices loaded were complete) The code and config I used is post as below. The code I used is a benchmark by tigergraph: - load vertex: https://github.com/gaolk/graph-database-benchmark/blob/master/benchmark/janusgraph/multiThreadVertexImporter.java - load edge: https://github.com/gaolk/graph-database-benchmark/blob/master/benchmark/janusgraph/multiThreadEdgeImporter.java The config I used is conf/janusgraph-cql.properties in Janusgraph 0.5.3 full (https://github.com/JanusGraph/janusgraph/releases/download/v0.5.3/janusgraph-full-0.5.3.zip) I got those exceptions when loading data. Exception 1: Exception 2:
I have found solution on google but got few things help. Could somebody help? Best Regards, Shipeng Qi
|
|
Re: Not able to enable Write-ahead logs using tx.log-tx for existing JanusGraph setup
Radhika Kundam
Hi Boxuan,For existing JanusGraph setup, I am updating tx.log-tx configuration by setting management system property as mentioned in https://docs.janusgraph.org/basics/configuration/#global-configuration
And I could see the configuration updated properly in JanusGraphManagement. managementSystem.get("tx.log-tx"); => prints false But this change is not reflected for logTransactions in GraphDatabaseConfiguration:preLoadConfiguration. graph.getConfiguration().hasLogTransactions() => prints falseWhile transaction recovery using StandardTransactionLogProcessor it checks for the argument graph.getConfiguration().hasLogTransactions() which is not having latest config('tx.log-tx') updated in ManagementSystem. To reflect the change, I had to restart cluster two times. Also since it's GLOBAL property I am not allowed to override using graph.configuration() and only available option is to update through ManagementSystem which is not updating logTransactions. I would really appreciate your help on this. Thanks, Radhika
|
|
Re: Wait the mixed index backend
toom@...
Thank you, this is exactly what I look for.
|
|
Re: Wait the mixed index backend
Boxuan Li
Hi Toom,
Do you want to ALWAYS make sure the vertex is indexed? If so and if you happen to use Elasticsearch, you can set index.[X].elasticsearch.bulk-refresh=wait_forSee https://www.elastic.co/guide/en/elasticsearch/reference/master/docs-refresh.html. Best, Boxuan
|
|
Wait the mixed index backend
toom@...
Hello,
The vertex that has just been created are not immediately available on mixed index (documented here [1]).
I'm looking for a way to make sure the vertex is indexed, by waiting the mixed index backend. I think the easiest way is to request the vertex id using direct index query:
graph.indexQuery("myIndex", "v.id:" + vertex.id())
But I didn't find a way to do that. Do you think this feature can be added? Maybe I can make a PR.
Regards,
Toom.
[1] https://github.com/JanusGraph/janusgraph/blob/v0.5.3/docs/index-backend/direct-index-query.md#mixed-index-availability-delay
|
|
graphml properties of properties
Laura Morales <lauretas@...>
Janus supports "properties of properties", ie. properties defined on other properties. How is this represented with graphml? Should I use nested elements like this
<node> <data key="foo"> bar <data key="xxx">yyy</data> </data> </node> or should I use attributes like this? <node> <data key="foo" xxx="yyy">bar</data> </node>
|
|
Re: Release vs full release?
hadoopmarc@...
janusgraph-full includes Gremlin Server
|
|
Release vs full release?
Laura Morales <lauretas@...>
What is the difference between janusgraph-<version>.zip and janusgraph-full-<version>.zip?
|
|
Re: graphml <edge> inside <node>
hadoopmarc@...
Hi Laura,
Your assumption about ordering of nodes and edges is correct, see the warning at: https://tinkerpop.apache.org/docs/current/reference/#graphml For your use case it seems that you can simply edit the nodes and edges out of order and now and then save an ordered version of the graph using the sort function of your editor. If you do a lot of editing, it is probably more convenient to write a custom csv import script for networkx and then save as graphml. Best wishes, Marc
|
|
Re: org.janusgraph.diskstorage.PermanentBackendException: Read 1 locks with our rid but mismatched timestamps
hadoopmarc@...
Hi Ronnie
No idea what is going on here, but just being pragmatic: the bin/janusgraph.sh script starts Cassandra, Elasticsearch and Gremlin Server using the conf/janusgraph-cql-es.conf graph configuration. As you can check in the janusgraph distribution files, this config does not specify the graph.timestamps property (so defaults to MICRO). So some things to try:
|
|
graphml <edge> inside <node>
Laura Morales <lauretas@...>
Sorry I'm asking to this list because I can't find this information anywhere else.
Is it possible to have an <edge> element nested inside a <node> element with graphml? And will Janus be able to read it correctly? Basically, instead of <node id="1"></node> <node id="2"></node> <edge source="1" target="2"></edge> I would like to use <node id="1"> <edge target="2"></edge> </node> <node id="2"></node> This would be very useful to me because I have a file (in graphml format) that I'm editing manually, and nesting edges will help me keep all the information "bundled" within a <node>; it would also reduce the verbosity by a lot. Unfortunately I have a feeling that this is not defined by the graphml spec, but I wonder if Janus can parse it?
|
|
Re: Need info regarding transaction recovery completion
Radhika Kundam
Thank you Boxuan for the response. I will create a feature request.
Regards, Radhika
|
|
Re: Need info regarding transaction recovery completion
Boxuan Li
Hi Radhika,
Unfortunately, there is no such API. If you are willing to dive into JanusGraph source code, you can modify StandardTransactionLogProcessor::fixSecondaryFailure method and build JanusGraph by yourself. You are also welcome to create a feature request on GitHub issues. Probably we should allow users to register a callback method when recovery is done. Best, Boxuan
|
|
Need info regarding transaction recovery completion
Hi Team,
I am using JanusGraphFactory.startTransactionRecovery to recover secondary failure entries. We need to perform some other action once recovery is completed, I couldn't find any API to know the status of recovery. Is there any way to know if the recovery of all the failure entries is completed. I would appreciate you help. Thanks, Radhika
|
|
org.janusgraph.diskstorage.PermanentBackendException: Read 1 locks with our rid but mismatched timestamps
Ronnie
Hi,
Environment - JanusGraph 0.5.3 on JDK: 1.8 - Backend: Cassandra 3.11.3 running on JDK 1.8 Warning and error during first time server startup
Graph configuration:
Note: Explicitly set graph.timestamps=MICRO ; when setting this to NANO as suggested here https://stackoverflow.com/questions/58916854/janusgraph-janusgraphexception-could-not-commit-transaction-due-to-exception-dur i get the following error:
Any pointers why this time resolution mismatch is happening? Thanks, Ronnie
|
|