Обсуждение: lib problems

Поиск
Список
Период
Сортировка

lib problems

От
"Andrew Dunstan"
Дата:
 
OK, I have a C version of initdb that apparently works fine on Unix, and is only missing signal handling. (If anyone is curious and/or adventurous I can email you a copy).
 
When I compile on W32/Mingw I get this:
 
$ make
gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -DPGBINDIR=\"/usr/local/pgsql/bin\" -DPGDATADIR=\"/usr/local/pgsql/share\" -L../../../src/port   initdb.o -lpgport -o initdb
../../../src/port/libpgport.a(dirmod.o)(.text+0xe1):dirmod.c: undefined reference to `errstart'
../../../src/port/libpgport.a(dirmod.o)(.text+0xef):dirmod.c: undefined reference to `elog_finish'
../../../src/port/libpgport.a(dirmod.o)(.text+0x11a):dirmod.c: undefined reference to `errstart'
../../../src/port/libpgport.a(dirmod.o)(.text+0x128):dirmod.c: undefined reference to `elog_finish'
../../../src/port/libpgport.a(dirmod.o)(.text+0x1df):dirmod.c: undefined reference to `errstart'
../../../src/port/libpgport.a(dirmod.o)(.text+0x1ef):dirmod.c: undefined reference to `elog_finish'
../../../src/port/libpgport.a(dirmod.o)(.text+0x21a):dirmod.c: undefined reference to `errstart'
../../../src/port/libpgport.a(dirmod.o)(.text+0x22a):dirmod.c: undefined reference to `elog_finish'
make: *** [initdb] Error 1
The strange thing is I didn't get that this morning, but I assume it's clearly because I added some unlink calls.
 
Anyone have clues about how to fix this? Compile a copy of dirmod.c with FRONTEND defined, maybe? Or just remove the logging statements from pgunlink altogether - unlink should really be silent.
 
BTW, if the W32 timing problems that apply to unlink() also apply to rmdir(), we'll need a replacement for that too.
 
thanks
 
andrew

Re: lib problems

От
"Andrew Dunstan"
Дата:
 
For now I have got around this with the following code:
 
#ifdef WIN32
 
#ifdef unlink
#undef unlink
#endif
 
static int
init_unlink(const char *path)
{
 while (unlink(path))
 {
  if (errno != EACCES)
   return -1;
  Sleep(100);            /* ms */
 }
 return 0;
}
 
#define unlink(x) init_unlink((x))
 
#endif
 
cheers
 
andrew
 
----- Original Message -----
Sent: Thursday, October 02, 2003 10:59 PM
Subject: [pgsql-hackers-win32] lib problems

 
OK, I have a C version of initdb that apparently works fine on Unix, and is only missing signal handling. (If anyone is curious and/or adventurous I can email you a copy).
 
When I compile on W32/Mingw I get this:
 
$ make
gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -DPGBINDIR=\"/usr/local/pgsql/bin\" -DPGDATADIR=\"/usr/local/pgsql/share\" -L../../../src/port   initdb.o -lpgport -o initdb
../../../src/port/libpgport.a(dirmod.o)(.text+0xe1):dirmod.c: undefined reference to `errstart'
../../../src/port/libpgport.a(dirmod.o)(.text+0xef):dirmod.c: undefined reference to `elog_finish'
../../../src/port/libpgport.a(dirmod.o)(.text+0x11a):dirmod.c: undefined reference to `errstart'
../../../src/port/libpgport.a(dirmod.o)(.text+0x128):dirmod.c: undefined reference to `elog_finish'
../../../src/port/libpgport.a(dirmod.o)(.text+0x1df):dirmod.c: undefined reference to `errstart'
../../../src/port/libpgport.a(dirmod.o)(.text+0x1ef):dirmod.c: undefined reference to `elog_finish'
../../../src/port/libpgport.a(dirmod.o)(.text+0x21a):dirmod.c: undefined reference to `errstart'
../../../src/port/libpgport.a(dirmod.o)(.text+0x22a):dirmod.c: undefined reference to `elog_finish'
make: *** [initdb] Error 1
The strange thing is I didn't get that this morning, but I assume it's clearly because I added some unlink calls.
 
