Commit Graph

3835 Commits

Author SHA1 Message Date
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
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
josh engebretson
023d06ed18 Horde: Fix comparison in stream view
#rnx

[CL 29573060 by josh engebretson in ue5-main branch]
2023-11-08 16:05:47 -05:00
josh engebretson
3e75056cff Horde: Add a hover for stream incrementals pivot
#rnx

[CL 29572372 by josh engebretson in ue5-main branch]
2023-11-08 15:44:39 -05:00
ben marsh
53f183b286 Horde: Allow storing arbitrary IDisposable data along with BlobData objects, rather than requiring an IReadOnlyMemoryOwner.
#jira

[CL 29563878 by ben marsh in ue5-main branch]
2023-11-08 11:57:37 -05:00
ben marsh
a7a017106a Horde: Improved cache for reading bundles.
* Now supports caching of generic async operations, with resource accounting done by explicit calls to acquire disposable objects.
* When a resource is requested that would exceed the hard limit specified in an option, cache items are purged until the resource can be satisfied.
* Items in the cache are reference counted, and will not be purged while referenced.

#jira

[CL 29563686 by ben marsh in ue5-main branch]
2023-11-08 11:51:04 -05:00
josh engebretson
0c91b0ea0c Horde: Fix issue with agent installer tool registration
#rnx

[CL 29529218 by josh engebretson in ue5-main branch]
2023-11-07 14:52:58 -05:00
ben marsh
3869d6991c Horde: Rename INodeReader -> IBlobReader and INodeWriter -> BlobWriter.
#jira

[CL 29527908 by ben marsh in ue5-main branch]
2023-11-07 14:08:36 -05:00
carl bystrom
64a6a4e2f5 Horde: Add relay service in agent capable forwarding ports to agents behind a firewall
Still requires a server implementation but the gRPC protocol and client is in place.

[CL 29526109 by carl bystrom in ue5-main branch]
2023-11-07 13:19:26 -05:00
josh engebretson
d98a472c68 Horde: Stage server installer
#rnx

[CL 29525992 by josh engebretson in ue5-main branch]
2023-11-07 13:17:04 -05:00
josh engebretson
c25ca19f22 Horde: Fix markdown which includes download links explicitly off server
#skipci
#rnx

[CL 29523915 by josh engebretson in ue5-main branch]
2023-11-07 12:25:23 -05:00
josh engebretson
f92c22b382 Horde: Installer improvements
#jira UE-198056
#rnx

[CL 29523783 by josh engebretson in ue5-main branch]
2023-11-07 12:23:40 -05:00
josh engebretson
0e23ac80bf Horde: Fix log tag rendering with note about react-highlighter
#rnx
#skipci

[CL 29520160 by josh engebretson in ue5-main branch]
2023-11-07 10:02:11 -05:00
ben marsh
9526983299 Horde: Reverse order of arguments to Redis child process. Config file arguments must come first.
#jira

[CL 29519704 by ben marsh in ue5-main branch]
2023-11-07 09:47:13 -05:00
ben marsh
ecacccb935 Horde: Remove unnecessary using directive.
#jira

[CL 29518566 by ben marsh in ue5-main branch]
2023-11-07 08:44:49 -05:00
ben marsh
5c7ab98c0e Horde: Prevent hosted Redis test executing on Linux.
#jira

[CL 29518420 by ben marsh in ue5-main branch]
2023-11-07 08:37:23 -05:00
ben marsh
b87de378ac Horde: Use the same code for starting a local Redis instance in the server and testbed, and copy the server executable to a temporary location before launching it to fix access violation errors.
#jira

[CL 29518092 by ben marsh in ue5-main branch]
2023-11-07 08:18:07 -05:00