Description

This seems to happen because FObjectReplicator::ReadyForDormancy will continually return false while FObjectReplicator::CanSkipUpdate returns true. In ReadyForDormancy, the actor's SendingRepState history will not be at its end (SendingRepState->HistoryStart != SendingRepState->HistoryEnd), but because CanSkipUpdate returns true, UpdateChangelistHistory will not be called to update the value of HistoryStart. This prevents the actor from going dormant, leading to the actor being considered for replication much more often than when push model is disabled.

Steps to Reproduce

In a project with push model enabled, create an initially dormant, replicated actor that enables push model for all of its replicated properties.
With bad network emulation settings enabled, have the server flush the actor's net dormancy and change one of its properties' values.
Expected: the client will receive the change to the replicated property, and the actor will become dormant again
Actual: the actor is unable to go back to being dormant

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-191014 in the post.

1
Login to Vote

Fixed
ComponentUE - Networking
Affects Versions5.3
Target Fix5.3
Fix Commit26717043
Main Commit26717043
Release Commit26716998
CreatedJul 24, 2023
ResolvedAug 1, 2023
UpdatedMar 1, 2024