Commit Graph

64 Commits

Author SHA1 Message Date
joakim lindqvist
40c47276bd Error -> Warning when we are unable to resolve a token for Cloud DDC. This will not cause the build to fail, but it will typically be slower for it so error is harsh (as that in itself causes the build to fail)
[FYI] zousar.shaker
#preflight 63ef6b8b90198dffbae12467

[CL 24281972 by joakim lindqvist in ue5-main branch]
2023-02-17 10:25:12 -05:00
nicholas howe
a8ee4b6253 Fix RemoveTicker Hang in HttpCacheStore.
#jira UE-174489
#rb devin.doucette
#preflight 63c85026c246f14856661f40

[CL 23766649 by nicholas howe in ue5-main branch]
2023-01-18 17:59:46 -05:00
mark lintott
8bad2c0365 Removed the callback system from core Analytics system. Fixed up analytics gathering in DerivedDataCache, Virtualization and HttpCacheStore
#rb wes.hunt
#preflight 63be95bd68068a8bd6a4438e

[CL 23651011 by mark lintott in ue5-main branch]
2023-01-11 14:28:01 -05:00
Matt Peters
6f0b8a2906 HttpCacheStore: Fix backwards if statement for whether the compactbinary is valid in GetBodyAsString
#preflight 63b70052221aab21e01200c0

[CL 23589159 by Matt Peters in ue5-main branch]
2023-01-05 12:01:37 -05:00
matt peters
71802fb86c Analytics: Backed out 22909100 and 22951911
#rnx

[CL 23583550 by matt peters in ue5-main branch]
2023-01-04 18:51:41 -05:00
Zousar Shaker
54d9057532 Fixes for UE Cloud DDC client:
- Print CbObject responses to the log/console as JSON, not raw binary
- Reduce the thresholds for connect timeout and slow transfer rate time window
- Instead of one request pool of size 128*2 requests, split GET and PUT operations into their own limited request pools and have the PUT request pool (size 20) be set smaller than the GET one (size 128)
- Stop using unbounded overflow for chained sequences of HTTP requests to avoid slow/failed requests due to many upload operations happening concurrently during high upload quantity scenarios (eg: shader version bump, editor domain version bump)

Testing:
- Cook of CitySample with shader version bumped to ensure there are no failed requests due to slow transfer
- Launch of CitySample editor with no local cache to observe throughput when all DDC data has to be fetched from upstream

#rb devin.doucette
#preflight 638c2d86cb3b754183f2e574

[CL 23385459 by Zousar Shaker in ue5-main branch]
2022-12-04 02:26:39 -05:00
Matt Peters
dd0f970188 HttpCacheStore: When a record is missing data and we return EStatus::Error and an empty record, fix the FCacheRecord passed into OnComplete to not have metadata or any values. The FCacheStoreHierarchy client of FHttpCacheStore assumes that metadata or values are only present on a successful record, and if it is present, incorrectly Puts the record as a valid record into the other cachestores in the hierarchy. This then breaks clients of DDC, because the record is invalid since it is missing some values.
This change fixes the warning messages when using EditorDomain: LogEditorDomain: Warning: Package %s received an invalid CacheRecord...
#rb Zousar.Shaker, Devin.Doucette
#rnx
#preflight 63753d95953c19d4351d8f11

[CL 23160500 by Matt Peters in ue5-main branch]
2022-11-16 15:12:51 -05:00
Devin Doucette
dcf192e97a DDC: Remove any trailing slash from the Jupiter URI
#preflight 636d11ed0f51d9ed4afbf185
#rb Joakim.Lindqvist
#rnx

[CL 23079894 by Devin Doucette in ue5-main branch]
2022-11-10 10:57:37 -05:00
Zousar Shaker
ac3fc5db61 Print more detailed timing metrics for HTTP operations in the HttpCacheStore.
#rb devin.doucette
#preflight 636acc25dc30a4ce96bbe43c

[CL 23040720 by Zousar Shaker in ue5-main branch]
2022-11-08 16:52:32 -05:00
Devin Doucette
bfd3e68dc5 DDC: Fixed invalid put stats in the Jupiter client
#preflight 63691e65f56cab38c7c75f83
#rb Zousar.Shaker
#rnx

[CL 23010981 by Devin Doucette in ue5-main branch]
2022-11-07 10:33:06 -05:00
devin doucette
41c5373ebd DDC: Fixed parameter names related to OIDC to be compliant with the coding standard and simplified analytics formatting
#preflight 636403b3de2c4dbb5d3a5b11
#rb Zousar.Shaker
#rnx

[CL 22968397 by devin doucette in ue5-main branch]
2022-11-03 18:00:06 -04:00
mark lintott
5ae432fc55 Addeed specific Unreal Cloud DDC analytics for core.cooking and core.loading events ( Domain, Effective Domain, Cache Hit/MIss for Cache Puts & Gets, FailedOIDC login attempts )
#rb joakim.lindqvist
#jira none
#preflight 6363c123d308b70e66f4cf33

[CL 22951911 by mark lintott in ue5-main branch]
2022-11-03 09:39:24 -04:00
devin doucette
271b9555dc Added Unreal Cloud DDC to the base cache graphs
It is disabled by default outside of Epic, and can be enabled by configuring the Default key in the StorageServers section of the Engine config.

#rb Zousar.Shaker

[CL 22836839 by devin doucette in ue5-main branch]
2022-10-28 16:07:04 -04:00
Zousar Shaker
fee1c826d6 Update references to "Horde Storage" to "Unreal Cloud DDC" or appropriate variations.
Specifically:
HordeStorageServers-> StorageServers
HordeStorage  -> UnrealCloudDDC
Horde Storage -> Unreal Cloud DDC