Anyone have clues about how to fix this? Compile a copy of dirmod.c with FRONTEND defined, maybe? Or just remove the logging statements from pgunlink altogether - unlink should really be silent.
 
BTW, if the W32 timing problems that apply to unlink() also apply to rmdir(), we'll need a replacement for that too.
 
thanks
 
andrew

Re: lib problems

От
Bruce Momjian
Дата:
Andrew Dunstan wrote:
>
> OK, I have a C version of initdb that apparently works fine on
> Unix, and is only missing signal handling. (If anyone is curious
> and/or adventurous I can email you a copy).
>
> When I compile on W32/Mingw I get this:
>
> $ make gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations
> -DPGBINDIR=\"/usr/local/pgsql/bin\"
> -DPGDATADIR=\"/usr/local/pgsql/share\" -L../../../src/port
> initdb.o -lpgport -o initdb
> ../../../src/port/libpgport.a(dirmod.o)(.text+0xe1):dirmod.c: undefined reference to `errstart'
> ../../../src/port/libpgport.a(dirmod.o)(.text+0xef):dirmod.c: undefined reference to `elog_finish'
> ../../../src/port/libpgport.a(dirmod.o)(.text+0x11a):dirmod.c: undefined reference to `errstart'
> ../../../src/port/libpgport.a(dirmod.o)(.text+0x128):dirmod.c: undefined reference to `elog_finish'
> ../../../src/port/libpgport.a(dirmod.o)(.text+0x1df):dirmod.c: undefined reference to `errstart'
> ../../../src/port/libpgport.a(dirmod.o)(.text+0x1ef):dirmod.c: undefined reference to `elog_finish'
> ../../../src/port/libpgport.a(dirmod.o)(.text+0x21a):dirmod.c: undefined reference to `errstart'
> ../../../src/port/libpgport.a(dirmod.o)(.text+0x22a):dirmod.c: undefined reference to `elog_finish'
> make: *** [initdb] Error 1
>
> The strange thing is I didn't get that this morning, but I assume
> it's clearly because I added some unlink calls.
>
> Anyone have clues about how to fix this? Compile a copy of
> dirmod.c with FRONTEND defined, maybe? Or just remove the logging
> statements from pgunlink altogether - unlink should really be
> silent.

You should define FRONTEND.  That is the proper way to handle those
function calls becaues they don't have to be atomic for clients.

> BTW, if the W32 timing problems that apply to unlink() also
> apply to rmdir(), we'll need a replacement for that too.

No, that one should be fine.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: lib problems

От
Bruce Momjian
Дата:
Again, -DFRONTEND is the solution.  libpq or psql use that already.

---------------------------------------------------------------------------

