{{ message }}
Repository navigation
Commit fb65271
committed
fix(sql): lock SQLite for writing before reading in claims
Knex and Kysely start SQLite transactions with a deferred BEGIN. The
claim, delayed-job promotion, stalled recovery, schedule claim, and
dedup transactions read before they write: when another process wrote
in between, SQLite failed them at once with SQLITE_BUSY, without
applying the busy timeout. A single worker next to a dispatcher process
lost a cycle and paused 5 s each time, and two processes deduplicating
the same id got a rejection instead of `skipped`.
These transactions now start with a no-op UPDATE on SQLite, which takes
the write lock up front like BEGIN IMMEDIATE, so they wait for the busy
timeout. Neither query builder lets us change its BEGIN statement. The
README documents running SQLite with several processes.1 parent 71d2fa1 commit fb65271
7 files changed
Lines changed: 195 additions & 19 deletions
File tree
- .changelog
- src/drivers
- tests
- _utils
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
512 | 512 | | |
513 | 513 | | |
514 | 514 | | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
515 | 531 | | |
516 | 532 | | |
517 | 533 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
153 | 153 | | |
154 | 154 | | |
155 | 155 | | |
156 | | - | |
| 156 | + | |
157 | 157 | | |
158 | 158 | | |
159 | 159 | | |
| |||
227 | 227 | | |
228 | 228 | | |
229 | 229 | | |
230 | | - | |
231 | | - | |
232 | | - | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
233 | 254 | | |
234 | 255 | | |
235 | 256 | | |
| |||
239 | 260 | | |
240 | 261 | | |
241 | 262 | | |
242 | | - | |
| 263 | + | |
243 | 264 | | |
244 | 265 | | |
245 | 266 | | |
| |||
540 | 561 | | |
541 | 562 | | |
542 | 563 | | |
543 | | - | |
| 564 | + | |
544 | 565 | | |
545 | 566 | | |
546 | 567 | | |
| |||
685 | 706 | | |
686 | 707 | | |
687 | 708 | | |
688 | | - | |
| 709 | + | |
689 | 710 | | |
690 | 711 | | |
691 | 712 | | |
| |||
884 | 905 | | |
885 | 906 | | |
886 | 907 | | |
887 | | - | |
| 908 | + | |
888 | 909 | | |
889 | 910 | | |
890 | 911 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
178 | 178 | | |
179 | 179 | | |
180 | 180 | | |
181 | | - | |
| 181 | + | |
182 | 182 | | |
183 | 183 | | |
184 | 184 | | |
| |||
214 | 214 | | |
215 | 215 | | |
216 | 216 | | |
217 | | - | |
| 217 | + | |
218 | 218 | | |
219 | 219 | | |
220 | 220 | | |
| |||
483 | 483 | | |
484 | 484 | | |
485 | 485 | | |
486 | | - | |
| 486 | + | |
487 | 487 | | |
488 | 488 | | |
489 | 489 | | |
| |||
642 | 642 | | |
643 | 643 | | |
644 | 644 | | |
645 | | - | |
| 645 | + | |
646 | 646 | | |
647 | 647 | | |
648 | 648 | | |
| |||
846 | 846 | | |
847 | 847 | | |
848 | 848 | | |
849 | | - | |
| 849 | + | |
850 | 850 | | |
851 | 851 | | |
852 | 852 | | |
| |||
902 | 902 | | |
903 | 903 | | |
904 | 904 | | |
| 905 | + | |
| 906 | + | |
| 907 | + | |
| 908 | + | |
| 909 | + | |
| 910 | + | |
| 911 | + | |
| 912 | + | |
| 913 | + | |
| 914 | + | |
905 | 915 | | |
906 | 916 | | |
| 917 | + | |
907 | 918 | | |
908 | 919 | | |
909 | | - | |
| 920 | + | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
| 924 | + | |
| 925 | + | |
910 | 926 | | |
911 | 927 | | |
912 | 928 | | |
| |||
922 | 938 | | |
923 | 939 | | |
924 | 940 | | |
| 941 | + | |
925 | 942 | | |
926 | 943 | | |
927 | | - | |
| 944 | + | |
928 | 945 | | |
929 | 946 | | |
930 | 947 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
| |||
2660 | 2661 | | |
2661 | 2662 | | |
2662 | 2663 | | |
| 2664 | + | |
2663 | 2665 | | |
2664 | 2666 | | |
2665 | 2667 | | |
2666 | | - | |
| 2668 | + | |
2667 | 2669 | | |
2668 | 2670 | | |
2669 | 2671 | | |
| |||
2674 | 2676 | | |
2675 | 2677 | | |
2676 | 2678 | | |
2677 | | - | |
| 2679 | + | |
2678 | 2680 | | |
2679 | 2681 | | |
| 2682 | + | |
| 2683 | + | |
| 2684 | + | |
| 2685 | + | |
| 2686 | + | |
| 2687 | + | |
| 2688 | + | |
| 2689 | + | |
| 2690 | + | |
| 2691 | + | |
| 2692 | + | |
| 2693 | + | |
| 2694 | + | |
| 2695 | + | |
| 2696 | + | |
| 2697 | + | |
| 2698 | + | |
| 2699 | + | |
| 2700 | + | |
| 2701 | + | |
| 2702 | + | |
| 2703 | + | |
| 2704 | + | |
| 2705 | + | |
| 2706 | + | |
| 2707 | + | |
| 2708 | + | |
| 2709 | + | |
2680 | 2710 | | |
2681 | 2711 | | |
2682 | 2712 | | |
| |||

0 commit comments