#rb matt.peters
#fyi devin.doucette
#fyi joakim.lindqvist
#jira UE-167262
#preflight 6349da9bad0f7e2f206125e3

[CL 22538004 by Zousar Shaker in ue5-main branch]
2022-10-14 18:39:39 -04:00
Andriy Tylychko
ab5a1abe8d InheritedContext
grouped inherited LLM tag, mem tag and trace metadata into FInheritedContext to simplify their usage, avoid forgetting using all of them together, and to hide the ugly conditional compilation. Added FInheritedContext to higher level tasks instead of the low-level tasks to allow batch task launch to capture the inherited context once per batch

#rb ionut.matasaru
#preflight 633c47792f4bf32d31687192

[CL 22331272 by Andriy Tylychko in ue5-main branch]
2022-10-04 11:22:08 -04:00
Devin Doucette
78b4dfd59b DDC: Fixed untagged allocations by capturing tags in tasks
#jira UE-154013
#preflight 6335f0ffc37844870abec3f3
#rb Matt.Peters

[CL 22254430 by Devin Doucette in ue5-main branch]
2022-09-29 16:11:35 -04:00
Devin Doucette
c9aa2452df DDC: Allow both OAuthProvider and OAuthProviderIdentifier to be used in the same configuration for HttpCacheStore
- At least one of OAuthProvider, OAuthProviderIdentifier, or OAuthAccessTokenEnvOverride must be set.
- If only OAuthAccessTokenEnvOverride is set, then the environment variable must be set too.
- If only OAuthProvider is set, then OAuthSecret must be set too.
- If OAuthProvider is set, then OAuthClientId must be set.

#preflight 632d2eab10030508069b36c8
#rb Zousar.Shaker

[CL 22155720 by Devin Doucette in ue5-main branch]
2022-09-23 11:32:36 -04:00
devin doucette
1239a75353 DDC: Removed obsolete unstructured namespace parameter from the clients for Horde Storage and Zen
#rb Zousar.Shaker

[CL 22018759 by devin doucette in ue5-main branch]
2022-09-14 18:25:46 -04:00
Devin Doucette
9aee9a4bd8 DDC: Fixed unsafe type cast warnings
#preflight 6317fc04a20b67673b1de7c3
#rb Zousar.Shaker
#rnx

[CL 21850770 by Devin Doucette in ue5-main branch]
2022-09-07 10:37:16 -04:00
Joakim Lindqvist
99738a925d Allow users to interactivly login if they are missing a token. Will present a dialog for users if not unattended so they are aware they need to login.
#preflight https://horde.devtools.epicgames.com/job/62f26d7723003b62a3f3b58f

[CL 21334992 by Joakim Lindqvist in ue5-main branch]
2022-08-11 09:17:03 -04:00
Devin Doucette
1da9f58aa5 DDC: Optimized Horde Storage cache bucket transforms
#preflight 62dab595d54af4b9a23cea07
#rb Zousar.Shaker
#rnx

[CL 21221014 by Devin Doucette in ue5-main branch]
2022-07-22 10:54:37 -04:00
Devin Doucette
32b644e560 DDC: Use TSharedRef for shared Horde Storage completion functions
#preflight 62da25ec185da2495f7bbf5d
#rb Zousar.Shaker
#rnx

[CL 21220414 by Devin Doucette in ue5-main branch]
2022-07-22 10:21:26 -04:00
Devin Doucette
463ecf80f5 DDC: Added public key pinning support to the Horde Storage client
It would be better to use Certificate Transparency, but the UE SSL module currently expects pinned public keys, and verification using known key hashes is far better than no verification.

#preflight 62d5c582d54af4b9a23b92e7
#rb Zousar.Shaker
#rnx

[CL 21157474 by Devin Doucette in ue5-main branch]
2022-07-18 23:15:54 -04:00
Devin Doucette
c6bcab8076 DDC: Refactored the HTTP API to add configurability and remove reliance on types from DDC
- FHttpSharedData is now IHttpConnectionPool. It is a connection pool of configurable size.
- FHttpRequestPool is now IHttpClient. It is a request pool of configurable size and the point at which most behaviors are configured.
- FHttpRequest is now split into IHttpRequest and IHttpResponse. This separation allows requests to be released back to the client for reuse while the response is still being processed.
- FScopedHttpPoolRequestPtr is now THttpUniquePtr. It is used uniformly with the pool, client, request, and response.
- The response body is now handled by IHttpReceiver, with a basic FHttpByteArrayReceiver provided to capture the whole body into an array.
- The response now includes stats about how much time was spent on various parts of the request, as well as how much data was sent and received and at what rate.
- The response supports cancellation at any point before it is complete, and IHttpResponseMonitor is provided to support thread-safe cancellation and waiting without requiring locks around the unique owner of the response.
- The response will be canceled automatically when destroyed through its THttpUniquePtr.
- The client does not directly support blocking on request creation. Blocking creation of requests is now provided by FHttpRequestQueue.
- The HTTP thread now relies on curl_multi_poll, available in newer libcurl versions, to allow immediate waking when a handle needs to be added or removed.

#preflight 62d580dd2e3e5993c3b678dd
#rb Zousar.Shaker

[CL 21149626 by Devin Doucette in ue5-main branch]
2022-07-18 12:23:16 -04:00
Devin Doucette
b7961682fd DDC: Fixed auth token refresh in HttpCacheStore to unregister from the ticker
Removed duplicate code, unnecessary scopes, and unused variables as well.

#preflight 62cda8de3d7ef9abccf7eb10
#rb Zousar.Shaker
#rnx

[CL 21061398 by Devin Doucette in ue5-main branch]
2022-07-12 15:36:38 -04:00