Andrew Dunstan wrote:
>
> For now I have got around this with the following code:
>
> #ifdef WIN32
>
> #ifdef unlink
> #undef unlink
> #endif
>
> static int
> init_unlink(const char *path)
> {
>  while (unlink(path))
>  {
>   if (errno != EACCES)
>    return -1;
>   Sleep(100);            /* ms */
>  }
>  return 0;
> }
>
> #define unlink(x) init_unlink((x))
>
> #endif
>
> cheers
>
> andrew
>
>   ----- Original Message -----
>   From: Andrew Dunstan
>   To: PostgreSQL Win32 port list
>   Sent: Thursday, October 02, 2003 10:59 PM
>   Subject: [pgsql-hackers-win32] lib problems
>
>
>
>   OK, I have a C version of initdb that apparently works fine on Unix, and is only missing signal handling. (If
anyoneis curious and/or adventurous I can email you a copy). 
>
>   When I compile on W32/Mingw I get this:
>
>   $ make
>   gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -DPGBINDIR=\"/usr/local/pgsql/bin\"
-DPGDATADIR=\"/usr/local/pgsql/share\"-L../../../src/port   initdb.o -lpgport -o initdb 
>   ../../../src/port/libpgport.a(dirmod.o)(.text+0xe1):dirmod.c: undefined reference to `errstart'
>   ../../../src/port/libpgport.a(dirmod.o)(.text+0xef):dirmod.c: undefined reference to `elog_finish'
>   ../../../src/port/libpgport.a(dirmod.o)(.text+0x11a):dirmod.c: undefined reference to `errstart'
>   ../../../src/port/libpgport.a(dirmod.o)(.text+0x128):dirmod.c: undefined reference to `elog_finish'
>   ../../../src/port/libpgport.a(dirmod.o)(.text+0x1df):dirmod.c: undefined reference to `errstart'
>   ../../../src/port/libpgport.a(dirmod.o)(.text+0x1ef):dirmod.c: undefined reference to `elog_finish'
>   ../../../src/port/libpgport.a(dirmod.o)(.text+0x21a):dirmod.c: undefined reference to `errstart'
>   ../../../src/port/libpgport.a(dirmod.o)(.text+0x22a):dirmod.c: undefined reference to `elog_finish'
>   make: *** [initdb] Error 1
>
>   The strange thing is I didn't get that this morning, but I assume it's clearly because I added some unlink calls.
>
>   Anyone have clues about how to fix this? Compile a copy of dirmod.c with FRONTEND defined, maybe? Or just remove
thelogging statements from pgunlink altogether - unlink should really be silent. 
>
>   BTW, if the W32 timing problems that apply to unlink() also apply to rmdir(), we'll need a replacement for that
too.
>
>   thanks
>
>   andrew

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: lib problems

От
"Andrew Dunstan"
Дата:
If FRONTEND is defined port/dirmod.c prints to stderr, and if not it wants
to call elog(). I want something that fails silently and sets errno, just
like I would expect a "real" unlink to do.

At any rate, what I have below has not failed yet in my testing.

cheers

andrew


----- Original Message -----
From: "Bruce Momjian" <pgman@candle.pha.pa.us>
To: "Andrew Dunstan" <andrew@dunslane.net>
Cc: "PostgreSQL Win32 port list" <pgsql-hackers-win32@postgresql.org>
Sent: Thursday, October 09, 2003 8:32 PM
Subject: Re: [pgsql-hackers-win32] lib problems


>
> Again, -DFRONTEND is the solution.  libpq or psql use that already.
>
> --------------------------------------------------------------------------
-
>
> Andrew Dunstan wrote:
> >
> > For now I have got around this with the following code:
> >
> > #ifdef WIN32
> >
> > #ifdef unlink
> > #undef unlink
> > #endif
> >
> > static int
> > init_unlink(const char *path)
> > {
> >  while (unlink(path))
> >  {
> >   if (errno != EACCES)
> >    return -1;
> >   Sleep(100);            /* ms */
> >  }
> >  return 0;
> > }
> >
> > #define unlink(x) init_unlink((x))
> >
> > #endif
> >
> > cheers
> >
> > andrew
> >
> >   ----- Original Message -----
> >   From: Andrew Dunstan
> >   To: PostgreSQL Win32 port list
> >   Sent: Thursday, October 02, 2003 10:59 PM
> >   Subject: [pgsql-hackers-win32] lib problems
> >
> >
> >
> >   OK, I have a C version of initdb that apparently works fine on Unix,
and is only missing signal handling. (If anyone is curious and/or
adventurous I can email you a copy).
> >
> >   When I compile on W32/Mingw I get this:
> >
> >   $ make
> >


gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -DPGBINDIR=\"/usr/
local/pgsql/bin\" -DPGDATADIR=\"/usr/local/pgsql/share\" -L../../../src/port
initdb.o -lpgport -o initdb
> >   ../../../src/port/libpgport.a(dirmod.o)(.text+0xe1):dirmod.c:
undefined reference to `errstart'
> >   ../../../src/port/libpgport.a(dirmod.o)(.text+0xef):dirmod.c:
undefined reference to `elog_finish'
> >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x11a):dirmod.c:
undefined reference to `errstart'
> >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x128):dirmod.c:
undefined reference to `elog_finish'
> >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x1df):dirmod.c:
undefined reference to `errstart'
> >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x1ef):dirmod.c:
undefined reference to `elog_finish'
> >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x21a):dirmod.c:
undefined reference to `errstart'
> >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x22a):dirmod.c:
undefined reference to `elog_finish'
> >   make: *** [initdb] Error 1
> >
> >   The strange thing is I didn't get that this morning, but I assume it's
clearly because I added some unlink calls.
> >
> >   Anyone have clues about how to fix this? Compile a copy of dirmod.c
with FRONTEND defined, maybe? Or just remove the logging statements from
pgunlink altogether - unlink should really be silent.
> >
> >   BTW, if the W32 timing problems that apply to unlink() also apply to
rmdir(), we'll need a replacement for that too.
> >
> >   thanks
> >
> >   andrew
>
> --
>   Bruce Momjian                        |  http://candle.pha.pa.us
>   pgman@candle.pha.pa.us               |  (610) 359-1001
>   +  If your life is a hard drive,     |  13 Roberts Road
>   +  Christ can be your backup.        |  Newtown Square, Pennsylvania
19073


Re: lib problems

От
Bruce Momjian
Дата:
Andrew Dunstan wrote:
> If FRONTEND is defined port/dirmod.c prints to stderr, and if not it wants
> to call elog(). I want something that fails silently and sets errno, just
> like I would expect a "real" unlink to do.
>
> At any rate, what I have below has not failed yet in my testing.

Well maybe throwing a message after one second is extreme.  Should we
change it to 3 or 5 seconds?  Does that help?  I would like to see you
using our standard code, and I would like to throw a message after a few
seconds so folks know we are waiting for something.

---------------------------------------------------------------------------


>
> cheers
>
> andrew
>
>
> ----- Original Message -----
> From: "Bruce Momjian" <pgman@candle.pha.pa.us>
> To: "Andrew Dunstan" <andrew@dunslane.net>
> Cc: "PostgreSQL Win32 port list" <pgsql-hackers-win32@postgresql.org>
> Sent: Thursday, October 09, 2003 8:32 PM
> Subject: Re: [pgsql-hackers-win32] lib problems
>
>
> >
> > Again, -DFRONTEND is the solution.  libpq or psql use that already.
> >
> > --------------------------------------------------------------------------
> -
> >
> > Andrew Dunstan wrote:
> > >
> > > For now I have got around this with the following code:
> > >
> > > #ifdef WIN32
> > >
> > > #ifdef unlink
> > > #undef unlink
> > > #endif
> > >
> > > static int
> > > init_unlink(const char *path)
> > > {
> > >  while (unlink(path))
> > >  {
> > >   if (errno != EACCES)
> > >    return -1;
> > >   Sleep(100);            /* ms */
> > >  }
> > >  return 0;
> > > }
> > >
> > > #define unlink(x) init_unlink((x))
> > >
> > > #endif
> > >
> > > cheers
> > >
> > > andrew
> > >
> > >   ----- Original Message -----
> > >   From: Andrew Dunstan
> > >   To: PostgreSQL Win32 port list
> > >   Sent: Thursday, October 02, 2003 10:59 PM
> > >   Subject: [pgsql-hackers-win32] lib problems
> > >
> > >
> > >
> > >   OK, I have a C version of initdb that apparently works fine on Unix,
> and is only missing signal handling. (If anyone is curious and/or
> adventurous I can email you a copy).
> > >
> > >   When I compile on W32/Mingw I get this:
> > >
> > >   $ make
> > >
>
>
> gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -DPGBINDIR=\"/usr/
> local/pgsql/bin\" -DPGDATADIR=\"/usr/local/pgsql/share\" -L../../../src/port
> initdb.o -lpgport -o initdb
> > >   ../../../src/port/libpgport.a(dirmod.o)(.text+0xe1):dirmod.c:
> undefined reference to `errstart'
> > >   ../../../src/port/libpgport.a(dirmod.o)(.text+0xef):dirmod.c:
> undefined reference to `elog_finish'
> > >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x11a):dirmod.c:
> undefined reference to `errstart'
> > >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x128):dirmod.c:
> undefined reference to `elog_finish'
> > >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x1df):dirmod.c:
> undefined reference to `errstart'
> > >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x1ef):dirmod.c:
> undefined reference to `elog_finish'
> > >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x21a):dirmod.c:
> undefined reference to `errstart'
> > >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x22a):dirmod.c:
> undefined reference to `elog_finish'
> > >   make: *** [initdb] Error 1
> > >
> > >   The strange thing is I didn't get that this morning, but I assume it's
> clearly because I added some unlink calls.
> > >
> > >   Anyone have clues about how to fix this? Compile a copy of dirmod.c
> with FRONTEND defined, maybe? Or just remove the logging statements from
> pgunlink altogether - unlink should really be silent.
> > >
> > >   BTW, if the W32 timing problems that apply to unlink() also apply to
> rmdir(), we'll need a replacement for that too.
> > >
> > >   thanks
> > >
> > >   andrew
> >
> > --
> >   Bruce Momjian                        |  http://candle.pha.pa.us
> >   pgman@candle.pha.pa.us               |  (610) 359-1001
> >   +  If your life is a hard drive,     |  13 Roberts Road
> >   +  Christ can be your backup.        |  Newtown Square, Pennsylvania
> 19073
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 8: explain analyze is your friend
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Re: lib problems

