Commit 0a097e2
committed
backend: address PR review comments and add defrag tests
Address review feedback from Thomas, Filip, and Ben:
- Rename defragSetupSnapshot to defragPrepare; 'snapshot' is
overloaded in etcd (raft snapshots)
- Drop FillPercent=0.9 from replayJournal; no meaningful effect
on the small number of journal replay ops in a freshly compacted db
- Error on missing bucket in replayJournal delete path, consistent
with put path
- Panic on append-after-close instead of silently dropping ops;
this path is unreachable in normal operation
- Combine close() and drain() into closeAndDrain() to eliminate
the two-step state machine
- Use atomic.Pointer[defragJournal] to fix data race between
LockInsideApply (reads before mutex) and defrag lifecycle
(writes under mutex); use Swap(nil) for atomic load-and-clear
- Load defragJournal from batchTx in cancel/replay instead of
passing as parameter; defer defragCancelJournal for cleanup
- Drop bytes.Clone from journal appends; callers provide Go heap
slices same as txWriteBuffer which doesn't clone
- Strip copyright headers from new files
- Consistent os.Remove error handling across all defrag error paths
- Add defragBeforeReplay gofail failpoint between copy and replay
- Add defragCopyFailHook for test injection of copy failures
Tests:
- E2E: TestNonBlockingDefragNoSpace and TestNonBlockingDefragSuccess
- Unit: TestBackendDefragConcurrentLockInsideApply (race detector),
TestBackendDefragCopyFailurePreservesData (no data loss on
copy failure), TestDefragJournalAppendAfterClosePanics1 parent 828d711 commit 0a097e2
9 files changed
Lines changed: 364 additions & 132 deletions
File tree
- server/storage/backend
- tests
- e2e
- robustness/failpoint
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
135 | 135 | | |
136 | 136 | | |
137 | 137 | | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
138 | 142 | | |
139 | 143 | | |
140 | 144 | | |
| |||
570 | 574 | | |
571 | 575 | | |
572 | 576 | | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
573 | 581 | | |
574 | 582 | | |
575 | 583 | | |
| |||
586 | 594 | | |
587 | 595 | | |
588 | 596 | | |
589 | | - | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
590 | 600 | | |
591 | 601 | | |
592 | 602 | | |
| |||
596 | 606 | | |
597 | 607 | | |
598 | 608 | | |
599 | | - | |
| 609 | + | |
600 | 610 | | |
601 | 611 | | |
602 | 612 | | |
| |||
650 | 660 | | |
651 | 661 | | |
652 | 662 | | |
653 | | - | |
| 663 | + | |
654 | 664 | | |
655 | 665 | | |
656 | | - | |
| 666 | + | |
| 667 | + | |
| 668 | + | |
657 | 669 | | |
658 | 670 | | |
| 671 | + | |
659 | 672 | | |
660 | 673 | | |
661 | 674 | | |
662 | 675 | | |
663 | | - | |
664 | | - | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
665 | 682 | | |
666 | 683 | | |
667 | | - | |
668 | 684 | | |
669 | | - | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
670 | 688 | | |
671 | 689 | | |
672 | 690 | | |
| 691 | + | |
673 | 692 | | |
674 | | - | |
| 693 | + | |
675 | 694 | | |
676 | 695 | | |
677 | 696 | | |
| |||
682 | 701 | | |
683 | 702 | | |
684 | 703 | | |
685 | | - | |
686 | | - | |
687 | | - | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
688 | 708 | | |
689 | 709 | | |
690 | 710 | | |
691 | 711 | | |
692 | 712 | | |
693 | 713 | | |
694 | | - | |
| 714 | + | |
695 | 715 | | |
696 | 716 | | |
697 | | - | |
| 717 | + | |
698 | 718 | | |
699 | 719 | | |
700 | | - | |
701 | | - | |
702 | | - | |
| 720 | + | |
| 721 | + | |
703 | 722 | | |
704 | 723 | | |
705 | 724 | | |
706 | | - | |
707 | | - | |
| 725 | + | |
| 726 | + | |
| 727 | + | |
708 | 728 | | |
709 | 729 | | |
710 | | - | |
711 | | - | |
| 730 | + | |
| 731 | + | |
| 732 | + | |
712 | 733 | | |
713 | 734 | | |
714 | 735 | | |
715 | 736 | | |
716 | 737 | | |
717 | 738 | | |
718 | | - | |
| 739 | + | |
719 | 740 | | |
720 | 741 | | |
721 | 742 | | |
722 | | - | |
723 | | - | |
724 | | - | |
| 743 | + | |
| 744 | + | |
725 | 745 | | |
726 | 746 | | |
727 | 747 | | |
728 | 748 | | |
729 | 749 | | |
730 | 750 | | |
731 | 751 | | |
732 | | - | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
733 | 755 | | |
734 | 756 | | |
735 | 757 | | |
| |||
878 | 900 | | |
879 | 901 | | |
880 | 902 | | |
881 | | - | |
882 | | - | |
883 | | - | |
884 | 903 | | |
885 | 904 | | |
886 | 905 | | |
887 | 906 | | |
888 | 907 | | |
889 | 908 | | |
890 | | - | |
| 909 | + | |
891 | 910 | | |
892 | 911 | | |
893 | 912 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1554 | 1554 | | |
1555 | 1555 | | |
1556 | 1556 | | |
| 1557 | + | |
| 1558 | + | |
| 1559 | + | |
| 1560 | + | |
| 1561 | + | |
| 1562 | + | |
| 1563 | + | |
| 1564 | + | |
| 1565 | + | |
| 1566 | + | |
| 1567 | + | |
| 1568 | + | |
| 1569 | + | |
| 1570 | + | |
| 1571 | + | |
| 1572 | + | |
| 1573 | + | |
| 1574 | + | |
| 1575 | + | |
| 1576 | + | |
| 1577 | + | |
| 1578 | + | |
| 1579 | + | |
| 1580 | + | |
| 1581 | + | |
| 1582 | + | |
| 1583 | + | |
| 1584 | + | |
| 1585 | + | |
| 1586 | + | |
| 1587 | + | |
| 1588 | + | |
| 1589 | + | |
| 1590 | + | |
| 1591 | + | |
| 1592 | + | |
| 1593 | + | |
| 1594 | + | |
| 1595 | + | |
| 1596 | + | |
| 1597 | + | |
| 1598 | + | |
| 1599 | + | |
| 1600 | + | |
| 1601 | + | |
| 1602 | + | |
| 1603 | + | |
| 1604 | + | |
| 1605 | + | |
| 1606 | + | |
| 1607 | + | |
| 1608 | + | |
| 1609 | + | |
| 1610 | + | |
| 1611 | + | |
| 1612 | + | |
| 1613 | + | |
| 1614 | + | |
| 1615 | + | |
| 1616 | + | |
| 1617 | + | |
| 1618 | + | |
| 1619 | + | |
| 1620 | + | |
| 1621 | + | |
| 1622 | + | |
| 1623 | + | |
| 1624 | + | |
| 1625 | + | |
| 1626 | + | |
| 1627 | + | |
| 1628 | + | |
| 1629 | + | |
| 1630 | + | |
| 1631 | + | |
| 1632 | + | |
| 1633 | + | |
| 1634 | + | |
| 1635 | + | |
| 1636 | + | |
| 1637 | + | |
| 1638 | + | |
| 1639 | + | |
| 1640 | + | |
| 1641 | + | |
| 1642 | + | |
| 1643 | + | |
| 1644 | + | |
| 1645 | + | |
| 1646 | + | |
| 1647 | + | |
| 1648 | + | |
| 1649 | + | |
| 1650 | + | |
| 1651 | + | |
| 1652 | + | |
| 1653 | + | |
| 1654 | + | |
| 1655 | + | |
| 1656 | + | |
| 1657 | + | |
| 1658 | + | |
| 1659 | + | |
| 1660 | + | |
| 1661 | + | |
| 1662 | + | |
| 1663 | + | |
| 1664 | + | |
| 1665 | + | |
| 1666 | + | |
| 1667 | + | |
| 1668 | + | |
| 1669 | + | |
| 1670 | + | |
| 1671 | + | |
| 1672 | + | |
| 1673 | + | |
| 1674 | + | |
| 1675 | + | |
| 1676 | + | |
| 1677 | + | |
| 1678 | + | |
| 1679 | + | |
| 1680 | + | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
| 1687 | + | |
| 1688 | + | |
| 1689 | + | |
| 1690 | + | |
| 1691 | + | |
| 1692 | + | |
| 1693 | + | |
| 1694 | + | |
| 1695 | + | |
| 1696 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
291 | 291 | | |
292 | 292 | | |
293 | 293 | | |
294 | | - | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
295 | 299 | | |
296 | 300 | | |
297 | 301 | | |
| |||
307 | 311 | | |
308 | 312 | | |
309 | 313 | | |
310 | | - | |
| 314 | + | |
311 | 315 | | |
312 | 316 | | |
313 | 317 | | |
| |||
394 | 398 | | |
395 | 399 | | |
396 | 400 | | |
397 | | - | |
| 401 | + | |
398 | 402 | | |
399 | 403 | | |
400 | 404 | | |
401 | 405 | | |
402 | 406 | | |
403 | 407 | | |
404 | | - | |
| 408 | + | |
405 | 409 | | |
406 | 410 | | |
407 | 411 | | |
408 | 412 | | |
409 | 413 | | |
410 | 414 | | |
411 | 415 | | |
412 | | - | |
| 416 | + | |
413 | 417 | | |
414 | 418 | | |
415 | 419 | | |
416 | 420 | | |
417 | 421 | | |
418 | 422 | | |
419 | 423 | | |
420 | | - | |
| 424 | + | |
421 | 425 | | |
422 | 426 | | |
423 | 427 | | |
424 | 428 | | |
425 | 429 | | |
426 | 430 | | |
427 | 431 | | |
428 | | - | |
| 432 | + | |
429 | 433 | | |
430 | 434 | | |
431 | 435 | | |
| |||
0 commit comments