On Wed, Apr 9, 2014 at 9:20 PM, Robert Haas <robertmh...@gmail.com> wrote: > On Wed, Apr 9, 2014 at 7:41 AM, Amit Kapila <amit.kapil...@gmail.com> wrote: >> I am just not sure whether it is okay to rearrange the code and call >> GetLastError() only if returned handle is Invalid (NULL) or try to look >> for more info. > > Well, I don't know either. You wrote the Windows portion of this > code, so you'll have to decide what's best. If the best practice in > this area is to only call GetLastError() if the handle isn't valid, > then that's probably what we should do, too. But I can't speak to > what the best practice is.
I have checked that other place in code also check handle to decide if API has failed. Refer function PGSharedMemoryIsInUse(). So I think fix to call GetLastError() after checking handle is okay. Attached patch fixes this issue. After patch, the server shows below log which is exactly what is expected from test_shm_mq LOG: registering background worker "test_shm_mq" LOG: starting background worker process "test_shm_mq" LOG: worker process: test_shm_mq (PID 4888) exited with exit code 1 LOG: unregistering background worker "test_shm_mq" LOG: registering background worker "test_shm_mq" LOG: starting background worker process "test_shm_mq" LOG: worker process: test_shm_mq (PID 3128) exited with exit code 1 LOG: unregistering background worker "test_shm_mq" With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com
fix_dsm_invalid_errcode_issue.patch
Description: Binary data
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers