rngcntr
rngcntr
JJanusGraph
Created by rngcntr on 11/10/2023 in #questions
Usage of _lock_ tables with ConfiguredGraphFactory vs. JanusGraphFactory
Hi everybody, we are noticing weird behavior of JanusGraph regarding the tables edgestore_lock_ and graphindex_lock_. We are operating two JanusGraph clusters which use the same schema, both running on ScyllaDB. While one instance is managed by JanusGraphFactory, we have configured multiple graphs in the other instance using ConfiguredGraphFactory. Recently, we noticed an unexpected storage usage caused by the table edgestore_lock_, so we started comparing the utilization of these tables for both scenarios:
Factory | JanusGraphFactory | ConfiguredGraphFactory (example keyspace)
-----------------+-------------------+------------------------------------------
edgestore | 2.20 TiB | 116.78 GiB
edgestore_lock_ | 1.57 MiB | 13.14 GiB
graphindex | 1010.49 GiB | 119.94 GiB
graphindex_lock_ | 1.15 MiB | 0 B
Factory | JanusGraphFactory | ConfiguredGraphFactory (example keyspace)
-----------------+-------------------+------------------------------------------
edgestore | 2.20 TiB | 116.78 GiB
edgestore_lock_ | 1.57 MiB | 13.14 GiB
graphindex | 1010.49 GiB | 119.94 GiB
graphindex_lock_ | 1.15 MiB | 0 B
As you can see, in the JanusGraphFactory case, both _lock_ tables are hardly used. That is exactly what we expect, since we are not using any uniqueness constraints and only use MULTI edges. As of our understanding, that should cause JanusGraph to not require locks. In the ConfiguredGraphFactory case, however, the edgestore_lock_ table seems to be heavily utilized, while graphindex_lock_ does not contain a single byte of data. As stated above, that feels weird, because both cases are using the same schema. Does anybody have a deeper understanding of JanusGraph's usage of _lock_ tables? Sadly, there's little to no documentation on that topic. Is there a way to disable lock usage for ConfiguredGraphFactory?
15 replies