翻訳移行後のコントリビューションとメンバーシップマッピングに関するトラブルシューティング
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
プレースホルダユーザーの再割り当て中に、次の問題が発生する可能性があります。
ソースユーザーの再割り当てに失敗しました
現在、UIでfailedステータスのソースユーザーの再割り当てを再試行する方法はありません。イシュー589632を参照してください。
ただし、Railsコンソールで失敗したソースユーザーを手動で再試行できます:
# Find by the source user's placeholder user ID because placeholder user IDs are easy to fetch from the 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に表示されます。
これらのユーザーを削除するには、2つの方法があります:
- 管理者としてプレースホルダユーザーを削除。この方法は、残りのプレースホルダユーザーのコントリビューションを削除できると確信できる場合に最適です。
- GitLabインスタンスをGitLab 18.6以降にアップグレードし、Railsコンソールでプレースホルダユーザーの再割り当てを再試行します。この方法は、GitLab 18.5以前に再割り当てが完了し、残りのプレースホルダユーザーのコントリビューションが不明な場合に最適です。
Railsコンソールで、完了したプレースホルダユーザーの再割り当てを再試行するには:
# Find the placeholder user's source user
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