diff --git a/src/core/server/saved_objects/import/check_conflict_for_data_source.ts b/src/core/server/saved_objects/import/check_conflict_for_data_source.ts index 50005777aba0..6611b01dfb2a 100644 --- a/src/core/server/saved_objects/import/check_conflict_for_data_source.ts +++ b/src/core/server/saved_objects/import/check_conflict_for_data_source.ts @@ -18,13 +18,13 @@ interface ImportIdMapEntry { } /** - * function to check the conflict when multiple data sources are enabled. + * function to only check the data souerce conflict when multiple data sources are enabled. * the purpose of this function is to check the conflict of the imported saved objects and data source * @param objects, this the array of saved objects to be verified whether contains the data source conflict * @param ignoreRegularConflicts whether to override * @param retries import operations list * @param dataSourceId the id to identify the data source - * @returns {filteredObjects, errors, importIdMap, pendingOverwrites } + * @returns {filteredObjects, errors, importIdMap } */ export async function checkConflictsForDataSource({ objects, @@ -35,11 +35,9 @@ export async function checkConflictsForDataSource({ const filteredObjects: Array> = []; const errors: SavedObjectsImportError[] = []; const importIdMap = new Map(); - const pendingOverwrites = new Set(); - // exit early if there are no objects to check if (objects.length === 0) { - return { filteredObjects, errors, importIdMap, pendingOverwrites }; + return { filteredObjects, errors, importIdMap }; } const retryMap = retries.reduce( (acc, cur) => acc.set(`${cur.type}:${cur.id}`, cur), @@ -73,13 +71,15 @@ export async function checkConflictsForDataSource({ } else if (previoudDataSourceId && previoudDataSourceId === dataSourceId) { filteredObjects.push(object); } else { + /** + * Only update importIdMap and filtered objects + */ const omitOriginId = ignoreRegularConflicts; importIdMap.set(`${type}:${id}`, { id: `${dataSourceId}_${rawId}`, omitOriginId }); - pendingOverwrites.add(`${type}:${id}`); filteredObjects.push({ ...object, id: `${dataSourceId}_${rawId}` }); } } }); - return { filteredObjects, errors, importIdMap, pendingOverwrites }; + return { filteredObjects, errors, importIdMap }; } diff --git a/src/core/server/saved_objects/import/import_saved_objects.test.ts b/src/core/server/saved_objects/import/import_saved_objects.test.ts index 2a9c4b0ff5ed..49db18159183 100644 --- a/src/core/server/saved_objects/import/import_saved_objects.test.ts +++ b/src/core/server/saved_objects/import/import_saved_objects.test.ts @@ -86,7 +86,6 @@ describe('#importSavedObjectsFromStream', () => { errors: [], filteredObjects: [], importIdMap: new Map(), - pendingOverwrites: new Set(), }); getMockFn(createSavedObjects).mockResolvedValue({ errors: [], createdObjects: [] }); }); @@ -500,7 +499,6 @@ describe('#importSavedObjectsFromStream', () => { errors: [], filteredObjects: [], importIdMap: new Map(), - pendingOverwrites: new Set([`${dsSuccess2.type}:${dsSuccess2.id}`]), }); getMockFn(checkConflicts).mockResolvedValue({ errors: [], diff --git a/src/core/server/saved_objects/import/import_saved_objects.ts b/src/core/server/saved_objects/import/import_saved_objects.ts index 6cbb1059fdc3..a5744478fd7d 100644 --- a/src/core/server/saved_objects/import/import_saved_objects.ts +++ b/src/core/server/saved_objects/import/import_saved_objects.ts @@ -94,22 +94,6 @@ export async function importSavedObjectsFromStream({ ignoreRegularConflicts: overwrite, }; - // resolve when data source exist, pass the filtered objects to next check conflict - if (dataSourceId) { - const checkConflictsForDataSourceResult = await checkConflictsForDataSource({ - objects: collectSavedObjectsResult.collectedObjects, - ignoreRegularConflicts: overwrite, - dataSourceId, - }); - - checkConflictsParams.objects = checkConflictsForDataSourceResult.filteredObjects; - - pendingOverwrites = new Set([ - ...pendingOverwrites, - ...checkConflictsForDataSourceResult.pendingOverwrites, - ]); - } - const checkConflictsResult = await checkConflicts(checkConflictsParams); errorAccumulator = [...errorAccumulator, ...checkConflictsResult.errors]; importIdMap = new Map([...importIdMap, ...checkConflictsResult.importIdMap]); @@ -124,6 +108,19 @@ export async function importSavedObjectsFromStream({ ignoreRegularConflicts: overwrite, importIdMap, }; + + /** + * If dataSourceId exist, + */ + if (dataSourceId) { + const checkConflictsForDataSourceResult = await checkConflictsForDataSource({ + objects: checkConflictsResult.filteredObjects, + ignoreRegularConflicts: overwrite, + dataSourceId, + }); + checkOriginConflictsParams.objects = checkConflictsForDataSourceResult.filteredObjects; + } + const checkOriginConflictsResult = await checkOriginConflicts(checkOriginConflictsParams); errorAccumulator = [...errorAccumulator, ...checkOriginConflictsResult.errors]; importIdMap = new Map([...importIdMap, ...checkOriginConflictsResult.importIdMap]);