마이그레이션 후 기여 및 멤버십 매핑 문제 해결
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
플레이스홀더 사용자 재할당 중에 다음과 같은 문제가 발생할 수 있습니다. failed 상태의 소스 사용자 재할당을 재시도하려면 GraphQL API 또는 Rails 콘솔을 사용할 수 있습니다. importSourceUserRetryFailedReassignment 뮤테이션을 사용하여 실패한 재할당을 재시도합니다:
플레이스홀더 사용자 재할당 중에 다음과 같은 문제가 발생할 수 있습니다.
소스 사용자 재할당 실패#
failed 상태의 소스 사용자 재할당을 재시도하려면 GraphQL API 또는 Rails 콘솔을 사용할 수 있습니다. 자세한 내용은 이슈 589777을 참조하세요. UI 지원에 대해서는 이슈 593001에서 논의됩니다.
GraphQL API 사용#
히스토리
- GitLab 18.11에서 도입됨.
importSourceUserRetryFailedReassignment 뮤테이션을 사용하여 실패한 재할당을 재시도합니다:
mutation {
importSourceUserRetryFailedReassignment(input: { id: "gid://gitlab/Import::SourceUser/" }) {
importSourceUser {
id
status
}
errors
}
}
를 임포트 소스 사용자 ID로 교체합니다.
이 ID는 네임스페이스에서 importSourceUsers를 쿼리하여 찾을 수 있습니다.
Rails 콘솔 사용#
Rails 콘솔에서 실패한 소스 사용자를 수동으로 재시도할 수 있습니다:
# 플레이스홀더 사용자 ID로 찾기 - UI에서 쉽게 가져올 수 있으므로
placeholder_user_id = <PLACEHOLDER_USER_ID>
import_source_user = Import::SourceUser.find_by(placeholder_user_id: placeholder_user_id)
if import_source_user.failed?
import_source_user.update!(status: Import::SourceUser::STATUSES[:reassignment_in_progress])
Import::ReassignPlaceholderUserRecordsWorker.perform_async(import_source_user.id)
puts "Reassignment retry queued"
else
puts "Import source user status: #{import_source_user.status} (expected 'failed')"
end
반복적인 실패 조사#
소스 사용자가 다시 실패하는 경우 importer.log에서
Failed to reassign placeholder user 메시지가 포함된 로그를 확인하여 근본 원인 조사를 시작하세요.
소스 사용자가 성공적으로 재할당되었지만 플레이스홀더 사용자가 삭제되지 않은 경우#
플레이스홀더 사용자는 사용자 기여를 성공적으로 재할당한 후 삭제됩니다. 하지만 플레이스홀더 사용자의 ID를 참조하는 일부 데이터베이스 레코드가 재할당 후에도 데이터베이스에 남아 있어 플레이스홀더 사용자가 삭제되지 않을 수 있습니다. 이런 경우 관리자는 관리자 사용자 테이블에서 여전히 플레이스홀더 사용자를 볼 수 있습니다. 플레이스홀더 사용자는 라이선스 한도에 포함되지 않으며 일반적인 GitLab 운영에 영향을 미치지 않지만, 일부 관리자는 마이그레이션 후 모든 플레이스홀더 사용자가 삭제되기를 원할 수 있습니다.
GitLab 18.5 이하에서 플레이스홀더 사용자를 재할당하는 사용자가 이 시나리오를 더 많이 겪을 수 있습니다. 이런 경우 Unable to delete placeholder user because it is still referenced in other tables 메시지가 플레이스홀더 사용자의 ID와 함께 importer.log에 나타납니다.
이러한 사용자를 삭제하려면 다음 중 하나를 수행합니다:
- 관리자로서 플레이스홀더 사용자 삭제. 이 방법은 남아 있는 플레이스홀더 사용자 기여를 삭제해도 된다고 확신할 때 가장 적합합니다.
- GitLab 인스턴스를 GitLab 18.6 이상으로 업그레이드하고 Rails 콘솔에서 플레이스홀더 사용자의 플레이스홀더 재할당을 재시도합니다. 이 방법은 재할당이 GitLab 18.5 이하에서 완료되었고 남아 있는 플레이스홀더 사용자 기여에 대해 확신이 없을 때 가장 적합합니다.
Rails 콘솔에서 완료된 플레이스홀더 사용자의 재할당을 재시도하려면:
# 플레이스홀더 사용자의 소스 사용자 찾기
placeholder_user_id = <PLACEHOLDER_USER_ID>
import_source_user = Import::SourceUser.find_by(placeholder_user_id: placeholder_user_id)
if import_source_user.completed?
import_source_user.update!(status: Import::SourceUser::STATUSES[:reassignment_in_progress])
Import::ReassignPlaceholderUserRecordsWorker.perform_async(import_source_user.id)
puts "Reassignment retry queued"
else
puts "Import source user status: #{import_source_user.status} (expected 'completed')"
end
