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 1w6bKu-004SZV-0O for pgsql-hackers@arkaria.postgresql.org; Sat, 28 Mar 2026 21:36:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w6bKq-00F8sq-3A for pgsql-hackers@arkaria.postgresql.org; Sat, 28 Mar 2026 21:36:49 +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 1w6bKq-00F8si-1S for pgsql-hackers@lists.postgresql.org; Sat, 28 Mar 2026 21:36:49 +0000 Received: from mail-dl1-x122e.google.com ([2607:f8b0:4864:20::122e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w6bKo-00000001YCM-0F4D for pgsql-hackers@lists.postgresql.org; Sat, 28 Mar 2026 21:36:47 +0000 Received: by mail-dl1-x122e.google.com with SMTP id a92af1059eb24-12736a0147cso249194c88.1 for ; Sat, 28 Mar 2026 14:36:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774733805; cv=none; d=google.com; s=arc-20240605; b=CBQZ/wemFGzYjDPOWWHckniJzHApBCEijBFgHFNALwnuxmtyIMU4mdlv8cJpCWnpoY qHnpuaU52mP8PEkcUiCq7LlT28JUvzKZGA8Dzas+Ufzg2pJoopRcnEP1r7IeGie9noCe QgQ9fYYt+cq3yq1+xGAJbBaIH0LRRIj1ZwLOi4aUwMHNPpmBWEcTXXU/EdVDgCF6T0ll l0NvyHBPAGG0VDjuBelJszmVPPGIOabOlonJfFYzsF/m57FLdK6oCco95BYnKlbgxWI0 il9FUIJv3lvBIQA9qz/ZzR14lriKfcJL9xZAJwItWHUhokLZnToZlYy5p+bC7X5mVvK9 xu5Q== 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=xR+LgkkKeuMkGHEXFMKDq37tm1AoLDOj31vY1qqa1lQ=; fh=EJPN+kgHxfajlNe6V5vWT334XCc6kl5EGLP3yItSl20=; b=jT5jTf5rH1ZuAXjYqI/ZkLN4CWk2CJPx+IeE5TK7HVuEUtCs7z+zf9ujWns/uPiDbV dUjta7BuMTsL7br2V7NcYwXTRTq+i6vavKiOhc0amXjGw35bCnhS7rDRyyeAtOhxXdBQ Vm5XCs7wL8eL7C9OdbkqJx+0Wp2/KSJaCgIOnVrSljzLBD+f0uW4OezUSAvXmHmyWXnw aGpSePcKbnFBP4E0tBH42Kvfvmao/GOM3JWFwWWz2li4NPVtlq4IiX6RhqOYRzXhTUWw 9ICxEct1utTXJjFIDUzK0519G9YSrM/4RVnZ35lf+by3Qee4Jm04qGUJiY0lGbI/5Umr lN9A==; 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=1774733805; x=1775338605; 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=xR+LgkkKeuMkGHEXFMKDq37tm1AoLDOj31vY1qqa1lQ=; b=qpgZ5KjfdeJXls2hrbNDAQ3iGcyQ0vBOkpRzuSsGmci2l0VhNddv2TgtE6NEb+c9dS obGXmrBVdHmsyiiTUnx18iYxryc7FcLwgt+jQtBKeydfkXNivRfTM7ZozsrnS1lK5hlH bzh7otBXlZ7Rt9A89rbKrx5LAayFe3nmTNNJyHeNOIJRjmObNB2WDA8w1/Phl20Jtwj7 D7Ha8hJk175ApRHpjbXSsjZgYA52LTqHP7S/CSyBvS9OTrTC9l1JRurgtCqEPItlMv+e 8S50fUlSKyrBZq7GOiB/0IvT3c4hcuTHtFOlgU9YsyVeFUNqfwYwPMTPRs/ucc0iFCpY IyfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774733805; x=1775338605; 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=xR+LgkkKeuMkGHEXFMKDq37tm1AoLDOj31vY1qqa1lQ=; b=YsFTpqcUeLe8Mv9TwqP956HPtdzTWQuwD0SDlzElxFitaoYluAS7uvhfmOiiASz9p3 OyLp9EWaa7wKapYKrr2KTrK1vUk3M/sVZFPq0wNH1tQ+gISILDaEDyOYEr/Ggv1ZH/0K emvAGu3JjbSptePCcDbjyOg1YO5uNe0YlX8rjlJ2KJe2L42fQ3TkI9E6Pzo97QOpaqhf Me9zFW3R/Ndg7lyOqb6IjMC/0TpbSRVEqnRYVDJ3J7vP6c7T/mgUoNv3ayiK7ehsuDJd dIFP1LLJGTT2fHycBjHADaz8nPn9MWkvn29LlzrRtiQqSbTL20QIL9icwnSAySJZckXM xZVg== X-Forwarded-Encrypted: i=1; AJvYcCWJfjQA6gm5giYz8WMdqfVvgvZAwP1ZC11vC07ohXE7C2hjFv7uGy9nJ2sA4/jSw5QSpVk1ZSIPySgzKw74@lists.postgresql.org X-Gm-Message-State: AOJu0YxXcBwJu6Qgz4qWyxYmmUsTsbZTroyhWs7CBIlVtWAa4CRC1H4b OEfrWBJg+e6sDCToPVgxNx48GZDynO7dx92znjXyMleMeddUH1kC7TTj6Mb48xGxb/rkbMAPx0e OyWyfiyQqR3mrelypt29AgI/AXQmGbBY= X-Gm-Gg: ATEYQzyak0K2NvRjEUxhsxuU2QELwLOcZsx/ZWeWh12xybMPRm+Ya/s70e5winvWzBM V/XxnKU3j5KS3VZvqdORxEgzldLbolWiYACPi+v+Z1GrxLk2l7FhmGeXlzqjrotXmBNdqHf8ttU fmtLlWNNstolCsf6RqtwlBsgtHnrfoN6PbVyDiRwqcZh1xpx/udupaU1ehe3u1SKBr3WnUR6CHE SUW+tbgdRl7b+T3Ke6g0yX1mbkaA9RPe9xbg5ATxZQdtJomzvFZLKKvZ2mfGJEdEDuigDFIWDTk BGi5WxqxGfKvpdmLXd4JVwyDywuJw/exZyqTJsxQhCWgwXxJ70sis5o8RLoBvZOg X-Received: by 2002:a05:7301:6781:b0:2be:6e6:e479 with SMTP id 5a478bee46e88-2c185cb6e6emr1633081eec.2.1774733804984; Sat, 28 Mar 2026 14:36:44 -0700 (PDT) MIME-Version: 1.0 References: <2250061.1774104346@sss.pgh.pa.us> <2555285.1774131847@sss.pgh.pa.us> <2609460.1774153487@sss.pgh.pa.us> <2790913.1774200584@sss.pgh.pa.us> <2880042.1774203473@sss.pgh!!.pa.us> <3341199.1774221191@sss.pgh.pa.us> <3424809.1774234940@sss.pgh.pa.us> In-Reply-To: From: Thomas Munro Date: Sun, 29 Mar 2026 10:36:06 +1300 X-Gm-Features: AQROBzCNBCqdtGj8hgLBgwV7ipW-btmD8q7fElMZDiyPnsNViDnNU-8722E2bts Message-ID: Subject: Re: pg_waldump: support decoding of WAL inside tarfile To: Andres Freund Cc: Michael Paquier , Tom Lane , Andrew Dunstan , Amul Sul , Zsolt Parragi , Robert Haas , Chao Li , Anthonin Bonnefoy , Fujii Masao , Jakub Wartak , PostgreSQL Hackers 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 Thu, Mar 26, 2026 at 6:28=E2=80=AFAM Andres Freund = wrote: > On 2026-03-24 12:11:44 +0900, Michael Paquier wrote: > > On Sun, Mar 22, 2026 at 11:02:20PM -0400, Tom Lane wrote: > > > Proposed patch attached. There might be an argument for using some > > > other size than 256K for the other two decompressors, but my > > > inclination is to try to make all three use roughly the same block > > > size. (See also 66ec01dc4.) > > > > The buildfarm has switched mostly to green, except on this one: > > https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=3Dhoatzin&dt=3D= 2026-03-23%2006%3A00%3A42 > > I think there's a few more failues. Fairywren regularly fails, including = in a > run from today. This fails 100% of the time on my machine, even after e9d72348 and ff84efe4= , eg: # Running: pg_waldump --path /tmp/D8WG1Sv2HE/pg_wal.tar --start 0/017A2610 --end 0/02093848 [09:43:29.288](0.148s) not ok 104 - runs with path option and start and end locations: exit code 0 [09:43:29.289](0.001s) # Failed test 'runs with path option and start and end locations: exit code 0' # at /home/tmunro/projects/postgresql/src/bin/pg_waldump/t/001_basic.pl line 402. [09:43:29.290](0.001s) not ok 105 - runs with path option and start and end locations: no stderr [09:43:29.291](0.001s) # Failed test 'runs with path option and start and end locations: no stderr' # at /home/tmunro/projects/postgresql/src/bin/pg_waldump/t/001_basic.pl line 402. [09:43:29.291](0.000s) # got: 'pg_waldump: error: could not find WAL "000000010000000000000002" in archive "pg_wal.tar" # ' I can see that it is wrong about the contents of the tar file: $ pg_waldump --path _tmp_H_1gv81G1L_pg_wal.tar --start 0/017A2610 --end 0/020934F8 2>&1 | tail -3 rmgr: Hash len (rec/tot): 72/ 72, tx: 720, lsn: 0/01FFC1B8, prev 0/01FFC178, desc: INSERT off 40, blkref #0: rel 1663/5/16397 blk 2, blkref #1: rel 1663/5/16397 blk 0 rmgr: Transaction len (rec/tot): 46/ 46, tx: 720, lsn: 0/01FFC200, prev 0/01FFC1B8, desc: COMMIT 2026-03-29 10:15:24.112967 NZDT pg_waldump: error: could not find WAL "000000010000000000000002" in archive "_tmp_H_1gv81G1L_pg_wal.tar" $ tar tvf _tmp_H_1gv81G1L_pg_wal.tar drwx------ 0 tmunro tmunro 0 Mar 29 10:15 archive_status/ -rw------- 0 tmunro tmunro 0 Mar 29 10:15 archive_status/000000010000000000000002.ready -rw------- 0 tmunro tmunro 0 Mar 29 10:15 archive_status/000000010000000000000001.ready drwx------ 0 tmunro tmunro 0 Mar 29 10:08 summaries/ -rw------- 0 tmunro tmunro 16777216 Mar 29 10:15 000000010000000000000002 -rw------- 0 tmunro tmunro 16777216 Mar 29 10:15 000000010000000000000001 -rw------- 0 tmunro tmunro 16777216 Mar 29 10:15 000000010000000000000003 It seems like the place we'd be looking for the file is in astreamer_tar_header(), so I added in some caveman debugging: /* * Parse key fields out of the header. */ fprintf(stderr, "XXXX [%s] XXXX\n", &buffer[TAR_OFFSET_NAME]); strlcpy(member->pathname, &buffer[TAR_OFFSET_NAME], MAXPGPATH); if (member->pathname[0] =3D=3D '\0') pg_fatal("tar member has empty name"); Now I see: XXXX [archive_status/] XXXX XXXX [archive_status/000000010000000000000002.ready] XXXX XXXX [archive_status/000000010000000000000001.ready] XXXX XXXX [summaries/] XXXX XXXX [PaxHeader/000000010000000000000002] XXXX XXXX [GNUSparseFile.0/000000010000000000000002] XXXX XXXX [000000010000000000000001] XXXX rmgr: XLOG len (rec/tot): 30/ 30, tx: 0, lsn: 0/017A2610, prev 0/017A25F0, desc: NEXTOID 24576 rmgr: Standby len (rec/tot): 42/ 42, tx: 692, lsn: 0/017A2630, prev 0/017A2610, desc: LOCK xid 692 db 5 rel 16384 rmgr: Storage len (rec/tot): 42/ 42, tx: 692, lsn: 0/017A2660, prev 0/017A2630, desc: CREATE base/5/16384 ... lots more normal output ... rmgr: Hash len (rec/tot): 72/ 72, tx: 720, lsn: 0/01FFBED8, prev 0/01FFBE98, desc: INSERT off 97, blkref #0: rel 1663/5/16397 blk 2, blkref #1: rel 1663/5/16397 blk 0 rmgr: Heap len (rec/tot): 575/ 575, tx: 720, lsn: 0/01FFBF20, prev 0/01FFBED8, desc: INSERT off: 12, flags: 0x08, blkref #0: rel 1663/5/16393 blk 52 rmgr: Btree len (rec/tot): 64/ 64, tx: 720, lsn:XXXX [PaxHeader/000000010000000000000003] XXXX XXXX [GNUSparseFile.0/000000010000000000000003] XXXX 0/01FFC178, prev 0/01FFBF20, desc: INSERT_LEAF off: 344, blkref #0: rel 1663/5/16396 blk 2 rmgr: Hash len (rec/tot): 72/ 72, tx: 720, lsn: 0/01FFC1B8, prev 0/01FFC178, desc: INSERT off 40, blkref #0: rel 1663/5/16397 blk 2, blkref #1: rel 1663/5/16397 blk 0 rmgr: Transaction len (rec/tot): 46/ 46, tx: 720, lsn: 0/01FFC200, prev 0/01FFC1B8, desc: COMMIT 2026-03-29 10:15:24.112967 NZDT pg_waldump: error: could not find WAL "000000010000000000000002" in archive "_tmp_H_1gv81G1L_pg_wal.tar" Seems like it already stepped over 000000010000000000000002 earlier? Could it be a table-of-contents order dependency bug or something like that?