Crash when calling `recoverUsers` twice for the same user

Author: qaisjpCreated Aug 13, 2024Updated Aug 14, 2024
  • Sourcegraph version:: 5.6.185
  • Platform information: Sourcegraph Cloud

Steps to reproduce:

  1. Soft delete a user.
  2. Call the following mutation twice for that user: mutation { recoverUsers(userIDs: [$userID]) { alwaysNil } }

Expected behavior:

The error message should say that the user is already recovered, or the request should be idempotent (with the response indicating whether an action was taken).

Actual behavior:

Postgres failure is propagated to the client:

json
{
  "errors": [
    {
      "message": "ERROR: duplicate key value violates unique constraint \"names_pkey\" (SQLSTATE 23505)",
      "path": [
        "recoverUsers"
      ]
    }
  ],
  "data": {
    "recoverUsers": null
  }
}

Source: sourcegraph/sourcegraph-public-snapshot