Hello!
Recently, we’ve started using Incremental Cook to improve our atrocious cook times. We’re on 5.6.1 but have taken many changesets from 5.7 and 5.8 around cook indeterminism, so there’s lots of “future code” here. However, we’ve noticed one case which completely breaks our Incremental Cooks. The specifics are hard to pin down, but here’s what we’ve observed and understand about the problem.
The core symptom is that, occasionally, cooks will begin failing randomly after Incrementally Cooking multiple times in a row successfully. They will fail with errors of this structure:
LogCook: Error: Content is missing from cook. Source package referenced an object in target package but the target package was marked NeverCook or is not cookable for the target platform.
Source package: <Some World Partition Generated Cell>
Target package: <Some On-Disk Asset, Like a Mesh or Texture>
Referenced object: <Some On-Disk Asset, Like a Mesh or Texture>
Notably, it is often large numbers of these appearing suddenly for the same World Partition Generated Cell. For example, we went from a valid cook to an incremental cook which was missing almost 30 items from the cell “MainGrid_L0_X0_Y0_DL69955158” in one map. It’s not always data layer cells or any other detectable pattern in terms of which kind of cell is affected. These worlds are using Runtime Hash Set partitioning, multiple streaming grids, and the error does not seem to be related to embedded level instances or subworlds.
Looking in the map and adding additional logging confirms the missing content is seemingly always a reference of some OFPA actor in the world. For example, we have seen this with a skeletal mesh “SK_Human_Tops_HikingBackpack_Straps_01” which was only included in a map due to a SkeletalMeshActor placed in the world.
Moreover, this only seems to occur after the asset dependency (but NOT the OFPA actor) are modified. So in the previous example, we found this started occurring after one of our artists had updated the SK_Human_Tops_HikingBackpack_Straps_01 asset. The OFPA actor in the map wasn’t touched -- it didn’t need to be, after all -- but our next incremental cook failed in this way.
Repeating the Incremental Cook always fails in the same way because it’s just replaying from the Zen Oplog for the affected assets. We performed a full cook after, which resolved the issue.
So, my best guess that OFPA actor downstream dependencies are not correctly accounted for in the artifact key determination to see if a World Partition world / cell needs recooked? But I’m guessing here.
Can you give us any guidance for how to further debug this? I can somewhat reliably reproduce this and get additional information if needed.
Thanks!
[Attachment Removed]