Commit Graph

19 Commits

Author SHA1 Message Date
Ben Marsh
8f5942b1bf Horde: Support indexed searches for new log storage format. Persisted data is indexed using ngram tries, tail data is converted to plain text and searched directly.
#preflight none

[CL 23217803 by Ben Marsh in ue5-main branch]
2022-11-20 19:15:21 -05:00
Ben Marsh
bf9f42bcdd Horde: Fix line count returned using new logger backend.
#preflight none

[CL 23215892 by Ben Marsh in ue5-main branch]
2022-11-19 14:30:54 -05:00
Ben Marsh
08a5142fef Horde: Support for log tailing with new storage backend.
* Once a log is retrieved, server adds an entry with this log id to a sorted set in Redis, scored by expiry time and broadcasts it to any other server instances.
* If a log is being tailed, server keeps the total number of lines in a Redis key and appends chunks of log data to a sorted set for that log scored by index of the first line.
* Chunks are split on fixed boundaries, in order to allow older entries to be purged by score without having to count the number of lines they contain first.
* Agent polls for requests to provide tail data via LogRpcService.UpdateLogTail, which calls LogTailService.WaitForTailNext. WaitForTailNext returns the index of the total line count for this log if it is being tailed (indicating the index of the next line that the agent should send to the server), or blocks until the log is being tailed.
* Once data is flushed to persistent storage, the number of flushed lines is added to LogRpcService._trimQueue and the line data is removed from Redis after LogRpcService.TrimAfter.
* Log node contains a "complete" flag indicating whether it is necessary to check for tail data.

#preflight none

[CL 23215856 by Ben Marsh in ue5-main branch]
2022-11-19 14:15:32 -05:00
Ben Marsh
2588651cc3 Horde: Remove byte offset-based addressing for log data.
#preflight none

[CL 23199028 by Ben Marsh in ue5-main branch]
2022-11-18 13:35:05 -05:00
Ben Marsh
529b815b6d Horde: Add an option to return log data from the new log storage backend. Does not currently implement search.
#preflight none

[CL 23197938 by Ben Marsh in ue5-main branch]
2022-11-18 12:34:37 -05:00
carl bystrom
a7e515501b Horde: Support cancellation tokens in LogFileService and LogFileCollection
#fyi Ben.Marsh
#preflight 635918f8a2609c2faeb73b4b

[CL 22776059 by carl bystrom in ue5-main branch]
2022-10-26 07:27:13 -04:00
Ben Marsh
ce3e806add Horde: Fix missing disposal of async enumerators, causing slow leak of Perforce connections when checking for changes.
#preflight none

[CL 22743555 by Ben Marsh in ue5-main branch]
2022-10-24 21:13:35 -04:00
carl bystrom
a6a20aad9d Horde: Remove log lines used to debug Redis I/O issues
#preflight none

[CL 22739613 by carl bystrom in ue5-main branch]
2022-10-24 18:31:44 -04:00
Ben Marsh
a24e48fa97 Horde: Remove the remaining boolean variable names with a 'b' prefix.
#preflight none

[CL 22600647 by Ben Marsh in ue5-main branch]
2022-10-18 11:08:00 -04:00
carl bystrom
3244b0493e Horde: Use a shared ticker for background ticks in LogFileService
Prevents multiple worker processes from trying to flush log chunks at the same time. Which hopefully reduces peak network I/O.

#preflight none

[CL 22477177 by carl bystrom in ue5-main branch]
2022-10-12 08:41:13 -04:00
Ben Marsh
075162706e EpicGames.Core: Fix static analysis warnings.
#preflight 633b4ae16b10157eac6f1f15

[CL 22314153 by Ben Marsh in ue5-main branch]
2022-10-03 17:01:13 -04:00
carl bystrom
c454b8c00c Horde: Add alternative log chunk writer with a concurrency limit
* Limits number of concurrent writes to avoid high memory and I/O usage.
* Can be toggled by a feature flag.
#preflight 6337144e7c11614c21cf879a

[CL 22272489 by carl bystrom in ue5-main branch]
2022-09-30 12:10:53 -04:00
carl bystrom
11d1a8449a Horde: Add more logging to LogFileService to debug performance problems
#preflight none

[CL 22220255 by carl bystrom in ue5-main branch]
2022-09-28 07:45:13 -04:00
carl bystrom
e9e60bbc64 Horde: Instrument background work in LogFileService
#preflight none

[CL 22205837 by carl bystrom in ue5-main branch]
2022-09-27 10:31:33 -04:00
Ben Marsh
026f64a35b Horde: Add an "Analyze" configuration to the Horde.Build project which enables the standard NET analyzers, and fix up existing warnings.
#preflight none

[CL 21776062 by Ben Marsh in ue5-main branch]
2022-09-03 09:28:43 -04:00
carl bystrom
a35280007b Horde: Create a new log file only when lease is accepted
#preflight none

[CL 21742355 by carl bystrom in ue5-main branch]
2022-09-01 11:53:49 -04:00
carl bystrom
78785b6853 Horde: Add more tracing of completed chunk writes
This method does parallel writes which potentially causes a spiky load on the underlying log chunk storage (Redis).
#preflight 62a6fe75bf050eb24f5ef699

[CL 20624055 by carl bystrom in ue5-main branch]
2022-06-13 05:12:28 -04:00
Ben Marsh
84c453ad8f Horde: Move files into namespaces corresponding to their location on disk.
#preflight none

[CL 20543973 by Ben Marsh in ue5-main branch]
2022-06-07 15:53:33 -04:00
Ben Marsh
59e5d48548 Horde: Finish re-org of Horde solution started a while ago.
* Controllers and messages are now stored alongside their related classes.
* "Impl" folders have been removed to allow more logical grouping of code by subject area rather than implementation details.

#fyi Josh.Engebretson, Carl.Bystrom
#preflight none

[CL 20540527 by Ben Marsh in ue5-main branch]
2022-06-07 13:05:00 -04:00