Re: [HACKERS] Testing the return value of fclose() in the backend

2003-06-07 Thread Bruce Momjian

Added to TODO:

* Add checks for fclose() failure


---

Gavin Sherry wrote:
 On Fri, 30 May 2003, Tom Lane wrote:
 
  Bruce Momjian [EMAIL PROTECTED] writes:
   Gavin Sherry wrote:
   There are various places in the backend, such as FreeFile(), where the
   return value of fclose() is not tested.
  
   We are not checking fclose, probably because fclose failures are quite
   rare.  Should we be concerned?
  
  Probably.  Closing a valid file descriptor in itself can't provoke any
  error that I can imagine, but fclose() also implies fflush() --- so if
  you have written data that hasn't yet been forced out of the stdio
  buffers then out-of-disk-space is certainly a foreseeable failure.
 
 Yes. I think I brought that up in my original email. Heap access/WAL 
 routines 'should not' suffer an fclose() problem because of
 fsync() calls. But this isn't necessarily the case for COPY.
 
  
  fclose failure on an open-for-read-only file seems like Assert()
  material; it can't happen.
 
 Right. If this generates an error, there are probably more serious issues.
 
 Gavin
 
 
 ---(end of broadcast)---
 TIP 5: Have you checked our extensive FAQ?
 
 http://www.postgresql.org/docs/faqs/FAQ.html
 

-- 
  Bruce Momjian|  http://candle.pha.pa.us
  [EMAIL PROTECTED]   |  (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 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html


Re: [HACKERS] Testing the return value of fclose() in the backend

2003-05-31 Thread Bruce Momjian
Gavin Sherry wrote:
 Hi all,
 
 There are various places in the backend, such as FreeFile(), where the
 return value of fclose() is not tested. Whilst we would often notice any
 problems with writing to data files due to testing on fsync(), it could
 affect things like COPY ... TO, CreateOptsFile() and more.
 
 Are we catching these somewhere else I'm not seeing?

We are not checking fclose, probably because fclose failures are quite
rare.  Should we be concerned?

-- 
  Bruce Momjian|  http://candle.pha.pa.us
  [EMAIL PROTECTED]   |  (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 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html


Re: [HACKERS] Testing the return value of fclose() in the backend

2003-05-31 Thread Gavin Sherry
On Fri, 30 May 2003, Bruce Momjian wrote:

 Gavin Sherry wrote:
  Hi all,
  
  There are various places in the backend, such as FreeFile(), where the
  return value of fclose() is not tested. Whilst we would often notice any
  problems with writing to data files due to testing on fsync(), it could
  affect things like COPY ... TO, CreateOptsFile() and more.
  
  Are we catching these somewhere else I'm not seeing?
 
 We are not checking fclose, probably because fclose failures are quite
 rare.  Should we be concerned?

fsync() errors are probably just as rare. The problem with long running
daemons not testing for fclose() failure is the problem caused by file
descriptor leakage. I recall that squid (another long running daemon) had
this problem due to the large number of file systems interactions they
undertake. The question is, of course, what to do in postgres if
fclose() returns an error? elog(WARNING)? Another fclose() call? Not sure
what squid did.

Gavin


---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster


Re: [HACKERS] Testing the return value of fclose() in the backend

2003-05-31 Thread Tom Lane
Bruce Momjian [EMAIL PROTECTED] writes:
 Gavin Sherry wrote:
 There are various places in the backend, such as FreeFile(), where the
 return value of fclose() is not tested.

 We are not checking fclose, probably because fclose failures are quite
 rare.  Should we be concerned?

Probably.  Closing a valid file descriptor in itself can't provoke any
error that I can imagine, but fclose() also implies fflush() --- so if
you have written data that hasn't yet been forced out of the stdio
buffers then out-of-disk-space is certainly a foreseeable failure.

fclose failure on an open-for-read-only file seems like Assert()
material; it can't happen.

regards, tom lane

---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
(send unregister YourEmailAddressHere to [EMAIL PROTECTED])


Re: [HACKERS] Testing the return value of fclose() in the backend

2003-05-31 Thread Gavin Sherry
On Fri, 30 May 2003, Tom Lane wrote:

 Bruce Momjian [EMAIL PROTECTED] writes:
  Gavin Sherry wrote:
  There are various places in the backend, such as FreeFile(), where the
  return value of fclose() is not tested.
 
  We are not checking fclose, probably because fclose failures are quite
  rare.  Should we be concerned?
 
 Probably.  Closing a valid file descriptor in itself can't provoke any
 error that I can imagine, but fclose() also implies fflush() --- so if
 you have written data that hasn't yet been forced out of the stdio
 buffers then out-of-disk-space is certainly a foreseeable failure.

Yes. I think I brought that up in my original email. Heap access/WAL 
routines 'should not' suffer an fclose() problem because of
fsync() calls. But this isn't necessarily the case for COPY.

 
 fclose failure on an open-for-read-only file seems like Assert()
 material; it can't happen.

Right. If this generates an error, there are probably more serious issues.

Gavin


---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html