Assign UIDs in Slash GraphQL

As of now, we don’t plan to expose the /assign endpoint in Slash. The reason being, the UID counter is shared by tenants in multi-tenancy. A malicious user can ask for 2^64 UIDs causing the whole cluster to run out of UIDs.

Other than this, same UID can be used by multiple tenants.

Suppose on namespace-1 a user does this mutation

<0x1> <name> "alice" . 
<0x1> <age> 15 .

and then on namespace-2 a user does similar mutation

<0x1> <name> "bob" .
<0x1> <age> 12 .

We don’t prevent user of namespace-2 from using the same UID. It is just that user of namespace 1 will see the node <0x1> as:

<0x1> ----name--- <alice>
   |
   |____ age ____ 15

while the user of namespace-2 will see it as,

<0x1> ----name--- <bob>
   |
   |____ age ____ 12

while actually it will have 4 edges, something like this:

<0x1> ----(2name)--- <bob>
   |----(1name)--- <alice>
   |----(1age)--- 15
   |____ (2age) ____ 12

For your use case, you can assume that all the UIDs are owned by you.

1 Like