From fee33ee3ff27c3c89ff8a27701242b62334f8e58 Mon Sep 17 00:00:00 2001 From: Rory& Date: Mon, 31 Mar 2025 09:30:02 +0200 Subject: Propagate more HTTP errors, sync error handling callback --- LibMatrix/Helpers/SyncHelper.cs | 8 +++++++- LibMatrix/Helpers/SyncStateResolver.cs | 6 +----- 2 files changed, 8 insertions(+), 6 deletions(-) (limited to 'LibMatrix/Helpers') diff --git a/LibMatrix/Helpers/SyncHelper.cs b/LibMatrix/Helpers/SyncHelper.cs index babdd6f..9b1b921 100644 --- a/LibMatrix/Helpers/SyncHelper.cs +++ b/LibMatrix/Helpers/SyncHelper.cs @@ -149,6 +149,7 @@ public class SyncHelper(AuthenticatedHomeserverGeneric homeserver, ILogger? logg catch (Exception e) { Console.WriteLine(e); logger?.LogError(e, "Failed to sync!\n{}", e.ToString()); + await Task.WhenAll(ExceptionHandlers.Select(x => x.Invoke(e)).ToList()); } return null; @@ -257,8 +258,13 @@ public class SyncHelper(AuthenticatedHomeserverGeneric homeserver, ILogger? logg /// public List> AccountDataReceivedHandlers { get; } = new(); + /// + /// Event fired when an exception is thrown + /// + public List> ExceptionHandlers { get; } = new(); + private void Log(string message) { if (logger is null) Console.WriteLine(message); else logger.LogInformation(message); } -} +} \ No newline at end of file diff --git a/LibMatrix/Helpers/SyncStateResolver.cs b/LibMatrix/Helpers/SyncStateResolver.cs index 35360d2..5d25561 100644 --- a/LibMatrix/Helpers/SyncStateResolver.cs +++ b/LibMatrix/Helpers/SyncStateResolver.cs @@ -51,7 +51,7 @@ public class SyncStateResolver(AuthenticatedHomeserverGeneric homeserver, ILogge var keys = (await storageProvider.GetAllKeysAsync()).Where(x => !x.StartsWith("old/")).ToFrozenSet(); var count = keys.Count - 1; int total = count; - Console.WriteLine($"Found {count} entries to optimise."); + Console.WriteLine($"Found {count} entries to optimise in {totalSw.Elapsed}."); var merged = await initLoadTask; if (merged is null) return; @@ -110,10 +110,6 @@ public class SyncStateResolver(AuthenticatedHomeserverGeneric homeserver, ILogge #endif } - // var traceString = string.Join("\n", traces.Select(x => $"{x.Key}\t{x.Value.ToJson(indent: false)}")); - // var ms = new MemoryStream(Encoding.UTF8.GetBytes(traceString)); - // await storageProvider.SaveStreamAsync($"traces/{oldPath}", ms); - await storageProvider.SaveObjectAsync("init", merged); await Task.WhenAll(moveTasks); -- cgit 1.5.1