Repository navigation
Commit 4cf0b9b
committed
Let interop calls cut off by disposal finish without throwing
A command or query still in flight when the component was disposed threw
once the JS side went away. In a reloaded BlazorWebView the page no longer
holds the instance, so the call fails with a JSException; elsewhere it is
JSDisconnectedException, ObjectDisposedException or TaskCanceledException.
Calls made after disposal already did nothing, but these were issued
before it. A caller that fired one off without awaiting - the usual way to
scroll a list back to the top after a filter change - saw it only as an
unobserved task exception, so apps wrapped the calls in catches of their
own: SatisFIT's exercise picker catches ObjectDisposedException around
ScrollToTop, which misses the other three.
InvokeInstance and QueryInstance now catch a failure that arrives after
disposal started: a command completes, a query returns its default, and
the failure is logged as teardown already does - Debug for the known ways
the JS side goes away, Warning for anything else. A failure while the
component is alive still throws.
The render path had the same gap: a render's setOptions, setItems or
measureRenderedRows in flight at disposal stopped the render when it
succeeded, but escaped as an unhandled render exception when it failed.
Those calls now go through InvokeInstance too.
Tests: ScrollToTop in flight at disposal, for each of the four exceptions
and an unexpected one (logged at Debug, Warning for the last); GetSnapshot
in flight returns null; the render-race theory now also fails each held
call. All nine fail without the catches. A failure while alive still
throws.1 parent 4177bf1 commit 4cf0b9b
3 files changed
Lines changed: 121 additions & 10 deletions
File tree
- src/Blazor.TanStack.VirtualCore
- tests/Blazor.TanStack.VirtualCore.Tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
129 | 129 | | |
130 | 130 | | |
131 | 131 | | |
| 132 | + | |
| 133 | + | |
132 | 134 | | |
133 | 135 | | |
134 | 136 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
290 | 290 | | |
291 | 291 | | |
292 | 292 | | |
293 | | - | |
| 293 | + | |
294 | 294 | | |
295 | 295 | | |
296 | 296 | | |
| |||
310 | 310 | | |
311 | 311 | | |
312 | 312 | | |
313 | | - | |
| 313 | + | |
314 | 314 | | |
315 | 315 | | |
316 | 316 | | |
| |||
346 | 346 | | |
347 | 347 | | |
348 | 348 | | |
349 | | - | |
| 349 | + | |
350 | 350 | | |
351 | 351 | | |
352 | 352 | | |
| |||
479 | 479 | | |
480 | 480 | | |
481 | 481 | | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
482 | 489 | | |
483 | 490 | | |
484 | 491 | | |
485 | 492 | | |
486 | 493 | | |
487 | 494 | | |
488 | 495 | | |
489 | | - | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
490 | 504 | | |
491 | 505 | | |
| 506 | + | |
492 | 507 | | |
493 | 508 | | |
494 | 509 | | |
495 | 510 | | |
496 | 511 | | |
497 | 512 | | |
498 | 513 | | |
499 | | - | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
500 | 523 | | |
501 | 524 | | |
502 | 525 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
193 | 193 | | |
194 | 194 | | |
195 | 195 | | |
196 | | - | |
197 | | - | |
198 | | - | |
199 | | - | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
200 | 203 | | |
201 | 204 | | |
202 | 205 | | |
| |||
221 | 224 | | |
222 | 225 | | |
223 | 226 | | |
224 | | - | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
225 | 236 | | |
226 | 237 | | |
227 | 238 | | |
| |||
242 | 253 | | |
243 | 254 | | |
244 | 255 | | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
245 | 331 | | |
246 | 332 | | |
247 | 333 | | |
| |||
0 commit comments