* Tags are now only computed on demand.
* Batching for queries that require describe commands reuses connections and stream metadata between iterations.
#preflight none
[CL 21926162 by Ben Marsh in ue5-main branch]
Using the wildcard support for p4 print we can print the entire contents of a shelf with one call instead of a call for each file.
Splitting TryPrint*Async into a method that assumes one file in and one result out, and another method that can return multiple results.
#rnx
#jira none
#rb ben.marsh
#preflight n/a
[CL 21706680 by Ryan Hummer in ue5-main branch]
Other changes:
* Allow passing any string prefix for blob names, not just ref names.
* Fix deserialization of blob ids from MongoDB.
* Arbitrary nodes can now be passed in as the root for any refs written using a writer. This allows writing multiple refs using the same data, and makes semantics clearer for serialization.
#preflight none
[CL 21705119 by Ben Marsh in ue5-main branch]
Each writer can create any number of child writers. Data in the parent writer will not be flushed until all child writers it depends on have been flushed.
Each writer will output data to different blobs, allowing better control of data locality in output bundles.
#preflight none
[CL 21699421 by Ben Marsh in ue5-main branch]
Also improved logging when a unknown issue happens.
Lastly the error code returned from the mac process seems to be converted to a unsigned 32 bit so checking for that value as well when checking the exit code that means we should upgrade the process to a interactive login.
#preflight https://horde.devtools.epicgames.com/job/6308e65e2a02fecb6f3cadc5
[CL 21665549 by Joakim Lindqvist in ue5-main branch]
* BlobIds now have a fixed structure, consisting of a server id (a list of identifiers separated by colons, indicating topology of the hierarchy) and content id (a globally unique identifier, which may contain path elements). Expectation is that any node in the storage hierarchy can retrieve a blob by using the server id to navigate the hierarchy until reaching a host that can provide the blob.
* Refs are now explicitly mappings from names to blob ids, and can be queried separately to the blob content. Overloads for transferring blob content inline are defined, for stores that choose to store the payload inline as an optimization.
* Ref queries now specify a time parameter, indicating required coherency of any cached values that may be returned without forwarding the request to the root storage node.
* Default implementation of the blob store now uses MongoDB to store refs (ie. name -> blob id mappings).
* Updated existing use cases to use new API and added tests.
#preflight none
[CL 21625328 by Ben Marsh in ue5-main branch]