Interaction with JanusGraph are done only through a single gRPC server that is running gremlin-python, let's call it DB-SERVER.
Last time we've done testing against BT was with version 0.4.1 of JanusGraph, precompiled to support HBase1.
All of our components communicate via gRPC.
Description of the problem:
The DB-SERVER creates a Vertex i, generate some XML to represent work to be done, and sends it to another service for processing, let's call in ORCHESTRATOR.
The ORCHESTRATOR generates two properties, w and r (local identifiers) and sends them back to the DB-SERVER, so they will be set as properties on Vertex i. These two properties are also mixed String indexes.
After setting the properties, DB-SERVER will ack ORCHESTRATOR, which will start processing. As part of the processing, ORCHESTRATOR will send updates back to the DB-SERVER using w and r.
On getting these updates DB-SERVER, it will try looking up Vertex i based on w and r, like so: g.V().has("r", <some_r>).has("w", <some_w>).next()
At that point, a null / None is returned as the traversal fails to find Vertex i.
Trying the same traversal in a separate console (python and gremlin) does fetch the vertex. Since it's a single instance cluster, I ruled out any eventual consistency issues.
I'm not sure if it's a regression introduced after 0.4.1.
I've also validated that db-caching is turned off.