Commit Graph

21079 Commits

Author SHA1 Message Date
carl bystrom
a35608c190 Horde: Add public method for requesting a port mapping to an agent
* Add compute cluster support
* Improve testing of gRPC test client

[CL 29640601 by carl bystrom in ue5-main branch]
2023-11-10 10:38:27 -05:00
ben marsh
c8b237e380 Horde: Remove allocation of empty object used for locking access to PendingExportHandle.
#jira

[CL 29639779 by ben marsh in ue5-main branch]
2023-11-10 10:19:24 -05:00
ben marsh
870d8d0116 Horde: Allow decoding exports from partially written packets, reducing the amount of memory retained for each handle.
#jira

[CL 29639244 by ben marsh in ue5-main branch]
2023-11-10 10:05:15 -05:00
ben marsh
34970f0ea9 Horde: Reduce objects retained by flushed storage handles.
* Pending aliases are now stored on the bundle rather than on individual exports.
* Several fields are nulled out after flushing to allow referenced objects to be GC'd.

#jira

[CL 29638570 by ben marsh in ue5-main branch]
2023-11-10 09:20:33 -05:00
ben marsh
991c8267e7 Horde: Set the length of explicitly allocated memory blocks to -1 on dispose, triggering a runtime exception if they're used again.
#jira

[CL 29638539 by ben marsh in ue5-main branch]
2023-11-10 09:20:02 -05:00
ben marsh
1339f9b361 Horde: Null out some fields after flushing a bundle to storage to allow the referenced memory to be GC'd.
#jira

[CL 29622514 by ben marsh in ue5-main branch]
2023-11-09 20:43:59 -05:00
joe kirchoff
d5084c7083 UnrealBuildTool: Analysis warning
#rnx

[CL 29615474 by joe kirchoff in ue5-main branch]
2023-11-09 18:46:17 -05:00
ben marsh
258c140eaa Horde: Fix a couple of memory leaks when serializing bundles.
#jira

[CL 29613703 by ben marsh in ue5-main branch]
2023-11-09 18:10:44 -05:00
ben marsh
2f59d171a4 Horde: Fix C++ remote worker compilation in non-debug configurations (missing C++20 language flag).
#jira

[CL 29610838 by ben marsh in ue5-main branch]
2023-11-09 16:52:21 -05:00
ben marsh
4fc1aed1c7 Horde: Fix a few issues creating bundles from directory trees using the new storage system.
#jira

[CL 29610565 by ben marsh in ue5-main branch]
2023-11-09 16:45:29 -05:00
ben marsh
0361789164 Horde: Fix remote execution sample app.
#jira

[CL 29607280 by ben marsh in ue5-main branch]
2023-11-09 15:26:12 -05:00
joe kirchoff
57061564c5 Rollback PVS version
#rnx

[CL 29606795 by joe kirchoff in ue5-main branch]
2023-11-09 15:14:39 -05:00
josh engebretson
b18db08df0 Horde: Clean up stream incrementals check
#rnx

[CL 29601640 by josh engebretson in ue5-main branch]
2023-11-09 12:54:23 -05:00
grant medine
6689fc1065 [Backout] - CL29577197
[FYI] Joe.Kirchoff
Original CL Desc
-----------------------------------------------------------------
UnrealBuildTool: Move common action properties for CreateRecursiveAction to be shared

#rnx

[CL 29600550 by grant medine in ue5-main branch]
2023-11-09 12:21:13 -05:00
carl bystrom
cc3de61293 Horde: Add service for agent relay and port mappings
[CL 29599561 by carl bystrom in ue5-main branch]
2023-11-09 11:58:39 -05:00
josh engebretson
af39a9aee4 Horde: Display step errors in lease view
#rnx

