[Iris] After reconnect client receives replicated state of the objects, which may not be loaded yet

I assume that this is related to an already opened issue, but I hope it will provide more context.

The issue is that the server sends the update before the client has fully loaded the map or data layers. Or the client tells the server that it’s ready for the initial replicated state too soon.

I’ve also tried to connect with different clients, locally from one machine. I noticed that only the first client who reconnects to an empty server is affected. All of the others, who connects and reconnects to a non-empty server doesn’t have this issue, which I found weird. But this may be related to that all of the clients instances are launched on the same machine.

I attached a stripped version of the Verbose logs from Iris where I reproduced the issue. I hope it will help.

Steps to Reproduce
I managed to reproduce this issue using the world partition and data layers.

At first, set up a map:

  1. Create a map with world partition enabled
  2. Create a data layer asset with DataLayerType = Runtime and LoadFilter = None
  3. Place a replicated actor on the level in the Editor
  4. Configure this actor so it will be a part of the created DataLayer (Details Actor Panel -> DataLayers -> DataLayerAssets)

And then:

  1. Run the dedicated server with Path/To/UnrealEditor.exe ProjectName.uproject LP_IrisTest -server -log -NewConsole -LogCmds=“LogIrisBridge Verbose, LogIris Verbose, LogIrisFiltering Verbose”
  2. Run the client with Path/To/UnrealEditor.exe ProjectName.uproject 127.0.0.1 -game -windowed -resx=1280 -resy=720 -log -NewConsole -LogCmds=“LogIrisBridge Verbose, LogIris Verbose, LogIrisFiltering Verbose”
  3. After successful connection to the game, disconnect from the server (type disconnect/travel to another map/close application, this doesn’t matter)
  4. Connect again to the same server
  5. Observe the issue, you should hit the ensure on the server on this line: Iris/ReplicationSystem/ObjectReplicationBridge.cpp:2333

ensureMsgf(false, TEXT("NetRefHandle error: Replication disabled for %s. Client was unable to read the creation data and did not spawn the netobject."), *NetRefHandleManager->PrintObjectFromNetRefHandle(RefHandle));

Hi,

Thank you for the detailed report and information! This does seem to be the same issue as UE-263115, and I’ve linked to the info provided here on our internal tracker for the issue. I can’t provide an estimate as to when this issue may be resolved, but the info provided here should help with reproducing the problem and tracking down the cause.

Thanks,

Alex