Description

If user sets InstallSpeed of HttpChunkInstaller to anything other than Pause, the current HttpChunkInstaller checks all Manifests and downloads all Chunks without permission.

Licensee wants to begin chunk downloading when request aseet loading by AssetManager. In other words, they want you to download chunk only when they need to use a asset of the chunk.

As far as the code is concerned, the following code of HttpChunkInstaller is a problem.

 

void FHTTPChunkInstall::UpdatePendingInstallQueue()
{
...
if (InstallingChunkID == -1)
{
...

// Install the first available chunk
for (auto It = RemoteManifests.CreateConstIterator(); It; ++It)
{
   if (It)
   {
      IBuildManifestPtr ChunkManifest = It.Value();
      auto ChunkIDField = ChunkManifest->GetCustomField("ChunkID");
      if (ChunkIDField.IsValid())
      {
         BeginChunkInstall(ChunkIDField->AsInteger(), ChunkManifest, FindPreviousInstallManifest(ChunkManifest));
         return;
      }
   }
}

...
}

Because of this part, InstallerState of HttpChunkInstaller after startup is put in Installing state. This is the cause of this problem. If comment out this part, HttpChunkInstaller will work as requested by Licensee.

 

I prepared a sample project for testing on the local server.
In this sample, the timing they want to start Chunk download  is when you press 1 key( use Set Install Speed node ), not when you press the 0 key( use Async Load Primary Asset ).

This problem is a very important issue for licensees.

Have Comments or More Details?

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

0
Login to Vote

Won't Fix
ComponentOnline - HTTP
Affects Versions4.19
CreatedMay 11, 2018
ResolvedMay 12, 2021
UpdatedJul 12, 2021