We have ran into a very annoying bug with World Partition and CL validation- if you have an actor that references the level script in the world (e.g. it has an event bound on the level script graph) it will fail changelist validation 100% of the time (however it will pass map checks just fine).
From some quick poking around the major difference in behavior between the map check and the changelist validation is that the FStreamingGenerationMapCheckErrorHandler class derives from ITokenizedMessageErrorHandler, which explicitly ignores throwing errors from ‘non-existent actors’ (a case that the level script actor falls into as it’s not an external actor, though the comment doesn’t seem to imply stuff like this is what it’s there to ignore)-
// Don't report invalid references to non-existing actors as it can happen in valid scenarios, as the linker code will silently null out references when loading actors with missing
// references.
if (ReferenceActorDescView)
The changelist validator however doesn’t derive from ITokenizedMessageErrorHandler and rolls it’s own OnInvalidReference implementation which does not make this exception.
FText CurrentError = FText::Format(LOCTEXT("DataValidation.Changelist.WorldPartition.InvalidReference", "Actor {0} has an invalid reference to {1}"),
FText::FromString(GetFullActorName(ActorDescView)),
FText::FromString(ReferenceActorDescView ? GetFullActorName(*ReferenceActorDescView) : ReferenceGuid.ToString()));
And will simply print the GUID for the ‘non existent actor’.
The changelist validator can be ‘fixed’ by simply checking that ‘ReferenceActorDescView’ is valid before logging an error (to match the map check validator) but I’m not sure this would be considered a good change. (On the flip side you can break the MapCheck validator to be broken in the same way by removing the if check on ReferenceActorDescView in ITokenizedMessageErrorHandler::OnInvalidReference).
An official fix for this (or advice on how to ‘properly’ fix it/blessing on the UWorldPartitionChangelistValidator::OnInvalidReference change) would be appreciated. Thanks!
[Attachment Removed]