Commit Graph

538 Commits

Author SHA1 Message Date
Zousar Shaker
28c6283a57 2nd submit with fix for lifetime issue:
Allow async operations for Jupiter DDC backend.

#rb devin.doucette
#jira UE-144412
#preflight 624c5fb68d1db441a90f23fe

[CL 19631067 by Zousar Shaker in ue5-main branch]
2022-04-05 16:43:41 -04:00
Devin Doucette
8c27714a84 DDC: Added ConvertLegacyCacheKey to construct new cache keys from legacy cache keys
The function is shared with the legacy cache store to allow callers of the legacy API to migrate to the value API using this conversion function without invalidating existing cache keys.

#preflight 624c9ab68d1db441a913137e
#rb Zousar.Shaker

[CL 19630681 by Devin Doucette in ue5-main branch]
2022-04-05 16:27:17 -04:00
Zousar Shaker
f34273a349 [Backout] - CL19628588
#fyi Zousar.Shaker
Original CL Desc
-----------------------------------------------------------------
Allow async operations for Jupiter DDC backend.

#rb devin.doucette
#jira UE-144412
#preflight 624c5fb68d1db441a90f23fe

[CL 19629334 by Zousar Shaker in ue5-main branch]
2022-04-05 15:17:17 -04:00
Zousar Shaker
56e179a5f4 Allow async operations for Jupiter DDC backend.
#rb devin.doucette
#jira UE-144412
#preflight 624c5fb68d1db441a90f23fe

[CL 19628588 by Zousar Shaker in ue5-main branch]
2022-04-05 14:18:39 -04:00
charles bloom
9754c6cb2c Make DDC-Verify successes Verbose
#rb devin.doucette
#preflight none

[CL 19592154 by charles bloom in ue5-main branch]
2022-04-01 14:01:04 -04:00
Devin Doucette
455b4ece9e DDC: Extended -DDC-MissTypes to match -DDC-Verify
In the examples below, <Node> is the name of a node in the cache store graph, or All to apply to every node.
-DDC-<Node>-MissTypes=StaticMesh+Texture will simulate a miss on every access to to static mesh and texture keys.
-DDC-<Node>-MissTypes=StaticMesh@12.5+Texture will simulate misses on 12.5% of accesses to static mesh keys and every access to texture keys.
-DDC-<Node>-MissRate=5 -DDC-<Node>-MissTypes=Texture will simulate misses on every access to texture keys and 5% of other keys.
-DDC-<Node>-MissRate=5 will simulate misses on 5% of keys.
-DDC-<Node>-MissSalt=PositiveInt32 will set the salt used to match keys to simulate misses on. A key always has the same simulated miss behavior with the same salt.

#preflight 6244d102b33098a72dc136df
#rb Zousar.Shaker

[CL 19572200 by Devin Doucette in ue5-main branch]
2022-03-31 10:06:47 -04:00
Devin Doucette
cebf4161f9 DDC: Added -DDC-Verify arguments to control determinism verification
-DDC-Verify will verify determinism on every access to the cache.
-DDC-Verify=StaticMesh+Texture will verify determinism on every access static mesh and texture keys.
-DDC-Verify=StaticMesh@12.5+Texture will verify determinism on 12.5% of accesses to static mesh keys and every access to texture keys.
-DDC-VerifyRate=5 -DDC-Verify=Texture will verify detereminism on every access to texture keys and 5% of other keys.
-DDC-VerifyRate=5 -DDC-Verify will verify determinism on 5% of keys.
-DDC-VerifySalt=PositiveInt32 will set the salt used to match keys to verify. A key always has the same verification behavior with the same salt.

#preflight 6244ad99637925b5d3bc7fab
#rb Zousar.Shaker

[CL 19563192 by Devin Doucette in ue5-main branch]
2022-03-30 15:51:28 -04:00
Zousar Shaker
4b6d3f3a0a Fix bug where the Content-Type header had multiple conflicting entries when posting compact binary during Horde Storage communications:
+		[1]	L"Content-Type: application/x-ue-cb"	FString
+		[2]	L"Content-Type: application/x-www-form-urlencoded"	FString

#rb devin.doucette
#rnx
#preflight 623bfe051302f69e9a9b5e1e

[CL 19492306 by Zousar Shaker in ue5-main branch]
2022-03-24 01:28:28 -04:00
Zousar Shaker
03207d24ea Allow OAuth access scope to be configurable for a Horde Storage DDC store. Supplied by partners.
#rb devin.doucette
#rnx
#preflight 623b9723c73745c600c264e6

[CL 19487258 by Zousar Shaker in ue5-main branch]
2022-03-23 18:05:53 -04:00
Devin Doucette
436b6a6461 DDC: Added IRequestOwner::LaunchTask
- Added IRequestOwner::LaunchTask to launch a task as a request in the request owner.
- Renamed ExecuteInCacheThreadPool to LaunchTaskInCacheThreadPool.
- Made GCacheThreadPool private to one source file.
- Changed task scheduling throughout DDC to use these functions where appropriate.

