1 files changed, 25 insertions, 2 deletions
diff --git a/ModerationClient/ViewModels/ClientViewModel.cs b/ModerationClient/ViewModels/ClientViewModel.cs
index a2da5be..378c0de 100644
--- a/ModerationClient/ViewModels/ClientViewModel.cs
+++ b/ModerationClient/ViewModels/ClientViewModel.cs
@@ -6,6 +6,8 @@ using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
+using System.Net;
+using System.Net.Http;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
@@ -15,8 +17,10 @@ using ArcaneLibs.Extensions;
using LibMatrix;
using LibMatrix.EventTypes.Spec.State;
using LibMatrix.EventTypes.Spec.State.RoomInfo;
+using LibMatrix.Filters;
using LibMatrix.Helpers;
using LibMatrix.Responses;
+using LibMatrix.Services;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using ModerationClient.Models.SpaceTreeNodes;
@@ -90,9 +94,13 @@ public partial class ClientViewModel : ViewModelBase {
var ssr = new SyncStateResolver(_authService.Homeserver, _logger, storageProvider: store);
Console.WriteLine("Created sync state resolver...");
Status = "Optimising sync store, please wait... Creating new snapshot...";
+ var sw = Stopwatch.StartNew();
await ssr.OptimiseStore((remaining, total) => {
- if (remaining % (remaining / 10) == 0)
+ // if (remaining % (remaining / 10) == 0)
+ if (sw.ElapsedMilliseconds > 100) {
Status = $"Optimising sync store, please wait... {remaining}/{total} remaining...";
+ sw.Restart();
+ }
});
Status = "Optimising sync store, please wait... Deleting old intermediate snapshots...";
await ssr.RemoveOldSnapshots();
@@ -110,6 +118,21 @@ public partial class ClientViewModel : ViewModelBase {
Status = "Doing initial sync...";
var currentSyncRes = "init";
var lastGc = DateTime.Now;
+ int syncGatewayTimeouts = 0;
+ // var filter = new SyncFilter() {
+ // Room = new SyncFilter.RoomFilter() {
+ // Rooms = []
+ // }
+ // };
+ //
+ // sh.Filter = filter;
+
+ sh.ExceptionHandlers.Add(async (ex) => {
+ if (ex is HttpRequestException { StatusCode: HttpStatusCode.GatewayTimeout }) {
+ syncGatewayTimeouts++;
+ Status = $"Got {syncGatewayTimeouts} sync gateway timeouts...";
+ }
+ });
await foreach (var res in sh.EnumerateSyncAsync()) {
var sw = Stopwatch.StartNew();
//log thing
@@ -150,7 +173,7 @@ public partial class ClientViewModel : ViewModelBase {
Console.WriteLine($"Processed sync {currentSyncRes} in {sw.ElapsedMilliseconds}ms (applied in: {applySw.ElapsedMilliseconds}ms)");
if (Paused) {
Status = "Sync loop interrupted... Press pause/break to resume.";
- while (Paused) await Task.Delay(1000);
+ while (Paused) await Task.Delay(100);
}
else Status = $"Syncing... {unoptimised++} unoptimised sync responses, last={currentSyncRes}...";
|