Scope workspace name uniqueness constraint to project_id

Summary

As part of the Organizations Feature Parity self-assessment (Q1.3), index_workspaces_on_name enforces workspace name uniqueness globally with no project_id or organization_id scope. In a Cells environment, organizations on the same cell are prevented from reusing workspace names across org boundaries.

What needs to change

  • Replace index_workspaces_on_name with one scoped to project_id (the table's sharding key)
  • Update WorkspaceNameGenerator so its collision check is also scoped to project_id — currently it checks RemoteDevelopment::Workspace.by_names(workspace_name).exists? globally rather than per-project. See ee/lib/remote_development/workspace_operations/create/workspace_name_generator.rb#L25

References

  • Self-assessment: https://gitlab.com/gitlab-com/gl-infra/tenant-scale/organizations/organizations-feature-parity/-/work_items/13+
Edited Mar 04, 2026 by 🤖 GitLab Bot 🤖
Assignee Loading
Time tracking Loading