#preflight 623b846d8900c14eecd4daa4
#rb Zousar.Shaker

[CL 19485686 by Devin Doucette in ue5-main branch]
2022-03-23 16:56:39 -04:00
steve robb
87fb605867 TCHAR array init fixes for UTF-8 mode.
#rb devin.doucette
#preflight 6231e536e2541b4ff3af6cd2

#ROBOMERGE-AUTHOR: steve.robb
#ROBOMERGE-SOURCE: CL 19405353 via CL 19408955 via CL 19419621 via CL 19419706
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v930-19419903)

[CL 19420584 by steve robb in ue5-main branch]
2022-03-17 10:29:53 -04:00
Devin Doucette
1318804bb2 DDC: Fixed timing scopes for FileSystem, PakFile, S3
Edited the timing scopes to exclude invocation of the completion callback.

#preflight 62325890262232d86f812368
#rb Zousar.Shaker
#rnx

[CL 19419775 by Devin Doucette in ue5-main branch]
2022-03-17 09:07:20 -04:00
devin doucette
e3f0c1564c DDC: Fixed handling of metadata in the memory cache
#jira UE-146033
#preflight 62321041ac0173aa4131355a
#rb Matt.Peters, Zousar.Shaker
#rnx

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 19408655 in //UE5/Release-5.0/... via CL 19409276
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v926-19321884)

[CL 19410469 by devin doucette in ue5-main branch]
2022-03-16 15:31:59 -04:00
Devin Doucette
d8c983bbe6 DDC: Optimized legacy cache key validation and shortening overhead
- Validate and shorten legacy keys lazily.
- Change to ValueOnly mode for PakFile and Zen.

#preflight 623235998a6037989395baf2
#rb Zousar.Shaker
#rnx

[CL 19410386 by Devin Doucette in ue5-main branch]
2022-03-16 15:28:29 -04:00
zousar shaker
a33be10d6b Fix issue (using server-side feature in Horde Storage) with inconsistency to DDC content from Horde Storage.
This would manifest as a cache entry being deemed to "exist", but later when you attempt to fetch it, it would not exist.

#rb devin.doucette
[FYI] joakim.lindqvist
#jira UE-145701
#lockdown simon.tourangeau
#preflight 6231f8866e25767a2189e99a

#ROBOMERGE-AUTHOR: zousar.shaker
#ROBOMERGE-SOURCE: CL 19407779 in //UE5/Release-5.0/... via CL 19408966
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v926-19321884)

[CL 19409941 by zousar shaker in ue5-main branch]
2022-03-16 15:13:23 -04:00
Devin Doucette
6c0885e988 DDC: Fixed the async cache hierarchy to advance to the next node when nodes are async
#preflight 622f9ce380715dc6dadebf59
#rb Zousar.Shaker
#rnx

[CL 19377851 by Devin Doucette in ue5-main branch]
2022-03-14 16:15:03 -04:00
Zousar Shaker
692627df4a Lowering log severity of unexpected results coming back from the Horde Storage server to avoid causing failures for operations that treat warnings as errors.
#rb devin.doucette
#preflight 622f878ace577e3ab2cc5102

[CL 19375750 by Zousar Shaker in ue5-main branch]
2022-03-14 14:29:11 -04:00
Zousar Shaker
c36aa0e5bf Incorporate http cache store client change for partner use.
#rb devin.doucette
#preflight 62291bd50d5a90e98ecd7436

[CL 19326180 by Zousar Shaker in ue5-main branch]
2022-03-09 16:48:12 -05:00
Devin Doucette
6abe878ca2 DDC: Fixed a crash with -NoThreading when upgrading legacy values
#jira UE-143991
#preflight 62223fc2ef188a763d6334bc
#rb Zousar.Shaker
#rnx

[CL 19267687 by Devin Doucette in ue5-main branch]
2022-03-04 11:57:10 -05:00
zousar shaker
625a874551 Resolve compile issue in UE Zen client caused by including an Internal header from a Public header.
This is being resolved by cherrypicking 19196840 by mark.lintott from UE5/Main (see original changelist details at the end of this cl description).  On top of the cherrypick, there was a change made to re-use a single Http request when fetching stats.  This avoids the overhead of doing name resolution repeatedly if the zen instance has a name instead of IP address.

Tested by:
- Running ShooterGame editor & observing UnrealInsights for ZenHttp_CurlPerform timers and ensuring they are not happening on the game thread when the editor is sitting idle (they are on background threads instead)
-Terminating ZenServer.exe while the editor is running and observing whether the framerate of the editor is negatively affected

