Fix Importer::BaseImporter#clean_up! not using proper primary key (#26269)

This commit is contained in:
Claire 2023-07-31 11:17:41 +02:00 committed by GitHub
parent d4807a5e64
commit d82abc877a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -45,8 +45,11 @@ class Importer::BaseImporter
# Remove documents from the index that no longer exist in the database # Remove documents from the index that no longer exist in the database
def clean_up! def clean_up!
index.scroll_batches do |documents| index.scroll_batches do |documents|
primary_key = index.adapter.target.primary_key
raise ActiveRecord::UnknownPrimaryKey, index.adapter.target if primary_key.nil?
ids = documents.pluck('_id') ids = documents.pluck('_id')
existence_map = index.adapter.target.where(id: ids).pluck(:id).each_with_object({}) { |id, map| map[id.to_s] = true } existence_map = index.adapter.target.where(primary_key => ids).pluck(primary_key).each_with_object({}) { |id, map| map[id.to_s] = true }
tmp = ids.reject { |id| existence_map[id] } tmp = ids.reject { |id| existence_map[id] }
next if tmp.empty? next if tmp.empty?