Commit d3fc68c
committed
fix(gui): resolve session slowdown and hang under sustained compare load
A long GUI session could degrade until the app needed to be force-quit. Root cause was runaway /progress polling on the Webpage and Document compare pages: if a compare response was ever lost, the 200ms poller fired indefinitely and saturated the bridge's 16-thread worker pool, 503-ing every request including /cancel.
- Cap progress polling on WebpageComparePage and DocumentComparePage (progressPollMax ~5min); on timeout, cancel the wedged compare on the bridge and recover the UI. Mirror the same cancel-on-timeout in Main.qml's progress cap.
- Bound log file growth: rotate linsync.log to a single .1 backup past 8 MiB at startup (logging.rs).
- Release the global bridge state lock during /save file I/O via a three-phase prepare/perform/finish split, with a re-lock race guard so a concurrent edit is never silently marked saved.
- Keep /cancel and /progress servicable under saturation: route them before the worker-cap check (spawn-first, request-line routing) so the UI can always recover an in-flight compare.
- Bump workspace version to 1.16.3 and sync packaging recipes, changelogs, and metainfo.1 parent ddfa8aa commit d3fc68c
13 files changed
Lines changed: 705 additions & 144 deletions
File tree
- apps/linsync-gui
- qml
- src
- crates/linsync-core/src
- packaging
- arch
- debian
- rpm
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
50 | 57 | | |
51 | 58 | | |
52 | 59 | | |
| |||
98 | 105 | | |
99 | 106 | | |
100 | 107 | | |
| 108 | + | |
101 | 109 | | |
102 | 110 | | |
103 | 111 | | |
| |||
142 | 150 | | |
143 | 151 | | |
144 | 152 | | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
145 | 170 | | |
146 | 171 | | |
147 | 172 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6825 | 6825 | | |
6826 | 6826 | | |
6827 | 6827 | | |
| 6828 | + | |
| 6829 | + | |
| 6830 | + | |
| 6831 | + | |
| 6832 | + | |
| 6833 | + | |
| 6834 | + | |
| 6835 | + | |
6828 | 6836 | | |
6829 | 6837 | | |
6830 | 6838 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
68 | 75 | | |
69 | 76 | | |
70 | 77 | | |
| |||
131 | 138 | | |
132 | 139 | | |
133 | 140 | | |
| 141 | + | |
134 | 142 | | |
135 | 143 | | |
136 | 144 | | |
| |||
196 | 204 | | |
197 | 205 | | |
198 | 206 | | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
199 | 226 | | |
200 | 227 | | |
201 | 228 | | |
| |||
0 commit comments