On Mon, July 18, 2011 11:28 pm, Bruce Momjian wrote: > Has anyone successfully used pg_upgrade 9.0 with -l (log) on Windows? > > I received a private email bug report that pg_upgrade 9.0 does not work > with the -l/log option on Windows. The error is: > > Analyzing all rows in the new cluster > ""c:/MinGW/msys/1.0/home/edb/inst/bin/vacuumdb" --port 55445 --username > "edb" --all --analyze > >> c:/MinGW/msys/1.0/home/edb/auxschedule/test.log 2>&1" > The process cannot access the file because it is being used by another > process. > > What has me confused is this same code exists in pg_migrator, which was > fixed to work with -l on Windows by Hiroshi Saito with this change: > > /* > * On Win32, we can't send both server output and pg_ctl output > * to the same file because we get the error: > * "The process cannot access the file because it is being used by > another process." > * so we have to send pg_ctl output to 'nul'. > */ > sprintf(cmd, SYSTEMQUOTE "\"%s/pg_ctl\" -l \"%s\" -D \"%s\" " > "-o \"-p %d -c autovacuum=off -c > autovacuum_freeze_max_age=2000000000\" " > "start >> \"%s\" 2>&1" SYSTEMQUOTE, > bindir, ctx->logfile, datadir, port, > #ifndef WIN32 > ctx->logfile); > #else > DEVNULL); > #endif > > The fix was not to use the same log file and output file for pg_ctl. > But as you can see, the pg_ctl and vacuumdb code is unchanged: > > prep_status(ctx, "Analyzing all rows in the new cluster"); > exec_prog(ctx, true, > SYSTEMQUOTE "\"%s/vacuumdb\" --port %d --username \"%s\" " > "--all --analyze >> %s 2>&1" SYSTEMQUOTE, > ctx->new.bindir, ctx->new.port, ctx->user, ctx->logfile); > > I can't figure out of there is something odd about this user's setup or > if there is a bug in pg_upgrade with -l on Windows. >
The Windows file system seems to have some asynchronicity regarding what files are locked. For that reason, the buildfarm code has long had a couple of "sleep(5)" calls where it calls pg_ctl. You might benefit from doing something similar. cheers andrew. -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers