This new cache hierarchy does not require the cache stores within it to complete every operation synchronously. When the child cache stores start to do async I/O, this hierarchy will support that instead of blocking like the existing hierarchy does.
This is a snapshot of the work in progress that is only implemented for the functions in ILegacyCacheStore.
#rb Zousar.Shaker
#rnx
#preflight 61f37e487a7f0d39ddd2d38b
#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18768547 in //UE5/Release-5.0/... via CL 18768556 via CL 18768581
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18768594 by devin doucette in ue5-main branch]
FCacheRecord: Add Save function that allows appending to an existing package.
#preflight 61f174dcf8088a3d298c6e48
#ROBOMERGE-AUTHOR: matt.peters
#ROBOMERGE-SOURCE: CL 18736675 in //UE5/Release-5.0/... via CL 18736693 via CL 18737351
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18737679 by matt peters in ue5-main branch]
#preflight 61f00ecfbe0f0e0a62022561
#ROBOMERGE-AUTHOR: matt.peters
#ROBOMERGE-SOURCE: CL 18722523 in //UE5/Release-5.0/... via CL 18722542 via CL 18722620
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18722629 by matt peters in ue5-main branch]
The DDC thread pool is a temporary workaround for issues with high-latency cache accesses happening on regular worker thread, which are reduced in number in 5.0 compared to 4.27. Moving it to be private within DDC will keep it easy to remove once the high-latency caches are accessed through an async API.
#rb Zousar.Shaker
#rnx
#preflight 61e5b194873f2ea48f3e0b02
#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18634975 in //UE5/Release-5.0/... via CL 18634980 via CL 18634997
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)
[CL 18637555 by devin doucette in ue5-main branch]
The name more accurately reflects the purpose of the flag, which is to allow a partial record to be fetched or stored in the absence of data for otherwise-required values.
#rb Zousar.Shaker
#rnx
#preflight 61e5ae87a2616066f68abc35
#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18634974 in //UE5/Release-5.0/... via CL 18634979 via CL 18634988
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)
[CL 18637552 by devin doucette in ue5-main branch]
The hierarchical backend now considers the Store and Query flags, whether backends are writable, and whether backends allow lower cache levels to be filled.
Features of cache propagation that are missing at this point:
- Propagation within GetChunks.
- Consideration of the local/remote classification of the backend relative to the cache policy.
- Removal from the response of data that was requested for propagation purposes but was meant to be skipped.
- Use of the PartialOnError flag and custom policies to allow higher level backends to return parts of records while attempting to recover only the missing pieces from lower level caches.
- Disabling propagation of Get and Put after reaching backend that contains the record or value, and disables filling of lower cache levels.
#rb Zousar.Shaker
#rnx
#preflight 61e2709d4b4bd12cbef7cc11
#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18632967 in //UE5/Release-5.0/... via CL 18633044 via CL 18633055
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)
[CL 18637363 by devin doucette in ue5-main branch]
Fix erroneous logging in Jupiter DDC backend when a cache record was missed.
Fix breakage in Jupiter DDC backend automated test caused by the header re-org.
Add GetChunks tests to Jupiter DDC backend automated test and increase the size and byte variety for values in the test content.
#rb devin.doucette
#preflight 61e19ae5076be0fc4e128941
#ROBOMERGE-AUTHOR: zousar.shaker
#ROBOMERGE-SOURCE: CL 18618080 in //UE5/Release-5.0/... via CL 18618090 via CL 18618106
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v899-18417669)
[CL 18618116 by zousar shaker in ue5-main branch]