Re: Template configuration parameters with comma-separated lists in Janusgraph 0.6.0
Mladen Marović
Hi Marc, thanks for the reply, but the error in the linked issue is a bit different, and also I'm already using I found a somewhat hackish workaround that seems to create the graph properly. Instead of using:
, I manually create a configuration from the template and open the graph:
After doing this, the graph is created seemingly without errors and I can use it as before. I would expect Kind regards, Mladen Marović |
|
Re: Template configuration parameters with comma-separated lists in Janusgraph 0.6.0
hadoopmarc@...
Hi Mladen,
After your original post, the following issue was reported: https://github.com/JanusGraph/janusgraph/issues/2822 Marc |
|
Re: Template configuration parameters with comma-separated lists in Janusgraph 0.6.0
Mladen Marović
Hi, thanks for the replies. However, my point was that I'm explicitly setting a value WITHOUT brackets when creating a template configuration in the startup script:
, which also shows when I inspect that template configuration:
, but when I create a new graph, it is created using a value WITH brackets:
which then produces the error when trying to open the graph. To reiterate, I'm using a very similar script in 0.5.3 which works without any issues, but in 0.5.3 I disable list parsing manually when creating the template. In 0.6.0 the codebase switched to commons-configuration2 which has list parsing disabled by default, so I don't think I should have to disable it again. Even if I do, or use a different delimiter, it still doesn't work because creating the template configuration seems to work fine, but creating a new graph from that configuration does not. I hope the issue itself is more clear now. Kind regards, Mladen Marović |
|
Re: Template configuration parameters with comma-separated lists in Janusgraph 0.6.0
Boxuan Li
Hi Mladen,
As Marc pointed out, this scenario is tested in the JanusGraph codebase. I noticed your error log contains:
It seems that you have redundant brackets around the value. Try using "test-master, test-worker1" rather than "[test-master, test-worker1]". Let me know if this helps. Best, Boxuan |
|
Re: Template configuration parameters with comma-separated lists in Janusgraph 0.6.0
hadoopmarc@...
Hi Mladen,
The good news: there actually is an explicit MultiHost test for this in the janusgraph test suite: https://github.com/JanusGraph/janusgraph/blob/v0.6.0/janusgraph-cql/src/test/java/org/janusgraph/core/cql/CQLConfiguredGraphFactoryTest.java The bad news: I could not get this test to run in my local environment. When I do (requires the docker service running): $ git checkout v.0.6.0 $ mvn clean install -DskipTests $ mvn test -Dtest=CQLConfiguredGraphFactoryTest -pl janusgraph-cql -Pcassandra3-murmur -e all 21 tests fail with: Caused by: org.janusgraph.graphdb.management.utils.ConfigurationManagementGraphNotEnabledException: Please add a key named "ConfigurationManagementGraph" to the "graphs" property in your YAML file and restart the server to be able to use the functionality of the ConfigurationManagementGraph class.As far as I can see, the tests are run on github CI, see: https://github.com/JanusGraph/janusgraph/blob/master/.github/workflows/ci-backend-cql.yml However, I cannot access the CI logs right now. I do not know where to go from here. Best wishes, Marc On Tue, Sep 21, 2021 at 02:29 PM, Mladen Marović wrote: ConfiguredGraphFactory |
|
Re: Can we find connected nodes without using gremlin query
hadoopmarc@...
Hi Anjani,
In individual query for a subgraph of 40 nodes will typically take between 0.1 and 1 seconds (with scyllaDb being the fastest storage backend). The number of 200 TPS can be reached easily by scaling the number of transactions, janusgraph instances and storage backend nodes. I guess this was already clear to you and you got it confirmed now! Marc |
|
Re: Unconfigured table exceptions in Janusgraph 0.6.0
Great to hear that worked for you.
As seen from this PR: https://github.com/JanusGraph/janusgraph/pull/2812 the default cql request timeout of 10 seconds isn't applied if you don't provide it explicitly. Thus, it now default to 2 seconds (as seen from DataStax driver default configurations). You can set it explicitly by providing the next config: `storage.cql.request-timeout = 10000` (to make it 10 seconds timeout). Best regards, Oleksandr Porunov |
|
Re: Can we find connected nodes without using gremlin query
anjanisingh22@...
Thanks Marc for response.
Our graph is very large around 1TB, so can not hold in memory. Subgraphs that we want to retrieve can have 30 -40 connected nodes. We have requirement of around 200 TPS. We are using JanusGraph only, i meant i am using gremlin query to search in Janus graph. Thanks, Anjani |
|
Re: JanusGraph 0.6.0 Binary Driver failing on serialization
hadoopmarc@...
Hi Chris,
Hard to interpret your report. It maybe worthwhile to try the documented way of remote connection with traversal.withRemote(...) or Cluster.open(...): https://tinkerpop.apache.org/docs/current/reference/#gremlin-java-connecting There should be no need to instantiate serializer objects yourself. Best wishes, Marc |
|
Template configuration parameters with comma-separated lists in Janusgraph 0.6.0
Mladen Marović
Hello, I wanted to try out the new Janusgraph 0.6.0 release and I encountered some unexpected issues while trying to deploy it on Cassandra 3.11.5. One of the issues I came across seems to be connected to the switch to commons-configuration2. In previous Janusgraph versions, I used a startup script to create a configuration template for graphs and a single
An important piece of this was the line After installing Janusgraph 0.6.0 I used a similar script, but with
The script executed without errors, but the graph
This indicates that the string was split somewhere along the way, and the resulting array
I even tried to manually set the delimiter in my script to be something other than Did anyone else come across this issue? Did I miss something else in the changelog about this? Kind regards, Mladen Marović |
|
Re: Can we find connected nodes without using gremlin query
hadoopmarc@...
Hi Anjani,
How large is your graph, can you hold it in memory in its entirety? How large are the subgraphs you want to retrieve in terms of width and size? What are your requirements regarding TPS? When you refer to "gremlin" what graph system did you use instead of JanusGraph? Best wishes, Marc |
|
Re: Unconfigured table exceptions in Janusgraph 0.6.0
Mladen Marović
Hello, thanks for the responses. I attempted to add
I'm guessing something's wrong with the syntax, but I couldn't get it right. Instead, I set
This seems to give acceptable results because out of about 20-25 attempts at creating different graphs, only one resulted in the same error as before. For completeness, i also went to the extreme by setting the same parameter to
so I'm guessing there are some other timeouts to consider as well, but did not look further into that. Additionally, I also tested
Right now setting Kind regards, Mladen Marović P.S. I managed to get the string configuration to work as well by adding |
|
Can we find connected nodes without using gremlin query
anjanisingh22@...
Hello Everyone,
We have a requirement to build a search functionality to find connected nodes based on some identifiers with high performance and TPS. While doing analysis we noticed gremlin queries are not able to support required performance. So i was thinking it there any other way to get connected node. For ex , Is it possible to do via janus ES? Please share your thoughts and suggestions. Appreciate your help. Thanks, Anjani |
|
Re: Unconfigured table exceptions in Janusgraph 0.6.0
Also, notice, if you want to use multiple configuration options, you will need to split them using new line character. I.e. `\n` and not `;`.
See example here: https://github.com/JanusGraph/janusgraph/blob/26a06a0d27931d5e97ca7870493336fe21b522be/janusgraph-cql/src/test/java/org/janusgraph/diskstorage/cql/CQLConfigTest.java#L98 |
|
Re: Unconfigured table exceptions in Janusgraph 0.6.0
You can also play with `advanced.metadata.schema.debouncer.max-events`. For more configurations see: https://docs.datastax.com/en/developer/java-driver/4.13/manual/core/configuration/reference/
|
|
Re: Unconfigured table exceptions in Janusgraph 0.6.0
Hi,
Mladen that issue is most likely related to this discussion of how the new CQL driver updates schema view: https://groups.google.com/a/lists.datastax.com/g/java-driver-user/c/Bc0gQuOVVL0 As suggested in that thread, to improve performance we set metadata_schema_window to 0 (to keep schema creation performance similar to the previous driver). That said, we probably made a mistake when hardcoded that value to 0. We probably should make it configurable in the next minor release. (you can see that configuration set here: https://github.com/JanusGraph/janusgraph/blob/abe67055a23c729d55e0e4ac1508189d93f9820c/janusgraph-cql/src/main/java/org/janusgraph/diskstorage/cql/builder/CQLProgrammaticConfigurationLoaderBuilder.java#L144) Luckily, there is a way to overwrite JanusGraph default CQL Driver configurations. See explanation here (configuration options under `storage.cql.internal`): https://docs.janusgraph.org/configs/configuration-reference/#storagecqlinternal Probably the easiest way to overwrite that value as for now would be to use `storage.cql.internal.string-configuration`. I.e. something like: ``` storage.cql.internal.string-configuration = "datastax-java-driver { advanced.metadata.schema.debouncer.window = 1 second }" ``` The DataStax default value is "1 second" thus, I would recommend to try 1 second as they recommend. In case that isn't enough you could try to increase that value but be aware that your schema creation (i.e. new graphs initial creation) will be longer due to this window delay. I have opened the issue to tack here: https://github.com/JanusGraph/janusgraph/issues/2809 Let me know if increasing `advanced.metadata.schema.debouncer.window` helps with your issue. Best regards, Oleksandr Porunov |
|
Unconfigured table exceptions in Janusgraph 0.6.0
Mladen Marović
Hello, I wanted to try out the new Janusgraph 0.6.0 release and I encountered some unexpected issues while trying to deploy it on Cassandra 3.11.5. The first issue occurs during graph creation. I'm trying to set up a ConfiguredGraphFactory. When starting Janusgraph for the first time, it attempts to create its internal tables ('graphindex', 'janusgraph_ids', ...), but sometimes fails to create a table and throws the following exception:
Inspecting the keyspaces via
Upon restarting, Janusgraph continues from where it last failed and tries to create the other missing tables. Eventually,
I tried to test this multiple times by shutting down Janusgraph, dropping its keyspaces in Cassandra, and starting it again. Sometimes it successfully finishes from the first try, sometimes it fails once, and sometimes multiple times, on different tables. As for the relevant configuration, I've updated it according to the 0.6.0 changelog. I'm using the following
and
Since this is my first look at Janusgraph 0.6.0, I'm testing it on two local VMs. I'm using Ansible scripts to automate the deployment for Janusgraph, Cassandra and Elasticsearch, and the entire setup has previously been tested on multiple different Janusgraph versions (0.2.0, 0.3.1, 0.4.0, 0.5.1, 0.5.3) and on several different environments. Therefore, I do not expect there to be any issues with Cassandra, Elasticsearch, the deployment scripts, or the setup itself, unless I missed some breaking change in the 0.6.0 changelog that I'm not aware of. Did anyone else have a similar issue? Kind regards, Mladen Marović P.S. Since this turned out to be a lengthy post, I'll create another post about the other issue I mentioned. |
|
Re: JanusGraph 0.6.0 Binary Driver failing on serialization
Thank you Marc, I was able to reproduce your sample by console: :remote connect tinkerpop.server conf/remote.yaml session # it is GryoMessageSerializerV3d0 - no problem here, but must have serializeResultToString: true :remote connect tinkerpop.server conf/remote-graph-binary.yaml session :> g.V().properties("some") ==> Server error - Error during serialization: java.lang.IllegalStateException. :> g.V().properties("some").hasNext() => true, it is actually working in this context, where server testing the results, not the client after serialization. It is fine when "remote-graph-binary.yaml" configuration is equipped with serializeResultToString: true.
That hint should indicate that our server is different that the driver we use in java to remote access, but with more debugging I cannot say where is it... We run JanusGraph services through "bin/gremlin-server-websoc.sh", that suppose to run new Binary Driver with gremlin-server-websoc.yaml (+serializeResultToString: true). Then we getting remote access from Java by connection with MessageSerializer<?> serializer = new GraphBinaryMessageSerializerV1(typeSerializerRegistry); To be sure, we have true for serializeResultToString in the configuration, we even modified that on fly: final Map<String, Object> cfg = new HashMap<>(); cfg.put("serializeResultToString",true); serializer.configure(cfg, null); With serializeResultToString(true) we have the same exception IllegalStageException as initially described, with (false) it is faling everywhere, on simple command like: GraphTraversal<Vertex, Vertex> t = g.V().hasLabel(label).has(property, value); if (t.hasNext()) { // java.lang.ClassCastException: java.lang.String cannot be cast to org.apache.tinkerpop.gremlin.process.remote.traversal.RemoteTraverser so for serializeResultToString(true), all is fine, except "gv().properties()",... somehow we have good driver config for remote access. Regards, Chris
|
|
Re: Berkeley JE information
kosulin@...
Here is how I see this: - the current public release with direct download is 4 years old 7.5.11, compiled with Java 8 and supporting Java 9 according to its and build script; |
|
Re: Berkeley JE information
Thanks for this information [I mean the facts, this forum is not intended to spread opinions on third parties].
After, checking, I was surprised myself. The deviation from the JE has occurred since v0.5.0. However, the following file: https://github.com/JanusGraph/janusgraph/blob/v0.6.0/NOTICE.txt Still mentions: * Oracle BerkeleyDB Java Edition [https://www.oracle.com/technetwork/products/berkeleydb/] (see license below)This does not seem correct. Can anyone clarify? Also relevant: https://www.oracle.com/database/technologies/related/berkeleydb/berkeleydb-licensing.html Best wishes, Marc |
|