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.96) (envelope-from ) id 1wHZka-007JbW-37 for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Apr 2026 04:08:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wHZka-00FjbO-0l for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Apr 2026 04:08:44 +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.96) (envelope-from ) id 1wHZkZ-00FjbF-31 for pgsql-hackers@lists.postgresql.org; Tue, 28 Apr 2026 04:08:43 +0000 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wHZkX-0000000389q-2tjA for pgsql-hackers@lists.postgresql.org; Tue, 28 Apr 2026 04:08:42 +0000 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2a871daa98fso71745885ad.1 for ; Mon, 27 Apr 2026 21:08:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1777349321; cv=none; d=google.com; s=arc-20240605; b=AVC1vDshUNkWrvL4P1o3D2azM3e0x11WI4TIkByUcRi5efoXSxheBvXqfYpy/z1W69 Q5SVu2IBYc2zVjH0xwztr4msRzOWR18TytHdDZT/lX1+TGySsTL57qEZRgJdDzxc6/Fe LeE7A+QTa6IzzIzkTMj7LEQNiz8ov3bT4OlGcuYdTKAJM0ExgURTxaQ4w1wxZYfN2eyh ikD24VTc7PlHf3q5JBPtlcKSOEwnji2g14ptkmfkph4BsE+s7smLc4MmfeTpfSCaqv0R lAkCfnCtBXG/ZHfDobq7Ez9BAVj09x72tbF7i3Ur/eXZ3ZIytYqhUfnQ5lZ5R1uJaIsG bKrw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=wu1ZgMlVsIrricc56pp8qZm35gv7wfrs/S/irD9hOb0=; fh=fywpbSg23TiAXCMdVzGUAfK5nB+ZMkbWf29qXd8U6Ow=; b=BhE8rKXdTwpzamby1pt+BUbYzI650eYPLNFWS7K3H0umVAWX/QoMVZOJzGAxM+b62Z FD1U52PQeyk1y5FnYXNEwS2gifhU6AOmdYY+bGVJVcrMlCQIyPOZbL2wxoTnLp+OlNqa OkwtSqfYp5t5EmbYVughzpPZF0/d5Qjky6gCcCojkvAfvgAcEtQL/5X6gQuPJNGw4bSj AuoiCJE3M0VIyY8QBDCobxVMvLAN8aIixJJUNLXnNlOkipnjoqwqUXJb7iXJ3Yz7vtmq IxZRINyTq67Ac/FEbggrN0NxxJ00wN4l9m/J/7pzxnH/sEaHGTu29dg8oxFEos+nUwfQ UUOw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777349321; x=1777954121; darn=lists.postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=wu1ZgMlVsIrricc56pp8qZm35gv7wfrs/S/irD9hOb0=; b=SnJgaRg2hJxk08J1v685rnKWt6il6pZWf1bUSySDEOj7JdVeELgqJOhYjtFRRSl422 6FrkezRM22dxvXpfUThH6SO6N/SpT0Eof0MICRNRzpJGZ7Iv7RqzApyNGgg/zPz/bqMj A2Y/t7O3MrLJ8oxW535W4f6FaP7Vwsq+iYS8QRRhOSrvjPrRlXA20cnRuPUHI/PfBZ/D dQoVEcrw0aYABdKm1TaqyGjlgD9k5LuMe6b2lra93WUEzxKlEq42lJLeHsgFtTtoGgiA n8YY4rlBoSELl1K/PVNtQqtlsfMA9exIn2hoJzjO+X/elnFyO6PS1JyH13EfI9ZzkaTn +sNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777349321; x=1777954121; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=wu1ZgMlVsIrricc56pp8qZm35gv7wfrs/S/irD9hOb0=; b=jMKFOdHL1cEDVGSsvXo8aa3+mbeqK4Ff2V00j+NGAxFfmJOAZeoZP5PW6VmIcsnvUr BtlVzwiPeZGXTGCGsjeITfILY28JR0HJSNQScNfWfesFZRh73HRmCWpjf963Y8ua+N0Q PvRS7AI3otEzwc2aAV6st10hGD+7H/s3INXamD9a433YDCDvSseoFMOXIy05qsdRUVSM EqWYXu0IMIkxBBBQwaaeeqpnJbeDsiHOglg1RIROPP/Cq73Kd7DEVwHTcrxeolYtWjlq eIf5ps3udZNgO/yMINC5qfa2icL3y4O/Xtq+ZNb3iEOgZdJxVIJMYXbcpelAEGHqDYq9 nMfQ== X-Gm-Message-State: AOJu0Yw3YXIy2rpWg25pUZYWsw/DwBdYV4gu7goZNAC5lhkJieOtgGq1 fszX4vwxzp+8fdLJQRxrxGqb2jQNbE0E99/HdZNhSdRrWNWEKprDPZAQ6WmHGzbFuYDmaaEwghn gqeibAzC224wj/FnWfJ9NbDN7cxBZCVE= X-Gm-Gg: AeBDievrcr+KFiuUNNM3YD9ZrR9jzRRDGIRMRzv8l1yeUtNQMZYyRQSrweDIzQs0bRF Uz7KpVvlK25C18y2hcSNi8D15SgSMfV03u4BuI4uxDIFftJ5O7plwjyo8GQdxjwL6xpfTNW/f6J pUv7G+yBT55VAK+Fgzc3ycPQZigGPzOr7fjWZwJMcsLzqRzSVIY5EfnB1c0xXkk1Ty0Y8wowEAQ aWBMSPg49LEhW988pmuQSPeM6GxxYr+Dnuz6e7IQst7fx4Mzf3b1nUz+aV/+YtBBnEOvLhTw6CK 2NDBnzSaYKGz2ieF41xsbYInqv4VHpXxI57ulmdoTz9cTzipW1zmsvIhEZrJGThc X-Received: by 2002:a17:903:2411:b0:2b0:67a7:5c4b with SMTP id d9443c01a7336-2b97c47b4c3mr13841695ad.28.1777349321042; Mon, 27 Apr 2026 21:08:41 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: shveta malik Date: Tue, 28 Apr 2026 09:38:29 +0530 X-Gm-Features: AVHnY4KE7Gp3AXpyD1kUfjGC427vqgVCxg5jPrF2LKLGxYPnZv07x0xpmHmeOtc Message-ID: Subject: Re: [Patch]: Fix excessive ProcArrayLock acquisitions with subscription max_retention_duration=0 To: SATYANARAYANA NARLAPURAM Cc: PostgreSQL Hackers , Amit Kapila , shveta malik Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Mon, Apr 27, 2026 at 10:32=E2=80=AFPM SATYANARAYANA NARLAPURAM wrote: > > Hi, > > On Mon, Apr 27, 2026 at 2:48=E2=80=AFAM shveta malik wrote: >> >> On Mon, Apr 27, 2026 at 2:11=E2=80=AFPM SATYANARAYANA NARLAPURAM >> wrote: >> > >> > Hi Hackers, >> > >> > When a subscription has retain_dead_tuples enabled with maxretention s= et >> > to zero (unlimited retention), adjust_xid_advance_interval() caps >> > xid_advance_interval to Min(interval, maxretention). Since maxretenti= on >> > is zero, this always collapses the interval to zero milliseconds. >> > >> > A zero makes TimestampDifferenceExceeds(last_time, now, 0) always >> > true in get_candidate_xid(). This causes the apply worker to call >> > GetOldestActiveTransactionId() on every single WAL message. This resul= ts in >> > a huge number of ProcArrayLock acquisitions under moderate write load. >> > >> > Fix by adding a maxretention > 0 guard to the cap. When maxretention i= s zero , >> > the exponential back-off in adjust_xid_advance_interval() >> > now works correctly, growing the interval from 100 ms toward the 180 s >> > ceiling. >> > >> > Measured with perf uprobe counting GetOldestActiveTransactionId calls >> > at ~39K TPS (pgbench, 5 clients): >> > >> > Before fix: 25,104 calls / 5 s (~5,021/s) >> > After fix: 31 calls / 5 s (~6/s) >> > >> >> Thanks for reporting it. I am reveiwing the problem sattement. >> Meanwhile can you please look at it, I am getting the following error >> while applying the patch on my Ubuntu setup (git am): >> >> error: corrupt patch at line 22 > > > Thanks! Please find the updated v2 patch. Thanks. The patch looks good. thanks Shveta