#fyi joe.kirchoff
Original CL Desc
-----------------------------------------------------------------
EpicGames.Redis: net6.0 upgrade (with warnings)
Remaining warnings:
RedisChannel.cs(15,25,15,37): warning CA1066: Type EpicGames.Redis.RedisChannel<T> should implement IEquatable<T> because it overrides Equals
Utility\RedisLock.cs(14,15,14,24): warning CA1063: Provide an overridable implementation of Dispose(bool) on 'RedisLock' or mark the type as sealed. A call to Dispose(false) should only clean up native resources. A call to Dispose(true) should clean up both managed and native resources.
Utility\RedisLock.cs(39,26,39,38): warning CA1816: Change RedisLock.DisposeAsync() to call GC.SuppressFinalize(object). This will prevent derived types that introduce a finalizer from needing to re-implement 'IDisposable' to call it.
Utility\RedisLock.cs(79,11,79,96): warning CA2008: Do not create tasks without passing a TaskScheduler
Utility\RedisLock.cs(33,15,33,22): warning CA1063: Modify 'RedisLock.Dispose' so that it calls Dispose(true), then calls GC.SuppressFinalize on the current object instance ('this' or 'Me' in Visual Basic), and then returns
Utility\RedisLock.cs(33,15,33,22): warning CA1816: Change RedisLock.Dispose() to call GC.SuppressFinalize(object). This will prevent derived types that introduce a finalizer from needing to re-implement 'IDisposable' to call it.
#rnx
#rb none
#preflight 629e7910cb76a3f715a5cc4f
[CL 20540282 by joe kirchoff in ue5-main branch]
Remaining warnings:
RedisChannel.cs(15,25,15,37): warning CA1066: Type EpicGames.Redis.RedisChannel<T> should implement IEquatable<T> because it overrides Equals
Utility\RedisLock.cs(14,15,14,24): warning CA1063: Provide an overridable implementation of Dispose(bool) on 'RedisLock' or mark the type as sealed. A call to Dispose(false) should only clean up native resources. A call to Dispose(true) should clean up both managed and native resources.
Utility\RedisLock.cs(39,26,39,38): warning CA1816: Change RedisLock.DisposeAsync() to call GC.SuppressFinalize(object). This will prevent derived types that introduce a finalizer from needing to re-implement 'IDisposable' to call it.
Utility\RedisLock.cs(79,11,79,96): warning CA2008: Do not create tasks without passing a TaskScheduler
Utility\RedisLock.cs(33,15,33,22): warning CA1063: Modify 'RedisLock.Dispose' so that it calls Dispose(true), then calls GC.SuppressFinalize on the current object instance ('this' or 'Me' in Visual Basic), and then returns
Utility\RedisLock.cs(33,15,33,22): warning CA1816: Change RedisLock.Dispose() to call GC.SuppressFinalize(object). This will prevent derived types that introduce a finalizer from needing to re-implement 'IDisposable' to call it.
#rnx
#rb none
#preflight 629e7910cb76a3f715a5cc4f
[CL 20528968 by joe kirchoff in ue5-main branch]
Two sets of data are returned - one detailing the timeline of the task on the server (being queued, through dispatched, to completed), and one detailing the timeline of the task on the remote agent (downloading data, executing the task, and uploading the result).
The standalone compute command implementation in Horde.Agent also logs its own timeline of events.
#preflight none
[CL 19675739 by Ben Marsh in ue5-main branch]
- Each tool can have a number of deployments which are rolled out over time. Clients can specify a "phase" value indicating where in the queue they want to take updates (ie. whether they want to be early- or late-adopters), and deployments can be paused and cancelled.
- Tool channels are configured through the global configuration file. Tools can be marked "public", meaning that they do not require authentication against Horde for access. This can be useful for auto-update scenarios.
- The most recent 5 deployments are kept in the tool at any time.
The collection and controller implementation here is an experiment in reducing the amount of boilerplate currently adopted as a pattern in Horde. Notably:
- Model and collection classes are concrete rather than interfaces (since we don't generally mock them anyway).
- The same model class with annotations is used for response objects (paving the way to supporting patching and filtering using the same public model as the internal model).
- The VersionedCollection class is used to handle automatic migration of documents across schema versions, and cache document values with Redis.
- MongoDB property names are explicit and short, rather than just taking variable names.
#preflight none
[CL 19636699 by Ben Marsh in ue5-main branch]