Mutation returns the same response

I am running two mutation using DRGAPH4J client which are defining an edge between 2 nodes:
For this mutation all nodes do exists:

 {
   set {
	<0x4e3d> <sells> <0x9c4e> .
        }
  }

For this mutation I just changed one UID which does not exist in the DB.

 {
   set {
	<0x4e3> <sells> <0x9c4e> .
        }
  }

For both mutation I do get the same response object

Response res = txn.doRequest(request)
res.toBuilder().getJson().toStringUtf8()

contains an empty JSON.

res.getUidsCount()
equals zero.

Is there way I can identify if the call was success or not. I would expect that for the first one I would get message that it created the edge successfully getUidsCount() = 1 and for the second one that it could not create the edge getUidsCount() = 0.

DGraph.io version v20.07.2

The uids are returned to you if they are newly allocated from blank nodes or empty upset variables. The json response is from queries run in the same request. The call returning without error would signify success in this case.

Feel free to correct any inaccuracies @core-devs

But does this make sense. One of the nodes that is used does not exits and following our explanation it would just create the node and associate it with the Edge. Indeed when querying the DB the node does exist. There are not constraints so to say, unlike you see in a relational database with a foreign key constraint. I could use the newly created node to add predicates to. Flexible but need to careful building any incorrect queries.

I have shortcutted verifyUid() in the alpha code and have it running with allowing me access to any UID with great success. My system can now use inserts instead of 100% upserts, and I can even use Ludicrious mode since my reads can be eventually consistent. I have been too busy to deploy large enough for benchmarks, but it lgtm.

Thought should be given to this use case, at least. Also, the allocation bugs I listed above should be fixed either way.