От
"Andrew Dunstan"
Дата:
Actually, I think I can live with the message - it's only called if initdb
fails and is cleaning up.

1 second seems far too short - 3 seconds would be a minimum, I think.

Also, looping forever on this seems dangerous. Shouldn't we just give up
after some substantial number of tries to unlink the file? After all, on
Unix we expect unlink to return immediately on failure, although we don't
expect as many failures as this gets around :-)

cheers

andrew


----- Original Message -----
From: "Bruce Momjian" <pgman@candle.pha.pa.us>
To: "Andrew Dunstan" <andrew@dunslane.net>
Cc: "PostgreSQL Win32 port list" <pgsql-hackers-win32@postgresql.org>
Sent: Thursday, October 09, 2003 9:21 PM
Subject: Re: [pgsql-hackers-win32] lib problems


> Andrew Dunstan wrote:
> > If FRONTEND is defined port/dirmod.c prints to stderr, and if not it
wants
> > to call elog(). I want something that fails silently and sets errno,
just
> > like I would expect a "real" unlink to do.
> >
> > At any rate, what I have below has not failed yet in my testing.
>
> Well maybe throwing a message after one second is extreme.  Should we
> change it to 3 or 5 seconds?  Does that help?  I would like to see you
> using our standard code, and I would like to throw a message after a few
> seconds so folks know we are waiting for something.
>
> --------------------------------------------------------------------------
-
>
>
> >
> > cheers
> >
> > andrew
> >
> >
> > ----- Original Message -----
> > From: "Bruce Momjian" <pgman@candle.pha.pa.us>
> > To: "Andrew Dunstan" <andrew@dunslane.net>
> > Cc: "PostgreSQL Win32 port list" <pgsql-hackers-win32@postgresql.org>
> > Sent: Thursday, October 09, 2003 8:32 PM
> > Subject: Re: [pgsql-hackers-win32] lib problems
> >
> >
> > >
> > > Again, -DFRONTEND is the solution.  libpq or psql use that already.
> > >
> >
> --------------------------------------------------------------------------
> > -
> > >
> > > Andrew Dunstan wrote:
> > > >
> > > > For now I have got around this with the following code:
> > > >
> > > > #ifdef WIN32
> > > >
> > > > #ifdef unlink
> > > > #undef unlink
> > > > #endif
> > > >
> > > > static int
> > > > init_unlink(const char *path)
> > > > {
> > > >  while (unlink(path))
> > > >  {
> > > >   if (errno != EACCES)
> > > >    return -1;
> > > >   Sleep(100);            /* ms */
> > > >  }
> > > >  return 0;
> > > > }
> > > >
> > > > #define unlink(x) init_unlink((x))
> > > >
> > > > #endif
> > > >
> > > > cheers
> > > >
> > > > andrew
> > > >
> > > >   ----- Original Message -----
> > > >   From: Andrew Dunstan
> > > >   To: PostgreSQL Win32 port list
> > > >   Sent: Thursday, October 02, 2003 10:59 PM
> > > >   Subject: [pgsql-hackers-win32] lib problems
> > > >
> > > >
> > > >
> > > >   OK, I have a C version of initdb that apparently works fine on
Unix,
> > and is only missing signal handling. (If anyone is curious and/or
> > adventurous I can email you a copy).
> > > >
> > > >   When I compile on W32/Mingw I get this:
> > > >
> > > >   $ make
> > > >
> >
> >
> >
gcc -O2 -Wall -Wmissing-prototypes -Wmissing-declarations -DPGBINDIR=\"/usr/
> >
local/pgsql/bin\" -DPGDATADIR=\"/usr/local/pgsql/share\" -L../../../src/port
> > initdb.o -lpgport -o initdb
> > > >   ../../../src/port/libpgport.a(dirmod.o)(.text+0xe1):dirmod.c:
> > undefined reference to `errstart'
> > > >   ../../../src/port/libpgport.a(dirmod.o)(.text+0xef):dirmod.c:
> > undefined reference to `elog_finish'
> > > >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x11a):dirmod.c:
> > undefined reference to `errstart'
> > > >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x128):dirmod.c:
> > undefined reference to `elog_finish'
> > > >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x1df):dirmod.c:
> > undefined reference to `errstart'
> > > >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x1ef):dirmod.c:
> > undefined reference to `elog_finish'
> > > >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x21a):dirmod.c:
> > undefined reference to `errstart'
> > > >   ../../../src/port/libpgport.a(dirmod.o)(.text+0x22a):dirmod.c:
> > undefined reference to `elog_finish'
> > > >   make: *** [initdb] Error 1
> > > >
> > > >   The strange thing is I didn't get that this morning, but I assume
it's
> > clearly because I added some unlink calls.
> > > >
> > > >   Anyone have clues about how to fix this? Compile a copy of
dirmod.c
> > with FRONTEND defined, maybe? Or just remove the logging statements from
> > pgunlink altogether - unlink should really be silent.
> > > >
> > > >   BTW, if the W32 timing problems that apply to unlink() also apply
to
> > rmdir(), we'll need a replacement for that too.
> > > >
> > > >   thanks
> > > >
> > > >   andrew
> > >
> > > --
> > >   Bruce Momjian                        |  http://candle.pha.pa.us
> > >   pgman@candle.pha.pa.us               |  (610) 359-1001
> > >   +  If your life is a hard drive,     |  13 Roberts Road
> > >   +  Christ can be your backup.        |  Newtown Square, Pennsylvania
> > 19073
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 8: explain analyze is your friend
> >
>
> --
>   Bruce Momjian                        |  http://candle.pha.pa.us
>   pgman@candle.pha.pa.us               |  (610) 359-1001
>   +  If your life is a hard drive,     |  13 Roberts Road
>   +  Christ can be your backup.        |  Newtown Square, Pennsylvania
19073
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster


Re: lib problems

От
Bruce Momjian
Дата:
Andrew Dunstan wrote:
>
> Actually, I think I can live with the message - it's only called if initdb
> fails and is cleaning up.
>
> 1 second seems far too short - 3 seconds would be a minimum, I think.

OK, changed to 3 seconds in main CVS and Win32 branch.

> Also, looping forever on this seems dangerous. Shouldn't we just give up
> after some substantial number of tries to unlink the file? After all, on
> Unix we expect unlink to return immediately on failure, although we don't
> expect as many failures as this gets around :-)

Take a look at the unlink calls in the backend  --- they don't check a
return status, so we have to succeed.  We can change that, but right now
I am assuming it has to succeed.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073