Commit 881ae88
fix(expert mode): don't apply auto start cooldown after a reboot
The system bridge auto start has a 5 minute cooldown that prevents it
from being auto started again if it was last auto started less than 5
minutes ago. This exists to avoid an infinite restart loop when the
system bridge keeps being killed shortly after starting.
The cooldown was based solely on the wall clock time of the last auto
start (systemBridgeLastAutoStartTime), which persists across reboots.
So if the user rebooted, used the device for 1-2 minutes and rebooted
again, the system bridge was stopped by the reboot (a correct
termination, not a crash) but the cooldown still fired. The user got the
"expert mode stopped unexpectedly / not auto restarting because last
auto started less than 5 minutes ago" notification and the service did
not start.
Store the device boot time (unix time - elapsed realtime) alongside the
last auto start time, and skip the cooldown when the current boot time
differs from the stored one, i.e. the device has rebooted since the last
auto start. A crash loop within a single boot session still triggers the
cooldown because the boot time does not change between kills.
Fixes #21951 parent f35b9c0 commit 881ae88
3 files changed
Lines changed: 71 additions & 0 deletions
File tree
- base/src
- main/java/io/github/sds100/keymapper/base/expertmode
- test/java/io/github/sds100/keymapper/base/expertmode
- data/src/main/java/io/github/sds100/keymapper/data
Lines changed: 34 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
284 | 284 | | |
285 | 285 | | |
286 | 286 | | |
| 287 | + | |
287 | 288 | | |
288 | 289 | | |
289 | 290 | | |
| |||
349 | 350 | | |
350 | 351 | | |
351 | 352 | | |
| 353 | + | |
| 354 | + | |
352 | 355 | | |
353 | 356 | | |
354 | 357 | | |
| |||
362 | 365 | | |
363 | 366 | | |
364 | 367 | | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
365 | 379 | | |
366 | 380 | | |
367 | 381 | | |
368 | 382 | | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
369 | 393 | | |
370 | 394 | | |
371 | 395 | | |
| |||
451 | 475 | | |
452 | 476 | | |
453 | 477 | | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
454 | 488 | | |
Lines changed: 29 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
783 | 783 | | |
784 | 784 | | |
785 | 785 | | |
| 786 | + | |
| 787 | + | |
| 788 | + | |
| 789 | + | |
| 790 | + | |
| 791 | + | |
| 792 | + | |
| 793 | + | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
786 | 815 | | |
Lines changed: 8 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
150 | 150 | | |
151 | 151 | | |
152 | 152 | | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
153 | 161 | | |
154 | 162 | | |
155 | 163 | | |
| |||
0 commit comments