Hello again, I can't see any other way of solving this problem without either exposing a method on JobThread to delete the Job owned by the thread which is called by https://github.com/postgres/pgagent/blob/master/pgAgent.cpp#L139 or another method that only gives up the connection which is called in the same place as the delete jt.
Is there a problem with chaining the ~JobThread() and ~Job() together as I suggested previously? This does solve the leak. Many Thanks, Rob On 23 October 2017 at 20:09, Rob Emery <re-pg...@codeweavers.net> wrote: > Hiya, > > I've just confirmed neither of these patches resolve the issue, it appears > in the error case I'm experiencing the JobThread::Entry() never executes. > > To clarify I'm talking about the path entering the else in pgAgent.cpp:125 > which will save into pga_joblog with jlgstatus = "i" > > This path explicitly deletes jt however deleting jt doesn't clean up the > connection, hence why I cascaded the delete in the original patch. > > I hope that makes sense > > Thanks, > Rob > > On 23 October 2017 at 08:18, Neel Patel <neel.pa...@enterprisedb.com> > wrote: > >> Hi Ashesh, >> >> I just added condition before delete the job otherwise it looks good. >> Correct me if I am wrong. >> >> if (job != NULL) >> { >> delete job; >> job = NULL; >> } >> >> I have created two instances of pgagent on database cluster. As of now >> not able to see any leak and keep you updated if found anything. >> >> @Robert - Can you also test at your environment and keep us updated for >> any leak ? >> >> Thanks, >> Neel Patel >> >> On Mon, Oct 23, 2017 at 10:30 AM, Ashesh Vashi < >> ashesh.va...@enterprisedb.com> wrote: >> >>> Hi Rob, >>> >>> How about this? >>> >>> >>> -- >>> >>> Thanks & Regards, >>> >>> Ashesh Vashi >>> EnterpriseDB INDIA: Enterprise PostgreSQL Company >>> <http://www.enterprisedb.com> >>> >>> >>> *http://www.linkedin.com/in/asheshvashi* >>> <http://www.linkedin.com/in/asheshvashi> >>> >>> On Sat, Oct 21, 2017 at 8:36 PM, Rob Emery <re-pg...@codeweavers.net> >>> wrote: >>> >>>> Hi, >>>> >>>> Following on from https://www.postgresql.org/mes >>>> sage-id/CA%2BOCxoz4tONxSpd1rdU-9SPKRzucz8Bar2CXkEDnCwV6H77Zy >>>> A%40mail.gmail.com >>>> >>>> I think I've identified and fixed the issue, please see the patch >>>> attached. >>>> >>>> As I understand it when there are multiple pgagent instances and they >>>> clash executing a job (i.e rc != 1 on job.cpp:38), the loser of the >>>> conflict's thread will never be executed (i.e. job.cpp:418 >>>> JobThread::Entry), which is responsible for deleting the job owned by the >>>> thread, meaning that the connection is never returned to the pool. By >>>> moving the delete of the job into the destructor, we can assure that the >>>> connection is tidied up in both cases as the thread is deleted in the error >>>> case explicitly in pgAgent.cpp:185. >>>> >>>> The only possibly unintended difference that I can see with doing this >>>> is that the log "Completed job: %s" is now output when before it wasn't, >>>> however I think this new behaviour is actually correct as the job object is >>>> completed at that time. >>>> >>>> Thanks, >>>> Rob >>>> >>>> <https://codeweavers.net> >>>> >>>> >>>> <http://us15.campaign-archive1.com/?u=fcb361cfa194cf70551bc5169&id=f556b0bf09> >>>> Codeweavers >>>> October >>>> Newsletter >>>> <http://us15.campaign-archive1.com/?u=fcb361cfa194cf70551bc5169&id=f556b0bf09> >>>> *l *Auto Trader extends partnership with Codeweavers >>>> <https://codeweavers.net/company-blog/auto-trader-extends-partnership-with-codeweavers-to-power-finance-on-auto-trader-websites> >>>> >>>> >>>> <https://codeweavers.net/automotive-vision-conference-agenda> >>>> >>>> *What are Codeweavers doing to gear up for GDPR? >>>> <https://codeweavers.net/company-blog/what-are-codeweavers-doing-to-gear-up-for-gdpr>* >>>> >>>> >>>> >>>> *Phone:* 0800 021 0888 * Email: *contac...@codeweavers.net >>>> *Codeweavers Ltd* | Barn 4 | Dunston Business Village | Dunston | ST18 >>>> 9AB >>>> Registered in England and Wales No. 04092394 | VAT registration no. 974 >>>> 9705 63 >>>> >>>> -- >>>> Robert Emery >>>> Infrastructure Director >>>> >>>> E: robertem...@codeweavers.net | T: 01785 711633 | W: >>>> www.codeweavers.net >>>> >>> -- Robert Emery Infrastructure Director E: robertem...@codeweavers.net | T: 01785 711633 | W: www.codeweavers.net -- <http://www.codeweavers.net> Robert Emery Infrastructure Director E: <http://www.codeweavers.net>robertem...@codeweavers.net | T: 01785 711633 | W: www.codeweavers.net -- <https://codeweavers.net> <http://us15.campaign-archive1.com/?u=fcb361cfa194cf70551bc5169&id=f556b0bf09> Codeweavers October Newsletter <http://us15.campaign-archive1.com/?u=fcb361cfa194cf70551bc5169&id=f556b0bf09> *l *Auto Trader extends partnership with Codeweavers <https://codeweavers.net/company-blog/auto-trader-extends-partnership-with-codeweavers-to-power-finance-on-auto-trader-websites> <https://codeweavers.net/automotive-vision-conference-agenda> *What are Codeweavers doing to gear up for GDPR? <https://codeweavers.net/company-blog/what-are-codeweavers-doing-to-gear-up-for-gdpr>* *Phone:* 0800 021 0888 * Email: *contac...@codeweavers.net *Codeweavers Ltd* | Barn 4 | Dunston Business Village | Dunston | ST18 9AB Registered in England and Wales No. 04092394 | VAT registration no. 974 9705 63 <https://www.linkedin.com/company/codeweavers-limited> <https://vimeo.com/codeweaversltd> [image: https://plus.google.com/b/105942302039373248738/+CodeweaversNet] <https://plus.google.com/b/105942302039373248738/+CodeweaversNet> [image: https://twitter.com/CodeweaversTeam] <https://twitter.com/CodeweaversTeam>