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 1qzOBL-00FxlJ-54 for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Nov 2023 21:27:51 +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 1qzOBJ-007SQd-9h for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Nov 2023 21:27:49 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qzOBI-007SQV-WB for pgsql-hackers@lists.postgresql.org; Sat, 04 Nov 2023 21:27:49 +0000 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qzOBE-004isl-2K for pgsql-hackers@lists.postgresql.org; Sat, 04 Nov 2023 21:27:48 +0000 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-692c02adeefso2991939b3a.3 for ; Sat, 04 Nov 2023 14:27:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1699133261; x=1699738061; darn=lists.postgresql.org; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=xA9zSSVCvrWhLklw4TLdsFWEQPgEWSbWEa+EVkCh614=; b=sjB1HyeFWfFmW7+SExZnQ6dgMgLrpHshpUu1nHP4qqsg8XgYJqBpvHakE5VlaR/GY5 juUHGtOilAWtVd0Wpmzzl78czg1lfr/0L+qXKLLtKT9YDLgfuNJiHU4y0t4nedQ8RaEK c4bZqgjOKy7XKkUvwHep2Gs6+pTQA0XaS4Qz6sWpWyWhPpFVuVkHFTPFk8KqsI1DHNwe Bfm1wEYilTyChaos2OonkFym1h3XTXfPPTXAvckS16Qn8Zzcygd9VndQ1Xyn3AOuAbZA zRkPQOgmQQD6DttAFpipXkkj9MXF1tUHS+2ZyZJ9TWAInx3KQ9phi8hRD+qsnMjh6g5h 1sLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699133261; x=1699738061; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=xA9zSSVCvrWhLklw4TLdsFWEQPgEWSbWEa+EVkCh614=; b=mbSJwWQDCkMxbzHIvkCK9HW3OEJWN+H839YaBOpczAN9xYzwH/l11JBHn5v8b6JBqp 1Jnvg4b20h7tHJIKmWDJT3Yoes5kjeuC5Cd+e0rDwcwxX8Gu2WOynXE7NXp/wlYVhp+6 bKZCbOYsCoziOmrjJCC6vHfbP5SA8IiT352Ny97xlQEMTHVj8BHEU7nJu6E5+XSL4l3Z E9DXfGuuqBkx31PjsCkRRzOhl13fBfNg5QOhMjjxmCOYEyF2IOk+SlRTLLgVkNtt4s5v VYXk5gIHu5hB9C3W+BYSO/i9kb/CpjkoJ0L2FumQQ0jOJnhHeeFiLE3+emkPlcLbRnuz SDbQ== X-Gm-Message-State: AOJu0YyXmy1pQCBXwyCmEpbva6ur6GRvQIaydVSDWAw1/kTyxvbfVsfP E2DCf497TK7ejKBzPhNXHJuQ3g== X-Google-Smtp-Source: AGHT+IHvVuKY50Zu8bRfMhanJ9whU9Cy3B2OO8EApOVbUtwlkKax7l2tb+W2RCMCYmWp+tklGNBRAA== X-Received: by 2002:a05:6a20:938b:b0:15a:bf8:7dfc with SMTP id x11-20020a056a20938b00b0015a0bf87dfcmr24673843pzh.15.1699133261259; Sat, 04 Nov 2023 14:27:41 -0700 (PDT) Received: from jeff-laptop.lan (c-76-102-242-158.hsd1.ca.comcast.net. [76.102.242.158]) by smtp.gmail.com with ESMTPSA id h13-20020a170902eecd00b001c3a8b135ebsm3326638plb.282.2023.11.04.14.27.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 04 Nov 2023 14:27:40 -0700 (PDT) Message-ID: <81ce3e64469db60b2b79173aca8a54b6cc2680b8.camel@j-davis.com> Subject: Re: Improve WALRead() to suck data directly from WAL buffers when possible From: Jeff Davis To: Bharath Rupireddy Cc: Andres Freund , Dilip Kumar , Kyotaro Horiguchi , pgsql-hackers@lists.postgresql.org, Nathan Bossart , Masahiko Sawada Date: Sat, 04 Nov 2023 14:27:39 -0700 In-Reply-To: References: <20221212.115717.1183698540772933396.horikyota.ntt@gmail.com> <628b07b79743e2614ab1724f516cbd41560d6551.camel@j-davis.com> <20230114203403.4zpg72fw2qb34awf@awork3.anarazel.de> <0d84c025e38673cb575dcf4987d050fe7b1e1a1f.camel@j-davis.com> <20231011224353.cl7c2s222dw3de4j@awork3.anarazel.de> <5c6e8e60c5c156a9f51ccf850f70829e45a985a1.camel@j-davis.com> <4132fe48f831ed6f73a9eb191af5fe475384969c.camel@j-davis.com> <2ef04861c0f77e7ae78b703770cc2bbbac3d85e6.camel@j-davis.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Sat, 2023-11-04 at 20:55 +0530, Bharath Rupireddy wrote: > + XLogRecPtr EndPtr =3D > pg_atomic_read_u64(&XLogCtl->xlblocks[curridx]); > + > + /* > + * xlblocks value can be InvalidXLogRecPtr before > the new WAL buffer > + * page gets initialized in AdvanceXLInsertBuffer. > In such a case > + * re-read the xlblocks value under the lock to > ensure the correct > + * value is read. > + */ > + if (unlikely(XLogRecPtrIsInvalid(EndPtr))) > + { > + LWLockAcquire(WALBufMappingLock, > LW_EXCLUSIVE); > + EndPtr =3D pg_atomic_read_u64(&XLogCtl- > >xlblocks[curridx]); > + LWLockRelease(WALBufMappingLock); > + } > + > + Assert(!XLogRecPtrIsInvalid(EndPtr)); Can that really happen? If the EndPtr is invalid, that means the page is in the process of being cleared, so the contents of the page are undefined at that time, right? Regards, Jeff Davis