Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pDLVx-0003Lh-CR for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Jan 2023 08:22:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pDLVw-0004lL-80 for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Jan 2023 08:22:16 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pDLVv-0004jB-Tr for pgsql-hackers@lists.postgresql.org; Thu, 05 Jan 2023 08:22:15 +0000 Received: from mail-yw1-x1133.google.com ([2607:f8b0:4864:20::1133]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pDLVt-0005EU-6K for pgsql-hackers@lists.postgresql.org; Thu, 05 Jan 2023 08:22:15 +0000 Received: by mail-yw1-x1133.google.com with SMTP id 00721157ae682-4b718cab0e4so57875147b3.9 for ; Thu, 05 Jan 2023 00:22:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=NeA8gZsUP/nR4pXc7BnRAN2XjVKdVtk6LoKWdrWadXc=; b=GuMIPXFmj021lE0sAQrblApvH37TFjH8qVtikr0+AvaXcdMxJjIoOiKlt4QIOTMydn g/Hg/gEHjoBizwy+FX0iD1/6H43LIngq1LMa1vtOg1KiowU1yS7dOZLJh3zqhQfRHnVQ Qn/3xB450pMOhBCWUSXg7U0ugsCz42vuzZeJ+ORmW9rRENuarFsXlFYYncGV2IJS3+7f 6CyMxc5CLgepPMthWyh72nl0m45PYEOgd1DXA1sSw5/4WMyEM35+iuNJ1LMaHPHypHM7 oBgVRmoavQIUvlqheG7WeV7uZxucRRB67WUjy69xj0gk2BINSFZMn7vZWbCsTDtOmKtO WNNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=NeA8gZsUP/nR4pXc7BnRAN2XjVKdVtk6LoKWdrWadXc=; b=kosOuZ0Bb4Zyc+xaNK5Y1/W/e41CKmoxnIs/NdfvtEaWgNo+L4fbnkLVjqxv7cs6XI SOoA/jnwLjNVI1tOfBrlTS2Ms0DzR9INzIcAePnzdalSIPmQgO6jkXk5QQxLLaW/g7AC RIZ7C+YV3Q25BIIeVIkcNMVzunyxc0ScwZlxXmeUOnOyCA1Yv6MQIMnWA5M3U/NWHEcL 3E+JVofUPGvgG2pM8ZTXDVK9rWi2Y/XzDukTjGz3Ck1MOk5bDRA/VL5YTDGU+pVuGWty e559r1LuOwWZF9Bf5q9caGaIf5Y1s0h0JZqf+sYWm0CI7gLBhXA63QmMT5GUsWLyszuS dMOw== X-Gm-Message-State: AFqh2kpQ0Y4NQYGWWISF5If99NYsdsekFZdnc/mmAfscusNgOSanD5NH mdjqav7M7+2Bi76bPHq+xQuE2HqyTQ20at7jYrM= X-Google-Smtp-Source: AMrXdXtbjd0cTG5OJAMRWwYN8jkOXa3Qb12mKUTNOt63trZmUPi+D/9Sl3lSyKOjUn5853/yn+TbzhcbQAWFq1+2Rhk= X-Received: by 2002:a81:7d46:0:b0:3ba:721f:b37c with SMTP id y67-20020a817d46000000b003ba721fb37cmr7350154ywc.457.1672906931114; Thu, 05 Jan 2023 00:22:11 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Dilip Kumar Date: Thu, 5 Jan 2023 13:51:53 +0530 Message-ID: Subject: Re: Perform streaming logical transactions by background workers and parallel apply To: "houzj.fnst@fujitsu.com" Cc: Amit Kapila , Masahiko Sawada , "wangw.fnst@fujitsu.com" , Peter Smith , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Content-Type: text/plain; charset="UTF-8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Thu, Jan 5, 2023 at 9:07 AM houzj.fnst@fujitsu.com wrote: > > On Wednesday, January 4, 2023 9:29 PM Dilip Kumar wrote: > > I think this looks good to me. > > Thanks for the comments. > Attach the new version patch set which changed the comments as suggested. Thanks for the updated patch, while testing this I see one strange behavior which seems like bug to me, here is the step to reproduce 1. start 2 servers(config: logical_decoding_work_mem=64kB) ./pg_ctl -D data/ -c -l pub_logs start ./pg_ctl -D data1/ -c -l sub_logs start 2. Publisher: create table t(a int PRIMARY KEY ,b text); CREATE OR REPLACE FUNCTION large_val() RETURNS TEXT LANGUAGE SQL AS 'select array_agg(md5(g::text))::text from generate_series(1, 256) g'; create publication test_pub for table t with(PUBLISH='insert,delete,update,truncate'); alter table t replica identity FULL ; insert into t values (generate_series(1,2000),large_val()) ON CONFLICT (a) DO UPDATE SET a=EXCLUDED.a*300; 3. Subscription Server: create table t(a int,b text); create subscription test_sub CONNECTION 'host=localhost port=5432 dbname=postgres' PUBLICATION test_pub WITH ( slot_name = test_slot_sub1,streaming=parallel); 4. Publication Server: begin ; savepoint a; delete from t; savepoint b; insert into t values (generate_series(1,5000),large_val()) ON CONFLICT (a) DO UPDATE SET a=EXCLUDED.a*30000; -- (while executing this start publisher in 2-3 secs) Restart the publication server, while the transaction is still in an uncommitted state. ./pg_ctl -D data/ -c -l pub_logs stop -mi ./pg_ctl -D data/ -c -l pub_logs start -mi after this, the parallel apply worker stuck in waiting on stream lock forever (even after 10 mins) -- see below, from subscriber logs I can see one of the parallel apply worker [75677] started but never finished [no error], after that I have performed more operation [same insert] which got applied by new parallel apply worked which got started and finished within 1 second. dilipku+ 75660 1 0 13:39 ? 00:00:00 /home/dilipkumar/work/PG/install/bin/postgres -D data dilipku+ 75661 75660 0 13:39 ? 00:00:00 postgres: checkpointer dilipku+ 75662 75660 0 13:39 ? 00:00:00 postgres: background writer dilipku+ 75664 75660 0 13:39 ? 00:00:00 postgres: walwriter dilipku+ 75665 75660 0 13:39 ? 00:00:00 postgres: autovacuum launcher dilipku+ 75666 75660 0 13:39 ? 00:00:00 postgres: logical replication launcher dilipku+ 75675 75595 0 13:39 ? 00:00:00 postgres: logical replication apply worker for subscription 16389 dilipku+ 75676 75660 0 13:39 ? 00:00:00 postgres: walsender dilipkumar postgres ::1(42192) START_REPLICATION dilipku+ 75677 75595 0 13:39 ? 00:00:00 postgres: logical replication parallel apply worker for subscription 16389 waiting Subscriber logs: 2023-01-05 13:39:07.261 IST [75595] LOG: background worker "logical replication worker" (PID 75649) exited with exit code 1 2023-01-05 13:39:12.272 IST [75675] LOG: logical replication apply worker for subscription "test_sub" has started 2023-01-05 13:39:12.307 IST [75677] LOG: logical replication parallel apply worker for subscription "test_sub" has started 2023-01-05 13:43:31.003 IST [75596] LOG: checkpoint starting: time 2023-01-05 13:46:32.045 IST [76337] LOG: logical replication parallel apply worker for subscription "test_sub" has started 2023-01-05 13:46:35.214 IST [76337] LOG: logical replication parallel apply worker for subscription "test_sub" has finished 2023-01-05 13:46:50.241 IST [76384] LOG: logical replication parallel apply worker for subscription "test_sub" has started 2023-01-05 13:46:53.676 IST [76384] LOG: logical replication parallel apply worker for subscription "test_sub" has finished -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com