Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r6NMQ-000ggX-LF for pgsql-bugs@arkaria.postgresql.org; Fri, 24 Nov 2023 04:00:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1r6NMO-007PSk-PX for pgsql-bugs@arkaria.postgresql.org; Fri, 24 Nov 2023 04:00:08 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1r6NMO-007PSc-EB for pgsql-bugs@lists.postgresql.org; Fri, 24 Nov 2023 04:00:08 +0000 Received: from mail-lf1-x135.google.com ([2a00:1450:4864:20::135]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1r6NML-00751o-D8 for pgsql-bugs@lists.postgresql.org; Fri, 24 Nov 2023 04:00:06 +0000 Received: by mail-lf1-x135.google.com with SMTP id 2adb3069b0e04-50943ccbbaeso2023172e87.2 for ; Thu, 23 Nov 2023 20:00:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700798404; x=1701403204; darn=lists.postgresql.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=cO8RFhdesDumFg8ELC5R2aDx7jXnJJcAhgwurfdGOHs=; b=dl1XO0QVB6KPP2KpF42b8GFkCLRG28fs8NYchmbjE4DB6vBHpKdNWk8Wc1PedWIel1 PXnKIGEAgbCAUq1m7C8Cxhm+uHTz17dikwXWPGEopJV1lXfBDmOxnU2l+WdWBJHANoGb +72fNbGPY/ewQAISO6poHVOoySFx/8xjF63COVQpyliK79vBL7ZIUEw6VboLqUvN+1VO sKpEar3UyY7IywafiSEVdxSlRBrAermRrvnsbp4XsY468JI+HFszO8Iql+5vB7PtRkNy Ohk1ZL43L6Nk5gX6FkkFtfn1CFiycOUt7SYRWDSz8ISxF0/AkGiBk/wou3MlinVKHpUi R//A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700798404; x=1701403204; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cO8RFhdesDumFg8ELC5R2aDx7jXnJJcAhgwurfdGOHs=; b=Ret3IHFwyYI5WYMUsxZ2ryLRXdZFHSmkWTD9TbilJEFEFLGxO5cRYOa/PYLuHgkaOp YOmSbc3cw60TxJzBkkQfwdxuAKMLM6mxlzyhgqa9SLm9WsKbzU2NNFaxXVvhL16oYAXO xODwBrqGILRIDhfC92HzxGLQ8RUS2uv8I9ijMA/XpX/pJbR0oc/WYr39GFuTOd9Ew39x PqJ9ZQqEvJTozG2jCDCG/4M+DzHMc/mWNdffMRGXXrm4kGEkPeEdH7QNnvdjhaeBUx7/ fM0xceNEhMKhxZe/LPJFlLobajMieR/HFUfOEWRp+KmLGclbXp9cVHItPRUqXamPAvCd fEXQ== X-Gm-Message-State: AOJu0Yz31CMk8pW2PxQR3ojP+LvXIfbYzjO3S/v4iaM3BZMRe0/zW1Sm vwHjt9F9M5WtYFvkkC/n/AZBhMY7mnc= X-Google-Smtp-Source: AGHT+IEX5fgrKUS2J5u5FfW7pV4oCfBt09uOM/Eu6LvoWdp6EZ+kjXo3/g7RJbIz4spFfG/kOkU2ww== X-Received: by 2002:a05:6512:3b0b:b0:509:1301:8470 with SMTP id f11-20020a0565123b0b00b0050913018470mr1007306lfv.45.1700798403451; Thu, 23 Nov 2023 20:00:03 -0800 (PST) Received: from [1.0.0.7] ([91.185.76.245]) by smtp.gmail.com with ESMTPSA id t27-20020ac2549b000000b0050aa4c5485asm396700lfk.75.2023.11.23.20.00.01 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 23 Nov 2023 20:00:02 -0800 (PST) Message-ID: <1adf8fee-5a9a-69c2-057a-87bbddebab9d@gmail.com> Date: Fri, 24 Nov 2023 07:00:01 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Subject: Re: BUG #17828: postgres_fdw leaks file descriptors on error and aborts aborted transaction in lack of fds Content-Language: en-US To: Tom Lane Cc: pgsql-bugs@lists.postgresql.org, Etsuro Fujita References: <17828-122da8cba23236be@postgresql.org> <423731.1678381075@sss.pgh.pa.us> From: Alexander Lakhin In-Reply-To: <423731.1678381075@sss.pgh.pa.us> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Hello, 09.03.2023 19:57, Tom Lane wrote: > PG Bug reporting form writes: >> The following script: >> [ leaks a file descriptor per error ] > Yeah, at least on platforms where WaitEventSets own kernel file > descriptors. I don't think it's postgres_fdw's fault though, > but that of ExecAppendAsyncEventWait, which is ignoring the > possibility of failing partway through. It looks like it'd be > sufficient to add a PG_CATCH or PG_FINALLY block there to make > sure the WaitEventSet is disposed of properly --- fortunately, > it doesn't need to have any longer lifespan than that one > function. Now that the leakage eliminated by 50c67c201/481d7d1c0 we still can observe the assert-triggering half of the bug with something like that: echo " CREATE EXTENSION postgres_fdw; SELECT id INTO t FROM generate_series(1,100000) id; " | psql ns=322 # assuming "ulimit -n" = 1024 and max_safe_fds / 3 = 329 for ((i=1;i<=$ns;i++)); do echo " DO \$d\$   BEGIN     EXECUTE \$\$CREATE SERVER loopback_$i FOREIGN DATA WRAPPER postgres_fdw       OPTIONS (         dbname '\$\$||current_database()||\$\$',         port '\$\$||current_setting('port')||\$\$'       )\$\$;   END; \$d\$; CREATE USER MAPPING FOR CURRENT_USER SERVER loopback_$i; CREATE FOREIGN TABLE ft_$i (id int) SERVER loopback_$i OPTIONS (table_name 't'); " done | psql >psql-1.log (echo "BEGIN;"; for ((i=1;i<=$ns;i++)); do echo "DECLARE cursor_$i CURSOR FOR SELECT * FROM ft_$i;"; done echo "SELECT * INTO nt FROM ft_1 UNION SELECT * FROM ft_2;" ) | psql >psql-2.log That leads to: 2023-11-24 03:03:50.281 UTC [1053419] ERROR:  epoll_create1 failed: Too many open files 2023-11-24 03:03:50.281 UTC [1053419] STATEMENT:  SELECT * INTO nt FROM ft_1 UNION SELECT * FROM ft_2; 2023-11-24 03:03:50.282 UTC [1053419] ERROR:  epoll_create1 failed: Too many open files 2023-11-24 03:03:50.282 UTC [1053419] WARNING:  AbortTransaction while in ABORT state TRAP: failed Assert("TransactionIdIsValid(proc->xid)"), File: "procarray.c", Line: 677, PID: 1053419 Call chains for the errors are the same as in the initial report [1]. [1] https://www.postgresql.org/message-id/17828-122da8cba23236be%40postgresql.org Best regards, Alexander