]> granicus.if.org Git - postgresql/commitdiff
Close the file descriptor in ApplyLogicalMappingFile
authorTomas Vondra <tomas.vondra@postgresql.org>
Thu, 16 Aug 2018 14:49:10 +0000 (16:49 +0200)
committerTomas Vondra <tomas.vondra@postgresql.org>
Thu, 16 Aug 2018 14:55:34 +0000 (16:55 +0200)
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

src/backend/replication/logical/reorderbuffer.c

index 1d43a165ad04f07d5c691d0a81f13a08c56c553c..5f4ae1291c66c72a8416eb0b8a129b31215458de 100644 (file)
@@ -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)