From 88f17aa96e3f2eaa523d94d4e029f260abf8b554 Mon Sep 17 00:00:00 2001 From: BRUNER Patrick Date: Mon, 8 Jun 2026 14:58:45 +0200 Subject: [PATCH 1/4] Strictly monotonic global access counter. Used instead of a wall-clock timestamp (Environment.TickCount64) because its ~15 ms resolution lets many touches collapse onto the same value during burst access, making LRU eviction order ambiguous. A sequence counter gives every Touch a unique, ever-increasing value, so recency is totally ordered. --- src/LogExpert.Core/Classes/Log/Buffers/LogBufferCacheEntry.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/LogExpert.Core/Classes/Log/Buffers/LogBufferCacheEntry.cs b/src/LogExpert.Core/Classes/Log/Buffers/LogBufferCacheEntry.cs index 7ce51e47..3857824c 100644 --- a/src/LogExpert.Core/Classes/Log/Buffers/LogBufferCacheEntry.cs +++ b/src/LogExpert.Core/Classes/Log/Buffers/LogBufferCacheEntry.cs @@ -2,6 +2,8 @@ namespace LogExpert.Core.Classes.Log.Buffers; public class LogBufferCacheEntry { + private static long _accessSequence; + private long _lastUseTimeStamp; #region cTor @@ -25,7 +27,7 @@ public LogBufferCacheEntry () public void Touch () { - _ = Interlocked.Exchange(ref _lastUseTimeStamp, Environment.TickCount64); + _ = Interlocked.Exchange(ref _lastUseTimeStamp, Interlocked.Increment(ref _accessSequence)); } #endregion From 8295ba01440b57d235a00943d272ec91b19890fc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 8 Jun 2026 13:03:34 +0000 Subject: [PATCH 2/4] chore: update plugin hashes [skip ci] --- .../PluginHashGenerator.Generated.cs | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/PluginRegistry/PluginHashGenerator.Generated.cs b/src/PluginRegistry/PluginHashGenerator.Generated.cs index 12fde81c..9ec857d4 100644 --- a/src/PluginRegistry/PluginHashGenerator.Generated.cs +++ b/src/PluginRegistry/PluginHashGenerator.Generated.cs @@ -10,7 +10,7 @@ public static partial class PluginValidator { /// /// Gets pre-calculated SHA256 hashes for built-in plugins. - /// Generated: 2026-06-08 11:41:54 UTC + /// Generated: 2026-06-08 13:03:32 UTC /// Configuration: Release /// Plugin count: 21 /// @@ -18,27 +18,27 @@ public static Dictionary GetBuiltInPluginHashes() { return new Dictionary(StringComparer.OrdinalIgnoreCase) { - ["AutoColumnizer.dll"] = "FAE9B82D5E6C5D84F9A9D605F0BD4907275B8606224E9FEA63384EDFEF37C6E2", + ["AutoColumnizer.dll"] = "B6E345DCF182D55C3069702704C18D71FD65DEC3DC1FF1E170D4072F95105300", ["BouncyCastle.Cryptography.dll"] = "E5EEAF6D263C493619982FD3638E6135077311D08C961E1FE128F9107D29EBC6", ["BouncyCastle.Cryptography.dll (x86)"] = "E5EEAF6D263C493619982FD3638E6135077311D08C961E1FE128F9107D29EBC6", - ["CsvColumnizer.dll"] = "A32752B4A6A32D848714F76802CAD2C594111B9E82BB82321596BDF088742D35", - ["CsvColumnizer.dll (x86)"] = "A32752B4A6A32D848714F76802CAD2C594111B9E82BB82321596BDF088742D35", - ["DefaultPlugins.dll"] = "CE38F9B211EFC963BDF32435888AB9B57EAB67A4AF30BCD81B45CECC7F7A083E", - ["FlashIconHighlighter.dll"] = "5FCE162F24D638BA1FBBED873E730D91EE4369CABF2EB8622823D067F8807A58", - ["GlassfishColumnizer.dll"] = "230440A980B3CA824F4ED9CE15C790DE7D1E6A5347B5B560D18F553445FE9D87", - ["JsonColumnizer.dll"] = "52FDCE7A4527CAC3FF52638D6C71DCFB476BE3EA71DFF169844250E4A94630F7", - ["JsonCompactColumnizer.dll"] = "9A64B9CA107428C2AA4D11089A7E02F70CD2226001401574A21A5009B8E09F1F", - ["Log4jXmlColumnizer.dll"] = "BB21894E3E2E417970808C5489B2E105AD0093FC63CFA63D802C44F0CFCC07F8", - ["LogExpert.Resources.dll"] = "2B319CB107E22D7E1FCBCB553F9A5D19EBAF6CA1B9AE906BED8C5F46BCF31A46", + ["CsvColumnizer.dll"] = "1A46CD201F6471EC0AA4638D17405DCDB33BE8433489F155D4094DA9C58B1FD9", + ["CsvColumnizer.dll (x86)"] = "1A46CD201F6471EC0AA4638D17405DCDB33BE8433489F155D4094DA9C58B1FD9", + ["DefaultPlugins.dll"] = "1F701A8CB30062F58E4B6178661417B56A777613F54B2055993954DAC88CE814", + ["FlashIconHighlighter.dll"] = "26F4EE0D9E77AE90F7DB4CF510DE8275CAF3369C524C4766B2431EA5A92B7371", + ["GlassfishColumnizer.dll"] = "E7D22E83764992F58B2993F81000CC01C251FFF38304E0E6D51C8BED723FB8F2", + ["JsonColumnizer.dll"] = "8264DA1173E60860CFAF1E63F0B612533D74521F3878CFF2E8CA502955028430", + ["JsonCompactColumnizer.dll"] = "FC2A83679394C134BDE4B0F0F36C37D71D0496DA19178639601A11BFB892D408", + ["Log4jXmlColumnizer.dll"] = "5EAA6D4CBAAED75998BAECEF1C750D159DAC0EE2FC187C810ADA80226BE07313", + ["LogExpert.Resources.dll"] = "F545E7C99312F8DF7C4415B4A5EA3E28A66D3608593C6A37F81333BC51383A7C", ["Microsoft.Extensions.DependencyInjection.Abstractions.dll"] = "67FA4325000DB017DC0C35829B416F024F042D24EFB868BCF17A895EE6500A93", ["Microsoft.Extensions.DependencyInjection.Abstractions.dll (x86)"] = "67FA4325000DB017DC0C35829B416F024F042D24EFB868BCF17A895EE6500A93", ["Microsoft.Extensions.Logging.Abstractions.dll"] = "BB853130F5AFAF335BE7858D661F8212EC653835100F5A4E3AA2C66A4D4F685D", ["Microsoft.Extensions.Logging.Abstractions.dll (x86)"] = "BB853130F5AFAF335BE7858D661F8212EC653835100F5A4E3AA2C66A4D4F685D", - ["RegexColumnizer.dll"] = "AE31F0AD10FDEEB9AE403E57DAEDC320820F6C8FA653397A13DEEDE9C61CE796", - ["SftpFileSystem.dll"] = "01022F360A3D56E2E6C70BFDE496CF34B480C16067A174341929E49C23524C90", - ["SftpFileSystem.dll (x86)"] = "9740AE69A43EF9DB24132DFC1DC61540C6CF2438CC50800EAD3D80455D067E12", - ["SftpFileSystem.Resources.dll"] = "9753DC9D7191CD5EF9D65F206068FACE05F0BFE9A64272B3B8830ADDCE7D0F75", - ["SftpFileSystem.Resources.dll (x86)"] = "9753DC9D7191CD5EF9D65F206068FACE05F0BFE9A64272B3B8830ADDCE7D0F75", + ["RegexColumnizer.dll"] = "7B50D57B1E70ABFA0C014C54133BD3324CAB68BA11BA90642CC4EFD715E85DBC", + ["SftpFileSystem.dll"] = "7ED32C3D59B0CE5ABBC67F93D77AB056F57E7D8DCF74EF3C65770AC48E4A95F1", + ["SftpFileSystem.dll (x86)"] = "6337088CB0AAE167353E6E660C2B0366EECBC9B09114A853DAA71D7550CAC812", + ["SftpFileSystem.Resources.dll"] = "05E651C3E49BCCBFCE8A7C06D611F4716C33E8A9F2C53252F86CA2CEF3CDF1E8", + ["SftpFileSystem.Resources.dll (x86)"] = "05E651C3E49BCCBFCE8A7C06D611F4716C33E8A9F2C53252F86CA2CEF3CDF1E8", }; } From ac3720efc67b9138c49148739f39ca1e6b7210ff Mon Sep 17 00:00:00 2001 From: BRUNER Patrick Date: Mon, 8 Jun 2026 15:14:33 +0200 Subject: [PATCH 3/4] review comment --- .../Classes/Log/Buffers/LogBufferCacheEntry.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/LogExpert.Core/Classes/Log/Buffers/LogBufferCacheEntry.cs b/src/LogExpert.Core/Classes/Log/Buffers/LogBufferCacheEntry.cs index 3857824c..896381e7 100644 --- a/src/LogExpert.Core/Classes/Log/Buffers/LogBufferCacheEntry.cs +++ b/src/LogExpert.Core/Classes/Log/Buffers/LogBufferCacheEntry.cs @@ -27,8 +27,14 @@ public LogBufferCacheEntry () public void Touch () { - _ = Interlocked.Exchange(ref _lastUseTimeStamp, Interlocked.Increment(ref _accessSequence)); + _ = Interlocked.Exchange(ref _lastUseTimeStamp, NextAccessSequence()); } #endregion + + private static long NextAccessSequence () + { + return Interlocked.Increment(ref _accessSequence); + } + } \ No newline at end of file From f55ef5f1a9504c40d77bda08a4e921e314338dd2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 8 Jun 2026 13:17:27 +0000 Subject: [PATCH 4/4] chore: update plugin hashes [skip ci] --- .../PluginHashGenerator.Generated.cs | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/PluginRegistry/PluginHashGenerator.Generated.cs b/src/PluginRegistry/PluginHashGenerator.Generated.cs index 9ec857d4..1a7cc822 100644 --- a/src/PluginRegistry/PluginHashGenerator.Generated.cs +++ b/src/PluginRegistry/PluginHashGenerator.Generated.cs @@ -10,7 +10,7 @@ public static partial class PluginValidator { /// /// Gets pre-calculated SHA256 hashes for built-in plugins. - /// Generated: 2026-06-08 13:03:32 UTC + /// Generated: 2026-06-08 13:17:25 UTC /// Configuration: Release /// Plugin count: 21 /// @@ -18,27 +18,27 @@ public static Dictionary GetBuiltInPluginHashes() { return new Dictionary(StringComparer.OrdinalIgnoreCase) { - ["AutoColumnizer.dll"] = "B6E345DCF182D55C3069702704C18D71FD65DEC3DC1FF1E170D4072F95105300", + ["AutoColumnizer.dll"] = "16DEB420EABF7547B1424B1D351A6724475E75E1A30B8334E860124E2A556B11", ["BouncyCastle.Cryptography.dll"] = "E5EEAF6D263C493619982FD3638E6135077311D08C961E1FE128F9107D29EBC6", ["BouncyCastle.Cryptography.dll (x86)"] = "E5EEAF6D263C493619982FD3638E6135077311D08C961E1FE128F9107D29EBC6", - ["CsvColumnizer.dll"] = "1A46CD201F6471EC0AA4638D17405DCDB33BE8433489F155D4094DA9C58B1FD9", - ["CsvColumnizer.dll (x86)"] = "1A46CD201F6471EC0AA4638D17405DCDB33BE8433489F155D4094DA9C58B1FD9", - ["DefaultPlugins.dll"] = "1F701A8CB30062F58E4B6178661417B56A777613F54B2055993954DAC88CE814", - ["FlashIconHighlighter.dll"] = "26F4EE0D9E77AE90F7DB4CF510DE8275CAF3369C524C4766B2431EA5A92B7371", - ["GlassfishColumnizer.dll"] = "E7D22E83764992F58B2993F81000CC01C251FFF38304E0E6D51C8BED723FB8F2", - ["JsonColumnizer.dll"] = "8264DA1173E60860CFAF1E63F0B612533D74521F3878CFF2E8CA502955028430", - ["JsonCompactColumnizer.dll"] = "FC2A83679394C134BDE4B0F0F36C37D71D0496DA19178639601A11BFB892D408", - ["Log4jXmlColumnizer.dll"] = "5EAA6D4CBAAED75998BAECEF1C750D159DAC0EE2FC187C810ADA80226BE07313", - ["LogExpert.Resources.dll"] = "F545E7C99312F8DF7C4415B4A5EA3E28A66D3608593C6A37F81333BC51383A7C", + ["CsvColumnizer.dll"] = "AA2D059B60E64CEC69ABBC79B1EE5B02E1BE0EB224F709D529B22AF2229BC938", + ["CsvColumnizer.dll (x86)"] = "AA2D059B60E64CEC69ABBC79B1EE5B02E1BE0EB224F709D529B22AF2229BC938", + ["DefaultPlugins.dll"] = "6628F596C75DE32EAB4E6AA9A5A6F15E4E778E46C268B0E1C946633ACD55087B", + ["FlashIconHighlighter.dll"] = "BEF9FD438AEA8C8B63BEBFF1B7AACF74682F00D68EF13B245C207305D38BA582", + ["GlassfishColumnizer.dll"] = "B81D7C2928A3AA797AD405E272BB728001FADA3976A3C6EA26E276186A75D973", + ["JsonColumnizer.dll"] = "518DD3566DD7E3F8591577D16525CDB6C401E16327CA8458B512362B7F8DCE7A", + ["JsonCompactColumnizer.dll"] = "9530D380AB2D662C3B5EE63FFCA6D509F135B20CCD0E064B4718476D737FEEDC", + ["Log4jXmlColumnizer.dll"] = "05B5683EEB2276482AB3EB83FDFE0680F1382F0A82B453F1AD55DBEAFD23E7DB", + ["LogExpert.Resources.dll"] = "9D843408A5C4B8FCF3B780E7495FC23DD9BF76066351285A09643089BF5703D1", ["Microsoft.Extensions.DependencyInjection.Abstractions.dll"] = "67FA4325000DB017DC0C35829B416F024F042D24EFB868BCF17A895EE6500A93", ["Microsoft.Extensions.DependencyInjection.Abstractions.dll (x86)"] = "67FA4325000DB017DC0C35829B416F024F042D24EFB868BCF17A895EE6500A93", ["Microsoft.Extensions.Logging.Abstractions.dll"] = "BB853130F5AFAF335BE7858D661F8212EC653835100F5A4E3AA2C66A4D4F685D", ["Microsoft.Extensions.Logging.Abstractions.dll (x86)"] = "BB853130F5AFAF335BE7858D661F8212EC653835100F5A4E3AA2C66A4D4F685D", - ["RegexColumnizer.dll"] = "7B50D57B1E70ABFA0C014C54133BD3324CAB68BA11BA90642CC4EFD715E85DBC", - ["SftpFileSystem.dll"] = "7ED32C3D59B0CE5ABBC67F93D77AB056F57E7D8DCF74EF3C65770AC48E4A95F1", - ["SftpFileSystem.dll (x86)"] = "6337088CB0AAE167353E6E660C2B0366EECBC9B09114A853DAA71D7550CAC812", - ["SftpFileSystem.Resources.dll"] = "05E651C3E49BCCBFCE8A7C06D611F4716C33E8A9F2C53252F86CA2CEF3CDF1E8", - ["SftpFileSystem.Resources.dll (x86)"] = "05E651C3E49BCCBFCE8A7C06D611F4716C33E8A9F2C53252F86CA2CEF3CDF1E8", + ["RegexColumnizer.dll"] = "817455920EEBDB247AF3B7EAE1F872AD95EB2A5CED728AE02687A386BA387FE0", + ["SftpFileSystem.dll"] = "BF1FE53D2A4ECF000718F67CCBA193BB670D859C6C2D449075C15C2F52812579", + ["SftpFileSystem.dll (x86)"] = "E1BAC2E86D11A768BF9750A269E9748CC24EA5FD59E52FEB508B9FFBFB8541D6", + ["SftpFileSystem.Resources.dll"] = "05CF7AAB99459310CA52A1C0C7675C44EAF64AEB852793F5A73DA8AE405E10B5", + ["SftpFileSystem.Resources.dll (x86)"] = "05CF7AAB99459310CA52A1C0C7675C44EAF64AEB852793F5A73DA8AE405E10B5", }; }