DGraph server unresponsive after uncommited transactions

Hi Pawan,

I am running DGraph from the Docker image dgraph/dgraph:v1.0.4. My client is written in Python.

I’ve checked the DGraph server logs and the DGraph zero logs and neither is showing any errors. Maybe I need to start them in debug mode to capture more logging?

I’ve also narrowed down the problem. It is only mutation transactions that delete a node that end up hanging. Mutation transactions that add a node or change a node attribute/edge do not hang.

Here is exactly what causes the issue:

  1. My client instantiates a new transaction_id based on current timestamp in milliseconds.
  2. I submit a delete mutation to the endpoint /mutate/{transaction_id}. I extract the keys from the response.
  3. I submit the keys returned from (3) to the endpoint /commit/{transaction_id}.
  4. The server does not respond.

The same steps with a mutation that adds a node or sets a node attribute works fine. Note I am not submitting any lin_read parameters. According to the docs, since I have a single-server setup with no replication, I should not have to do that.

For now, I’ve gotten around the problem by submitting all delete mutations with the “X-Dgraph-CommitNow” header but it would be nice to get to the bottom of this issue.

EDIT: To be clear, in my original post I said this was due to transactions that I did not commit properly. The reason I thought that was because I was getting errors from the server when trying to resubmit failed transactions. I think that was actually because these were duplicate transactions submitted with a different start_ts parameter.

Based on the steps to reproduce above, this now actually seems to be a bug.

1 Like