On 26 September 2014 12:24, Amit Kapila Wrote, >I don't think this can handle cancel requests properly because >you are just setting it in GetIdleSlot() what if the cancel >request came during GetQueryResult() after sending sql for >all connections (probably thats the reason why Jeff is not able >to cancel the vacuumdb when using parallel option).
You are right, I have fixed, it in latest patch, please check latest patch @ (4205e661176a124faf891e0a6ba9135266363...@szxeml509-mbs.china.huawei.com<http://www.postgresql.org/message-id/4205e661176a124faf891e0a6ba9135266363...@szxeml509-mbs.china.huawei.com>) dilip@linux-ltr9:/home/dilip/9.4/install/bin> ./vacuumdb -z -a -j 8 -p 9005 vacuumdb: vacuuming database "db1" vacuumdb: vacuuming database "postgres" Cancel request sent vacuumdb: vacuuming of database "postgres" failed: ERROR: canceling statement due to user request >Few other points >1. >+ vacuum_parallel(const char *dbname, bool full, bool verbose, >{ >.. >+ connSlot = (ParallelSlot*)pg_malloc(concurrentCons * >sizeof(ParallelSlot)); >+ connSlot[0].connection = conn; Fixed >a. >Does above memory gets freed anywhere, if not isn't it >good idea to do the same >b. For slot 0, you are not seeting it as PQsetnonblocking, >where as I think it can be used to run commands like any other >connection. Yes, this was missing in the code, I have fixed it.. >2. >+ /* >+ * If user has given the vacuum of complete db, then if >+ * any of the object vacuum >failed it can be ignored and vacuuming >+ * of other object can be continued, this is the same >behavior as >+ * vacuuming of complete db is handled without --jobs option >+ */ > >s/object/object's FIXED >3. >+ if(!completedb || >+ (sqlState && strcmp(sqlState, >ERRCODE_UNDEFINED_TABLE) != 0)) >+ { >+ >+ fprintf(stderr, _("%s: vacuuming of >database \"%s\" failed: %s"), >+ progname, >dbname, PQerrorMessage >(conn)); > >Indentation on both places is wrong. Check other palces for >similar issues. FIXED >4. >+ bool analyze_only, >bool freeze, int numAsyncCons, > >In code still there is reference to AsyncCons, as decided lets >change it to concurrent_connections | conc_cons FIXED Regards, Dilip