正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

翻訳移行後のコントリビューションとメンバーシップマッピングに関するトラブルシューティング

  • プラン: 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