From: Tomas Vondra Date: Thu, 16 Aug 2018 14:49:10 +0000 (+0200) Subject: Close the file descriptor in ApplyLogicalMappingFile X-Git-Tag: REL_12_BETA1~1711 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fa73b377ee11ced0c051fb42c29a87b5c71b79e3;p=postgresql Close the file descriptor in ApplyLogicalMappingFile The function was forgetting to close the file descriptor, resulting in failures like this: ERROR: 53000: exceeded maxAllocatedDescs (492) while trying to open file "pg_logical/mappings/map-4000-4eb-1_60DE1E08-5376b5-537c6b" LOCATION: OpenTransientFile, fd.c:2161 Simply close the file at the end, and backpatch to 9.4 (where logical decoding was introduced). While at it, fix a nearby typo. Discussion: https://www.postgresql.org/message-id/flat/738a590a-2ce5-9394-2bef-7b1caad89b37%402ndquadrant.com --- diff --git a/src/backend/replication/logical/reorderbuffer.c b/src/backend/replication/logical/reorderbuffer.c index 1d43a165ad..5f4ae1291c 100644 --- a/src/backend/replication/logical/reorderbuffer.c +++ b/src/backend/replication/logical/reorderbuffer.c @@ -3278,11 +3278,13 @@ ApplyLogicalMappingFile(HTAB *tuplecid_data, Oid relid, const char *fname) new_ent->combocid = ent->combocid; } } + + CloseTransientFile(fd); } /* - * Check whether the TransactionOId 'xid' is in the pre-sorted array 'xip'. + * Check whether the TransactionOid 'xid' is in the pre-sorted array 'xip'. */ static bool TransactionIdInArray(TransactionId xid, TransactionId *xip, Size num)