#rb matt.peters
[FYI] mark.lintott
#jira UE-132849
#jira UE-143182
#lockdown aurel.cordonnier
#preflight 6220038831454c90cc13a123

Original changelist:
============
Blocking Zen HTTP stats request now runs async using futures
#rb Andriy.Tylychko
#[fyi] Zousar.Shaker
#jira UE-132849
#preflight 621e0c71e15c51d8c5bd5967

#ushell-cherrypick of 19196840 by mark.lintott

#ROBOMERGE-OWNER: zousar.shaker
#ROBOMERGE-AUTHOR: zousar.shaker
#ROBOMERGE-SOURCE: CL 19234318 in //UE5/Release-5.0/... via CL 19236659
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19237357 by zousar shaker in ue5-main branch]
2022-03-02 22:10:10 -05:00
zousar shaker
fbbcd1bde7 Make use of batch existence check operation available on the Jupiter server for references.
Also allow receipt of uncompressed buffers when using the inlining functionality to get values back in the first round trip for references.

#rb devin.doucette
#preflight 621fd1cf37049be51732f6a7
#jira UE-143616


#ROBOMERGE-AUTHOR: zousar.shaker
#ROBOMERGE-SOURCE: CL 19227838 via CL 19228770 via CL 19228860 via CL 19228955 via CL 19229024
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19231554 by zousar shaker in ue5-main branch]
2022-03-02 17:30:48 -05:00
steve robb
288f3de432 Fixes for the implicit conversion of ints and chars to TCHARs in UTF-8 mode.
#rb trivial
#preflight 621ed0b4e15c51d8c5e5d081

#ROBOMERGE-OWNER: steve.robb
#ROBOMERGE-AUTHOR: steve.robb
#ROBOMERGE-SOURCE: CL 19219816 via CL 19220283 via CL 19220288 via CL 19223679
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19227684 by steve robb in ue5-main branch]
2022-03-02 15:30:50 -05:00
steve robb
33c800a605 TEXT(""_SV) changed to TEXTVIEW("") for UTF-8 support.
#rb trivial

#ROBOMERGE-OWNER: steve.robb
#ROBOMERGE-AUTHOR: steve.robb
#ROBOMERGE-SOURCE: CL 19135062 via CL 19136099 via CL 19136620 via CL 19138526
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19155676 by steve robb in ue5-main branch]
2022-02-25 15:48:16 -05:00
zousar shaker
25249765d9 Avoid wasted time when pulling data from Jupiter by:
1) Increasing connection pool size
2) Allowing DNS and SSL/TLS data to be shared by connections
3) Switching to ValueOnly mode for Jupiter backends by default
4) Using "inline get" feature when querying Value data

Tested:
- .run editor -- -execCmds="Automation RunTests System.DerivedDataCache.HttpDerivedDataBackend.CacheStore;Quit" -NullRHI -stdout -unattended -ddc=DerivedDataBackendGraph_Jupiter
-Launch CitySample editor with empty local cache and open Small_City_LVL
-Launch CitySample editor with hot local cache and open Small_City_LVL

Can be improved further with a batched existence API for refs (instead of blobs).  The current one does not work due to a Jupiter server bug, so this is an improvement that will have to come afterwards.

Note: There is a known issue involving Jupiter where the server will sometimes return uncompressed blobs.  This manifests as cache misses due to invalid/rejected results returned from Jupiter.  The client handles the miss and builds the data and stores it in its local cache but does not upload it to Jupiter (because Jupiter says it already has the blob).  Subsequent runs will not suffer from the issue as the data will be present in the local cache.  There are discussions in progress for how to address this issue on server or client side.  No immediate mitigation is needed for it.

#rb devin.doucette
#jira UE-143616
#lockdown aurel.cordonnier
#preflight


#ROBOMERGE-OWNER: zousar.shaker
#ROBOMERGE-AUTHOR: zousar.shaker
#ROBOMERGE-SOURCE: CL 19104205 via CL 19104462 via CL 19104579 via CL 19104585 via CL 19110006
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19113840 by zousar shaker in ue5-main branch]
2022-02-24 10:24:10 -05:00
devin doucette
6dd39d0d04 DDC: Fixed -DDC-All-MissRate to work with callers that expect consistent hits on the same key
Fixes the accumulation of stats in the async wrapper as well.

#jira UE-143606
#preflight 6216a933a45a91013f3f4047
#lockdown Aurel.Cordonnier
#rb Zousar.Shaker
#rnx

#ROBOMERGE-OWNER: Devin.Doucette
#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-COMMAND: _robomerge UE5-Main
#ROBOMERGE-SOURCE: CL 19102208 in //UE5/Release-5.0/... via CL 19102301
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v921-19075845)

[CL 19102315 by devin doucette in ue5-main branch]
2022-02-23 17:04:41 -05:00