cannot delete corrupted rows after DB corruption: tuple concurrently updated - Mailing list pgsql-general

From john gale
Subject cannot delete corrupted rows after DB corruption: tuple concurrently updated
Date
Msg-id 45D95D44-AAA8-4F72-AD87-FF62A0F1B8D6@smadness.com
Whole thread Raw
Responses Re: cannot delete corrupted rows after DB corruption: tuple concurrently updated  (john gale <john@smadness.com>)
List pgsql-general
We ran into an open file limit on the DB host (Mac OS X 10.9.0, Postgres 9.3.2) and caused the familiar "ERROR:
unexpectedchunk number 0 (expected 1) for toast value 155900302 in pg_toast_16822" when selecting data. 

Previously when we've run into this kind of corruption we could find the specific corrupted rows in the table and
deleteby ctid.  However, this time we're running into a persistent "ERROR:  tuple concurrently updated" when deleting
byctid. 

munin2=# select ctid from testruns where id = 141889653;
     ctid
--------------
 (37069816,3)
(1 row)

munin2=# delete from testruns where ctid = '(37069816,3)';
ERROR:  tuple concurrently updated

This always occurs and seems to prevent us from cleaning up the database by removing the corrupted rows.

Before attempting to do more drastic things like restart the postgres instance, is there some known way of getting
aroundthis error and cleaning up the corruption (other than the full replicate / reindex / suggestions from around the
webthat are more involved than deleting corrupted rows by ctid). 

thanks,

    ~ john


pgsql-general by date:

Previous
From: Sameer Kumar
Date:
Subject: Re: Adding a non-null column without noticeable downtime
Next
From: Zev Benjamin
Date:
Subject: Re: Adding a non-null column without noticeable downtime