mirror of https://github.com/postgres/postgres
Try to fix pg_upgrade test on Windows, again.
Further to commit 54e72b66e
, if rmtree() fails while cleaning up in
pg_upgrade, try again. This gives our Windows unlink() wrapper a chance
to reach its wait-for-the-other-process-to-go-away logic, if the first
go around initiated the unlink of a file that a concurrently exiting
program still has open.
Discussion: https://postgr.es/m/CA%2BhUKGKCVy2%3Do%3Dd8c2Va6a_3Rpf_KkhUitkWCZ3hzuO2VwLMXA%40mail.gmail.com
This commit is contained in:
parent
758f44bc3a
commit
c289117505
|
@ -68,7 +68,12 @@ cleanup_output_dirs(void)
|
|||
if (log_opts.retain)
|
||||
return;
|
||||
|
||||
(void) rmtree(log_opts.basedir, true);
|
||||
/*
|
||||
* Try twice. The second time might wait for files to finish being
|
||||
* unlinked, on Windows.
|
||||
*/
|
||||
if (!rmtree(log_opts.basedir, true))
|
||||
rmtree(log_opts.basedir, true);
|
||||
|
||||
/* Remove pg_upgrade_output.d only if empty */
|
||||
switch (pg_check_dir(log_opts.rootdir))
|
||||
|
@ -80,7 +85,13 @@ cleanup_output_dirs(void)
|
|||
|
||||
case 1: /* exists and empty */
|
||||
case 2: /* exists and contains only dot files */
|
||||
(void) rmtree(log_opts.rootdir, true);
|
||||
|
||||
/*
|
||||
* Try twice. The second time might wait for files to finish
|
||||
* being unlinked, on Windows.
|
||||
*/
|
||||
if (!rmtree(log_opts.rootdir, true))
|
||||
rmtree(log_opts.rootdir, true);
|
||||
break;
|
||||
|
||||
case 4: /* exists */
|
||||
|
|
Loading…
Reference in New Issue