- Do not invoke the put completion callback from the hierarchy until a put to a readable node succeeds, which is now tracked by bFinished.
- Use StopGetStore on the in-flight put cache to stop gets from that cache from propagating as duplicate puts.
- Disable the in-flight put cache for async wrappers used by propagation of gets.
#jira UE-192655
#rb Zousar.Shaker
[CL 27771618 by devin doucette in ue5-main branch]
- Construct an empty hierarchy first and populate it as the graph is parsed.
- Record the need for async and verify nodes, and create them only at the end.
- Extract parsing of debug options including throttling into the cache store owner.
- Expose the cache store owner to the cache store parsing/creation functions.
- Remove the unused speed class debug option.
#preflight 64777c254b0d5a1eb157ac8b
#rb Joe.Pribele
#rnx
[CL 25713242 by devin doucette in ue5-main branch]
The hierarchy now uses a request barrier after the first synchronous request completion. Async requests could occasionally complete fast enough that DispatchRequests would be left to handle the completion. In that scenario, there would not be a barrier in place when beginning any subsequent requests, which would lead to a failed assertion in the request owner.
#preflight 63ceb5c63a03cb0bbff95362
#rb Zousar.Shaker
[CL 23848713 by Devin Doucette in ue5-main branch]
Without using StopGetStore, get hits on the in-flight cache would propagate as puts to subsequent nodes in the hierarchy. Since the in-flight cache is only used as temporary storage while a put is in flight, this caused duplicates of the in-flight puts, which manifests as move collision log spam from the file system cache store.
#preflight 625d772d691f49969ea93249
#rb Zousar.Shaker
#rnx
[CL 19785647 by Devin Doucette in ue5-main branch]
Without using StopStore, get hits on the in-flight cache would propagate as puts to subsequent nodes in the hierarchy. Since the in-flight cache is only used as temporary storage while a put is in flight, this caused duplicates of the in-flight puts, which manifests as move collision log spam from the file system cache store.
#preflight 625835d97f628a9018d8acf6
#rb Zousar.Shaker
#rnx
[CL 19757142 by Devin Doucette in ue5-main branch]
The wrong response status was being checked, and caused subsequent nodes to be skipped even if the StopStore node did not contain the data, if any previous node contained the data.
#preflight 62582d67946114248db62d58
#rb Zousar.Shaker
#rnx
[CL 19756375 by Devin Doucette in ue5-main branch]
- Legacy puts are now executing asynchronously.
- Memory cache now merges partial cache records.
- Memory cache is used to store data temporarily while it is being written by an async put.
- Expanded the deprecation of persisted boot/memory caches, which no longer offer the performance benefit that they used to.
- Fixed the pak file cache to skip data with a compressed size of over 2 GiB.
#jira UE-141307
#preflight 620d85f93609e19371510fb1
#lockdown Aurel.Cordonnier
#rb Zousar.Shaker
#rnx
#ROBOMERGE-OWNER: Devin.Doucette
#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-COMMAND: _robomerge UE5-Main
#ROBOMERGE-SOURCE: CL 19076205 in //UE5/Release-5.0/... via CL 19094550
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)
[CL 19095974 by devin doucette in ue5-main branch]
The cache stores can individually control their "legacy mode" now, which offers a choice of ValueOnly, ValueWithLegacyFallback, LegacyOnly.
- Using ValueOnly will forward every legacy request through the Value API, which compresses values by default and supports values larger than 2 GiB.
- Using ValueWithLegacyFallback behaves like ValueOnly, but misses from GetValue are forwarded to GetCachedData, and stored with PutValue if found.
- Using LegacyOnly will forward every legacy request through the Legacy API.
FLegacyCacheValue uses shared state to ensure that each value is compressed or decompressed at most once.
#jira UE-134381
#preflight 62054b430c64e1822f41231b
#lockdown Mark.Lintott
#rb Zousar.Shaker
#rnx
#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18940270 in //UE5/Release-5.0/... via CL 18941016 via CL 18941392
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v917-18934589)
[CL 18941401 by devin doucette in ue5-main branch]