Hi, While testing this feature with parallel vacuum on "TEMPORARY TABLE", I got a server crash on PG Head+V36_patch. Changed configuration parameters and Stack trace are as below:
autovacuum = on max_worker_processes = 4 shared_buffers = 10MB max_parallel_workers = 8 max_parallel_maintenance_workers = 8 vacuum_cost_limit = 2000 vacuum_cost_delay = 10 min_parallel_table_scan_size = 8MB min_parallel_index_scan_size = 0 -- Stack trace: [centos@parallel-vacuum-testing bin]$ gdb -q -c data/core.1399 postgres Reading symbols from /home/centos/BLP_Vacuum/postgresql/inst/bin/postgres...done. [New LWP 1399] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". Core was generated by `postgres: autovacuum worker postgres '. Program terminated with signal 6, Aborted. #0 0x00007f4517d80337 in raise () from /lib64/libc.so.6 Missing separate debuginfos, use: debuginfo-install glibc-2.17-292.el7.x86_64 keyutils-libs-1.5.8-3.el7.x86_64 krb5-libs-1.15.1-37.el7_7.2.x86_64 libcom_err-1.42.9-16.el7.x86_64 libgcc-4.8.5-39.el7.x86_64 libselinux-2.5-14.1.el7.x86_64 openssl-libs-1.0.2k-19.el7.x86_64 pcre-8.32-17.el7.x86_64 zlib-1.2.7-18.el7.x86_64 (gdb) bt #0 0x00007f4517d80337 in raise () from /lib64/libc.so.6 #1 0x00007f4517d81a28 in abort () from /lib64/libc.so.6 #2 0x0000000000a96341 in ExceptionalCondition (conditionName=0xd18efb "strvalue != NULL", errorType=0xd18eeb "FailedAssertion", fileName=0xd18ee0 "snprintf.c", lineNumber=442) at assert.c:67 #3 0x0000000000b02522 in dopr (target=0x7ffdb0e38450, format=0xc5fa95 ".%s\"", args=0x7ffdb0e38538) at snprintf.c:442 #4 0x0000000000b01ea6 in pg_vsnprintf (str=0x256df50 "autovacuum: dropping orphan temp table \"postgres.", '\177' <repeats 151 times>..., count=1024, fmt=0xc5fa68 "autovacuum: dropping orphan temp table \"%s.%s.%s\"", args=0x7ffdb0e38538) at snprintf.c:195 #5 0x0000000000afbadf in pvsnprintf (buf=0x256df50 "autovacuum: dropping orphan temp table \"postgres.", '\177' <repeats 151 times>..., len=1024, fmt=0xc5fa68 "autovacuum: dropping orphan temp table \"%s.%s.%s\"", args=0x7ffdb0e38538) at psprintf.c:110 #6 0x0000000000afd34b in appendStringInfoVA (str=0x7ffdb0e38550, fmt=0xc5fa68 "autovacuum: dropping orphan temp table \"%s.%s.%s\"", args=0x7ffdb0e38538) at stringinfo.c:149 #7 0x0000000000a970fd in errmsg (fmt=0xc5fa68 "autovacuum: dropping orphan temp table \"%s.%s.%s\"") at elog.c:832 #8 0x00000000008588d2 in do_autovacuum () at autovacuum.c:2249 #9 0x0000000000857b29 in AutoVacWorkerMain (argc=0, argv=0x0) at autovacuum.c:1689 #10 0x000000000085772f in StartAutoVacWorker () at autovacuum.c:1483 #11 0x000000000086e64f in StartAutovacuumWorker () at postmaster.c:5562 #12 0x000000000086e106 in sigusr1_handler (postgres_signal_arg=10) at postmaster.c:5279 #13 <signal handler called> #14 0x00007f4517e3f933 in __select_nocancel () from /lib64/libc.so.6 #15 0x0000000000869838 in ServerLoop () at postmaster.c:1691 #16 0x0000000000869212 in PostmasterMain (argc=3, argv=0x256bd70) at postmaster.c:1400 #17 0x000000000077855d in main (argc=3, argv=0x256bd70) at main.c:210 (gdb) I have tried to reproduce the same with all previously executed queries but now I am not able to reproduce the same. On Thu, Dec 19, 2019 at 11:26 AM Mahendra Singh <mahi6...@gmail.com> wrote: > On Wed, 18 Dec 2019 at 12:07, Amit Kapila <amit.kapil...@gmail.com> wrote: > > > > [please trim extra text before responding] > > > > On Wed, Dec 18, 2019 at 12:01 PM Mahendra Singh <mahi6...@gmail.com> > wrote: > > > > > > On Tue, 10 Dec 2019 at 00:30, Mahendra Singh <mahi6...@gmail.com> > wrote: > > > > > > > > > > > > 3. > > > > After v35 patch, vacuum.sql regression test is taking too much time > due to large number of inserts so by reducing number of tuples, we can > reduce that time. > > > > +INSERT INTO pvactst SELECT i, array[1,2,3], point(i, i+1) FROM > generate_series(1,100000) i; > > > > > > > > here, instead of 100000, we can make 1000 to reduce time of this > test case because we only want to test code and functionality. > > > > > > As we added check of min_parallel_index_scan_size in v36 patch set to > > > decide parallel vacuum, 1000 tuples are not enough to do parallel > > > vacuum. I can see that we are not launching any workers in vacuum.sql > > > test case and hence, code coverage also decreased. I am not sure that > > > how to fix this. > > > > > > > Try by setting min_parallel_index_scan_size to 0 in test case. > > Thanks Amit for the fix. > > Yes, we can add "set min_parallel_index_scan_size = 0;" in vacuum.sql > test case. I tested by setting min_parallel_index_scan_size=0 and it > is working fine. > > @Masahiko san, please add above line in vacuum.sql test case. > > Thanks and Regards > Mahendra Thalor > EnterpriseDB: http://www.enterprisedb.com > > > -- With Regards, Prabhat Kumar Sahu Skype ID: prabhat.sahu1984 EnterpriseDB Software India Pvt. Ltd. The Postgres Database Company