- Notifications
You must be signed in to change notification settings - Fork28
Commit9915de6
committed
Fix race conditions in replication slot operations
It is relatively easy to get a replication slot to look as still activewhile one process is in the process of getting rid of it; when someother process tries to "acquire" the slot, it would fail with an errormessage of "replication slot XYZ is active for PID N".The error message in itself is fine, except that when the intention isto drop the slot, it is unhelpful: the useful behavior would be to waituntil the slot is no longer acquired, so that the drop can proceed. Toimplement this, we use a condition variable so that slot acquisition canbe told to wait on that condition variable if the slot is alreadyacquired, and we make any change in active_pid broadcast a signal on thecondition variable. Thus, as soon as the slot is released, the dropwill proceed properly.Reported by: Tom LaneDiscussion:https://postgr.es/m/11904.1499039688@sss.pgh.pa.usAuthors: Petr Jelínek, Álvaro Herrera1 parent4132dbe commit9915de6
File tree
5 files changed
+118
-56
lines changed- src
- backend/replication
- logical
- include/replication
5 files changed
+118
-56
lines changedLines changed: 1 addition & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
244 | 244 |
| |
245 | 245 |
| |
246 | 246 |
| |
247 |
| - | |
| 247 | + | |
248 | 248 |
| |
249 | 249 |
| |
250 | 250 |
| |
|
Lines changed: 91 additions & 31 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
157 | 157 |
| |
158 | 158 |
| |
159 | 159 |
| |
| 160 | + | |
160 | 161 |
| |
161 | 162 |
| |
162 | 163 |
| |
| |||
313 | 314 |
| |
314 | 315 |
| |
315 | 316 |
| |
316 |
| - | |
| 317 | + | |
317 | 318 |
| |
318 | 319 |
| |
319 | 320 |
| |
| 321 | + | |
| 322 | + | |
| 323 | + | |
320 | 324 |
| |
321 | 325 |
| |
322 | 326 |
| |
323 | 327 |
| |
324 | 328 |
| |
325 | 329 |
| |
326 |
| - | |
| 330 | + | |
327 | 331 |
| |
328 |
| - | |
| 332 | + | |
| 333 | + | |
329 | 334 |
| |
330 |
| - | |
331 | 335 |
| |
| 336 | + | |
332 | 337 |
| |
333 | 338 |
| |
334 |
| - | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
335 | 346 |
| |
336 | 347 |
| |
337 | 348 |
| |
338 | 349 |
| |
339 | 350 |
| |
340 | 351 |
| |
341 | 352 |
| |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
342 | 361 |
| |
| 362 | + | |
343 | 363 |
| |
344 | 364 |
| |
345 | 365 |
| |
| 366 | + | |
346 | 367 |
| |
347 | 368 |
| |
| 369 | + | |
348 | 370 |
| |
349 | 371 |
| |
350 | 372 |
| |
351 | 373 |
| |
352 | 374 |
| |
353 |
| - | |
| 375 | + | |
354 | 376 |
| |
355 | 377 |
| |
356 | 378 |
| |
357 | 379 |
| |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
358 | 385 |
| |
359 |
| - | |
360 |
| - | |
361 |
| - | |
362 |
| - | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
363 | 403 |
| |
364 | 404 |
| |
365 | 405 |
| |
366 | 406 |
| |
367 | 407 |
| |
368 | 408 |
| |
369 |
| - | |
370 |
| - | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
371 | 413 |
| |
372 | 414 |
| |
373 | 415 |
| |
| |||
385 | 427 |
| |
386 | 428 |
| |
387 | 429 |
| |
388 |
| - | |
389 |
| - | |
390 |
| - | |
391 |
| - | |
392 |
| - | |
393 |
| - | |
394 |
| - | |
395 |
| - | |
396 |
| - | |
397 |
| - | |
398 |
| - | |
399 | 430 |
| |
400 | 431 |
| |
401 | 432 |
| |
| |||
412 | 443 |
| |
413 | 444 |
| |
414 | 445 |
| |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
415 | 458 |
| |
416 | 459 |
| |
417 | 460 |
| |
| |||
430 | 473 |
| |
431 | 474 |
| |
432 | 475 |
| |
433 |
| - | |
434 |
| - | |
435 |
| - | |
436 |
| - | |
| 476 | + | |
| 477 | + | |
437 | 478 |
| |
438 | 479 |
| |
439 | 480 |
| |
440 | 481 |
| |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
441 | 486 |
| |
442 | 487 |
| |
443 |
| - | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
444 | 491 |
| |
445 | 492 |
| |
| 493 | + | |
| 494 | + | |
| 495 | + | |
446 | 496 |
| |
| 497 | + | |
| 498 | + | |
447 | 499 |
| |
| 500 | + | |
| 501 | + | |
448 | 502 |
| |
449 | 503 |
| |
450 | 504 |
| |
451 | 505 |
| |
452 | 506 |
| |
453 | 507 |
| |
454 |
| - | |
| 508 | + | |
455 | 509 |
| |
456 | 510 |
| |
457 | 511 |
| |
458 |
| - | |
| 512 | + | |
459 | 513 |
| |
460 | 514 |
| |
461 | 515 |
| |
| |||
527 | 581 |
| |
528 | 582 |
| |
529 | 583 |
| |
| 584 | + | |
| 585 | + | |
| 586 | + | |
530 | 587 |
| |
531 | 588 |
| |
532 | 589 |
| |
| |||
535 | 592 |
| |
536 | 593 |
| |
537 | 594 |
| |
538 |
| - | |
| 595 | + | |
539 | 596 |
| |
540 | 597 |
| |
541 | 598 |
| |
| 599 | + | |
| 600 | + | |
542 | 601 |
| |
543 | 602 |
| |
544 | 603 |
| |
545 | 604 |
| |
546 | 605 |
| |
| 606 | + | |
547 | 607 |
| |
548 | 608 |
| |
549 | 609 |
| |
|
Lines changed: 16 additions & 18 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
171 | 171 |
| |
172 | 172 |
| |
173 | 173 |
| |
174 |
| - | |
| 174 | + | |
175 | 175 |
| |
176 | 176 |
| |
177 | 177 |
| |
| |||
221 | 221 |
| |
222 | 222 |
| |
223 | 223 |
| |
| 224 | + | |
224 | 225 |
| |
225 | 226 |
| |
226 | 227 |
| |
| |||
238 | 239 |
| |
239 | 240 |
| |
240 | 241 |
| |
241 |
| - | |
242 | 242 |
| |
243 |
| - | |
244 |
| - | |
245 | 243 |
| |
246 |
| - | |
247 |
| - | |
248 |
| - | |
249 |
| - | |
250 |
| - | |
251 |
| - | |
252 |
| - | |
253 |
| - | |
254 |
| - | |
255 |
| - | |
256 |
| - | |
257 |
| - | |
258 |
| - | |
259 |
| - | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
260 | 257 |
| |
261 | 258 |
| |
262 | 259 |
| |
| |||
309 | 306 |
| |
310 | 307 |
| |
311 | 308 |
| |
| 309 | + | |
312 | 310 |
| |
313 | 311 |
| |
314 | 312 |
| |
|
Lines changed: 3 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
541 | 541 |
| |
542 | 542 |
| |
543 | 543 |
| |
544 |
| - | |
| 544 | + | |
545 | 545 |
| |
546 | 546 |
| |
547 | 547 |
| |
| |||
1028 | 1028 |
| |
1029 | 1029 |
| |
1030 | 1030 |
| |
1031 |
| - | |
| 1031 | + | |
1032 | 1032 |
| |
1033 | 1033 |
| |
1034 | 1034 |
| |
| |||
1046 | 1046 |
| |
1047 | 1047 |
| |
1048 | 1048 |
| |
1049 |
| - | |
| 1049 | + | |
1050 | 1050 |
| |
1051 | 1051 |
| |
1052 | 1052 |
| |
|
Lines changed: 7 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
12 | 12 |
| |
13 | 13 |
| |
14 | 14 |
| |
| 15 | + | |
15 | 16 |
| |
16 | 17 |
| |
17 | 18 |
| |
18 | 19 |
| |
19 | 20 |
| |
20 | 21 |
| |
21 | 22 |
| |
22 |
| - | |
| 23 | + | |
23 | 24 |
| |
24 | 25 |
| |
25 | 26 |
| |
| |||
117 | 118 |
| |
118 | 119 |
| |
119 | 120 |
| |
| 121 | + | |
| 122 | + | |
| 123 | + | |
120 | 124 |
| |
121 | 125 |
| |
122 | 126 |
| |
| |||
162 | 166 |
| |
163 | 167 |
| |
164 | 168 |
| |
165 |
| - | |
| 169 | + | |
166 | 170 |
| |
167 |
| - | |
| 171 | + | |
168 | 172 |
| |
169 | 173 |
| |
170 | 174 |
| |
|
0 commit comments
Comments
(0)