[CL 29599307 by josh engebretson in ue5-main branch]
2023-11-09 11:51:37 -05:00
ben marsh
34e682d7a2 Horde: Updated bundle file format and addressing scheme. Not yet enabled by default.
File format:
* Bundles are now just a stream of packets, but packets follow the stanard bundle signature format, allowing interop with older file formats.
* All import/export information is stored in packets, allowing them to be decoded without reading the a monolithic bundle header. Previous implementation did not factor in the size of header metadata with bundles, nor the size of supporting data structures, which could dwarf the size of payload data. Splitting headers into separate packets allows us to separate the packet size from read size, and still allows "over-reading" of bundles to prefetch additional coherent data for low-latency connections.

Locators:
* Blob locators now have a standard URI syntax; the #fragment portion of the URI identifies an embedded resource within the bundle, with parameters encoded using media-fragment syntax.
* Blob locators now encode the packet offset and length to support reading of individual packets.
* Packets and exports can be referenced directly with the same scheme, eg. bundle: "foo/bar", packet: "foo/bar#pkt=100,0", export: "foo/bar#pkt=100,0&exp=4".
* The packet import table now encodes arbitary string locators for each individual export in a prefix tree, with each node being a cachable handle to an individual blob object.
* Since blob locators are now effectively standard URIs, we can use them to link to content on other servers, or to link between separate endpoints on the same server.

Interop:
* Bundle writer options now include a setting for the maximum version number to use when writing bundles, allowing both codebases to exist side by side.
* Added separate LatestV1 and LatestV2 version number constants to identify encoding scheme to use before we migrate fully to V2 encoding.

Resource usage:
* Writes between layers in the write pipeline - with the exception of compression - are now done into final buffers, reducing the churn on memory allocations causing requiring frequent GC runs.
* Buffers allocated in the write process reserve memory against a fixed memory limit tracked in BundleCache; buffers allocated for asynchronous writes will now cause items to be purged from the cache to stay below the fixed memory limit.
* Buffers are reference counted, and can transfer ownership to the cache layer once unlocked.
* Buffers are now manually allocated and freed on the unmanaged heap to avoid needing to trigger the garbage collector.

Misc:
* The cache supports async initiatlization of values, fixing previous issue where multiple writes are executed.
* Handles now support equality comparisons to avoid having to construct temporary string objects for cache keys.

#jira

[CL 29599111 by ben marsh in ue5-main branch]
2023-11-09 11:46:56 -05:00
josh engebretson
ad7ea9d01c Horde: Fix issue with preflight showing up in incremental status
#rnx

[CL 29597942 by josh engebretson in ue5-main branch]
2023-11-09 11:19:41 -05:00
ben marsh
e3a16d6585 Horde: Fix chained job triggers not correctly waiting for execution to complete before activating.
#jira

[CL 29596138 by ben marsh in ue5-main branch]
2023-11-09 10:30:55 -05:00
ben marsh
ee8f4ec9bd Horde: Update agent capabilities in the background rather than on the main lease update loop. Have seen some occasions where this seems to be taking a long time; may be blocking sessison updates.
#jira

[CL 29594425 by ben marsh in ue5-main branch]
2023-11-09 09:08:37 -05:00
josh engebretson
32c090685d Horde: Fix issue with stream template status
#rnx

[CL 29594226 by josh engebretson in ue5-main branch]
2023-11-09 08:57:39 -05:00
ben marsh
8f70f57c47 Horde: Remove default implementation of IBlobHandle.FlushAsync.
#jira

[CL 29587866 by ben marsh in ue5-main branch]
2023-11-08 22:07:44 -05:00
ben marsh
ab7095d4ba Horde: Fix incorrect size argument to DDC blob service, causing non-deterministic test failures.
#jira

[CL 29587554 by ben marsh in ue5-main branch]
2023-11-08 21:57:09 -05:00
joe kirchoff
cdbaccc808 UnrealBuildTool: Move common action properties for CreateRecursiveAction to be shared
#rnx

[CL 29577504 by joe kirchoff in ue5-main branch]
2023-11-08 17:51:38 -05:00
ryan hummer
fc5a48a089 Adjusting FixPerforceCase boilerplate tags
#rnx
#rb none

[CL 29575649 by ryan hummer in ue5-main branch]
2023-11-08 17:17:57 -05:00