Commit 0b1f1d4
committed
gopls/internal/lsp/cache: (re-)ensure clean shutdown
CL 549415 (rightly) changed the logic for View shutdown to not await all
work on the Snapshot, as this leads to potential deadlocks: we should
never await work while holding a mutex. However, we still need to await
all work when shutting down the Session, otherwise we end up with
failures like golang/go#64971 ("directory not empty"). Therefore, we
need a new synchronization mechanism.
Introduce a sync.WaitGroup on the Session to allow awaiting the
destruction of all Snapshots created on behalf of the Session. In order
to support this, View invalidation becomes a method on the Session,
rather than the View, and requires the Session.viewMu.
Also make a few unrelated cosmetic improvements.
Fixes golang/go#64971
Change-Id: I43fc0b5ff8a7762887fbfd64df7596e524383279
Reviewed-on: https://go-review.googlesource.com/c/tools/+/554996
LUCI-TryBot-Result: Go LUCI <[email protected]>
Reviewed-by: Alan Donovan <[email protected]>1 parent 706525d commit 0b1f1d4
File tree
4 files changed
+58
-40
lines changed- gopls/internal
- lsp/cache
- server
4 files changed
+58
-40
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
45 | 50 | | |
46 | 51 | | |
47 | 52 | | |
| |||
68 | 73 | | |
69 | 74 | | |
70 | 75 | | |
| 76 | + | |
71 | 77 | | |
72 | 78 | | |
73 | 79 | | |
| |||
183 | 189 | | |
184 | 190 | | |
185 | 191 | | |
| 192 | + | |
186 | 193 | | |
187 | 194 | | |
188 | 195 | | |
189 | 196 | | |
190 | 197 | | |
191 | 198 | | |
| 199 | + | |
192 | 200 | | |
193 | 201 | | |
194 | 202 | | |
| |||
217 | 225 | | |
218 | 226 | | |
219 | 227 | | |
220 | | - | |
| 228 | + | |
221 | 229 | | |
222 | 230 | | |
223 | 231 | | |
| |||
822 | 830 | | |
823 | 831 | | |
824 | 832 | | |
825 | | - | |
| 833 | + | |
826 | 834 | | |
827 | 835 | | |
828 | 836 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
85 | 85 | | |
86 | 86 | | |
87 | 87 | | |
| 88 | + | |
88 | 89 | | |
89 | | - | |
90 | | - | |
| 90 | + | |
| 91 | + | |
91 | 92 | | |
92 | 93 | | |
93 | 94 | | |
| 95 | + | |
94 | 96 | | |
95 | 97 | | |
96 | 98 | | |
| |||
248 | 250 | | |
249 | 251 | | |
250 | 252 | | |
| 253 | + | |
251 | 254 | | |
252 | 255 | | |
253 | 256 | | |
| |||
1663 | 1666 | | |
1664 | 1667 | | |
1665 | 1668 | | |
1666 | | - | |
| 1669 | + | |
1667 | 1670 | | |
1668 | | - | |
1669 | | - | |
| 1671 | + | |
| 1672 | + | |
1670 | 1673 | | |
1671 | 1674 | | |
1672 | 1675 | | |
| |||
1680 | 1683 | | |
1681 | 1684 | | |
1682 | 1685 | | |
| 1686 | + | |
1683 | 1687 | | |
1684 | 1688 | | |
1685 | 1689 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| 32 | + | |
32 | 33 | | |
33 | 34 | | |
34 | 35 | | |
| |||
100 | 101 | | |
101 | 102 | | |
102 | 103 | | |
103 | | - | |
| 104 | + | |
104 | 105 | | |
105 | | - | |
| 106 | + | |
106 | 107 | | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | 108 | | |
116 | | - | |
117 | | - | |
| 109 | + | |
118 | 110 | | |
119 | 111 | | |
120 | 112 | | |
| |||
513 | 505 | | |
514 | 506 | | |
515 | 507 | | |
516 | | - | |
517 | | - | |
| 508 | + | |
518 | 509 | | |
519 | 510 | | |
520 | | - | |
| 511 | + | |
521 | 512 | | |
522 | 513 | | |
523 | 514 | | |
| |||
526 | 517 | | |
527 | 518 | | |
528 | 519 | | |
529 | | - | |
530 | | - | |
531 | 520 | | |
532 | 521 | | |
533 | 522 | | |
| |||
767 | 756 | | |
768 | 757 | | |
769 | 758 | | |
770 | | - | |
| 759 | + | |
771 | 760 | | |
772 | 761 | | |
773 | 762 | | |
774 | 763 | | |
775 | 764 | | |
776 | 765 | | |
777 | | - | |
778 | | - | |
779 | | - | |
| 766 | + | |
| 767 | + | |
| 768 | + | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
| 780 | + | |
| 781 | + | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
| 785 | + | |
780 | 786 | | |
781 | 787 | | |
782 | 788 | | |
| |||
799 | 805 | | |
800 | 806 | | |
801 | 807 | | |
802 | | - | |
803 | 808 | | |
804 | | - | |
| 809 | + | |
| 810 | + | |
805 | 811 | | |
806 | 812 | | |
807 | 813 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
285 | 285 | | |
286 | 286 | | |
287 | 287 | | |
288 | | - | |
| 288 | + | |
289 | 289 | | |
290 | 290 | | |
291 | | - | |
292 | 291 | | |
293 | 292 | | |
294 | 293 | | |
| |||
306 | 305 | | |
307 | 306 | | |
308 | 307 | | |
309 | | - | |
| 308 | + | |
310 | 309 | | |
311 | 310 | | |
312 | 311 | | |
313 | 312 | | |
314 | 313 | | |
315 | 314 | | |
316 | 315 | | |
317 | | - | |
318 | 316 | | |
319 | 317 | | |
320 | 318 | | |
| |||
443 | 441 | | |
444 | 442 | | |
445 | 443 | | |
446 | | - | |
| 444 | + | |
447 | 445 | | |
448 | 446 | | |
449 | 447 | | |
| |||
476 | 474 | | |
477 | 475 | | |
478 | 476 | | |
479 | | - | |
| 477 | + | |
480 | 478 | | |
481 | 479 | | |
482 | 480 | | |
| |||
796 | 794 | | |
797 | 795 | | |
798 | 796 | | |
799 | | - | |
| 797 | + | |
800 | 798 | | |
801 | 799 | | |
802 | 800 | | |
803 | 801 | | |
804 | | - | |
805 | 802 | | |
806 | 803 | | |
807 | 804 | | |
| |||
995 | 992 | | |
996 | 993 | | |
997 | 994 | | |
998 | | - | |
| 995 | + | |
999 | 996 | | |
1000 | 997 | | |
| 998 | + | |
| 999 | + | |
| 1000 | + | |
1001 | 1001 | | |
1002 | 1002 | | |
1003 | 1003 | | |
| |||
1292 | 1292 | | |
1293 | 1293 | | |
1294 | 1294 | | |
1295 | | - | |
| 1295 | + | |
1296 | 1296 | | |
1297 | 1297 | | |
1298 | 1298 | | |
| |||
0 commit comments