From 5ef7c3432bc11270b26bb34dd1c3cb42d9c46b21 Mon Sep 17 00:00:00 2001 From: Julian Waller Date: Wed, 9 Oct 2024 10:50:18 +0100 Subject: [PATCH] fix: avoid excessive applyAndValidateOverrides --- .../packageManager/expectedPackages/generate.ts | 5 ++--- .../packageManager/expectedPackages/publication.ts | 8 +++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/meteor/server/publications/packageManager/expectedPackages/generate.ts b/meteor/server/publications/packageManager/expectedPackages/generate.ts index b84c6482a1..cdc21bf353 100644 --- a/meteor/server/publications/packageManager/expectedPackages/generate.ts +++ b/meteor/server/publications/packageManager/expectedPackages/generate.ts @@ -17,7 +17,6 @@ import { CustomPublishCollection } from '../../../lib/customPublication' import { logger } from '../../../logging' import { ExpectedPackagesContentCache } from './contentCache' import type { StudioFields } from './publication' -import { applyAndValidateOverrides } from '@sofie-automation/corelib/dist/settings/objectWithOverrides' /** * Regenerate the output for the provided ExpectedPackage `regenerateIds`, updating the data in `collection` as needed @@ -32,13 +31,13 @@ export async function updateCollectionForExpectedPackageIds( contentCache: ReadonlyDeep, studio: Pick, layerNameToDeviceIds: Map, + packageContainers: Record, collection: CustomPublishCollection, filterPlayoutDeviceIds: ReadonlyDeep | undefined, regenerateIds: Set ): Promise { const updatedDocIds = new Set() const missingExpectedPackageIds = new Set() - const packageContainers = applyAndValidateOverrides(studio.packageContainersWithOverrides).obj for (const packageId of regenerateIds) { const packageDoc = contentCache.ExpectedPackages.findOne(packageId) @@ -102,13 +101,13 @@ export async function updateCollectionForPieceInstanceIds( contentCache: ReadonlyDeep, studio: Pick, layerNameToDeviceIds: Map, + packageContainers: Record, collection: CustomPublishCollection, filterPlayoutDeviceIds: ReadonlyDeep | undefined, regenerateIds: Set ): Promise { const updatedDocIds = new Set() const missingPieceInstanceIds = new Set() - const packageContainers = applyAndValidateOverrides(studio.packageContainersWithOverrides).obj for (const pieceInstanceId of regenerateIds) { const pieceInstanceDoc = contentCache.PieceInstances.findOne(pieceInstanceId) diff --git a/meteor/server/publications/packageManager/expectedPackages/publication.ts b/meteor/server/publications/packageManager/expectedPackages/publication.ts index 02455803a9..e315421b76 100644 --- a/meteor/server/publications/packageManager/expectedPackages/publication.ts +++ b/meteor/server/publications/packageManager/expectedPackages/publication.ts @@ -1,6 +1,6 @@ import { Meteor } from 'meteor/meteor' import { PeripheralDeviceReadAccess } from '../../../security/peripheralDevice' -import { DBStudio } from '@sofie-automation/corelib/dist/dataModel/Studio' +import { DBStudio, StudioPackageContainer } from '@sofie-automation/corelib/dist/dataModel/Studio' import { TriggerUpdate, meteorCustomPublish, @@ -48,6 +48,7 @@ interface ExpectedPackagesPublicationUpdateProps { interface ExpectedPackagesPublicationState { studio: Pick | undefined layerNameToDeviceIds: Map + packageContainers: Record contentCache: ReadonlyDeep } @@ -122,6 +123,7 @@ async function manipulateExpectedPackagesPublicationData( const invalidateAllItems = !updateProps || updateProps.newCache || updateProps.invalidateStudio if (!state.layerNameToDeviceIds) state.layerNameToDeviceIds = new Map() + if (!state.packageContainers) state.packageContainers = {} if (invalidateAllItems) { // Everything is invalid, reset everything @@ -141,12 +143,14 @@ async function manipulateExpectedPackagesPublicationData( if (!state.studio) { logger.warn(`Pub.expectedPackagesForDevice: studio "${args.studioId}" not found!`) state.layerNameToDeviceIds = new Map() + state.packageContainers = {} } else { const studioMappings = applyAndValidateOverrides(state.studio.mappingsWithOverrides).obj state.layerNameToDeviceIds = buildMappingsToDeviceIdMap( applyAndValidateOverrides(state.studio.routeSetsWithOverrides).obj, studioMappings ) + state.packageContainers = applyAndValidateOverrides(state.studio.packageContainersWithOverrides).obj } } @@ -173,6 +177,7 @@ async function manipulateExpectedPackagesPublicationData( state.contentCache, state.studio, state.layerNameToDeviceIds, + state.packageContainers, collection, args.filterPlayoutDeviceIds, regenerateExpectedPackageIds @@ -181,6 +186,7 @@ async function manipulateExpectedPackagesPublicationData( state.contentCache, state.studio, state.layerNameToDeviceIds, + state.packageContainers, collection, args.filterPlayoutDeviceIds, regeneratePieceInstanceIds