Renaming a blueprint variable used in another blueprint cause runtime error

If in First blueprint rename variable, used in Second blueprint, Second blueprint not marked as dirty and PIE recompile only First blueprint.

Steps:

  1. Create blank blueprint project;
  2. In content browser create Actor blueprint class, named “BP_B”;
  3. Add to BP_B integer variable, named “var”, and PrintString this variable in EventTick;
  4. In content browser create Actor blueprint class, named BP_A;
  5. Add to BP_A BP_B variable, named “B”, in EventBeginPlay add SpawnActor BP_B and save ReturnValue to this variable;
  6. In BP_A in EventTick increment B.var (Get, +, Set);
  7. Run PIE, watch on screen how the variable B.var increases;
  8. Rename BP_B variable “var” to “old”;
  9. Watch that the BP_B marked as Unsaved and Dirty, but BP_A only marked as Unsaved, not Dirty;
  10. In BP_A graph Get and Set nodes changed to “old”;
  11. Run PIE, watch that the variable B.old does not change;
  12. Watch error in Output Log: “PIE: Error: Blueprint Runtime Error: Attempted to access missing property ‘None’. … PIE: Error: Blueprint Runtime Error: Attempted to assign to None from function: ‘ExecuteUbergraph_BP_A’ …”

To fix this, I need to manually compile the blueprint BP_A, but it is not marked as Dirty, it’s not obvious.
When changing the name of a variable, all the blueprints that used this variable should be marked as dirty.

Affected 4.18.3, 4.19 Preview

Issue tracker UE-55369

Hello,

We’ve recently made a switch to a new bug reporting method using a more structured form. Please visit the link below for more details and report the issue using the new Bug Submission Form. Feel free to continue to use this thread for community discussion around the issue.

https://forums.unrealengine.com/unreal-engine/announcements-and-releases/1410408-unreal-engine-bug-submission-form

Thanks