Unix Technical Forum

SEO

vBulletin Search Engine Optimization


Go Back   Unix Technical Forum > Database Server Software > PostgreSQL > pgsql Interfaces Pgadmin Support

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-17-2008, 08:13 PM
Brian Kalbfus
 
Posts: n/a
Default Quick pgagent bug fix

I have two jobs scheduled and the second one ran every poll interval,
regardless of any schedule I put in it. I traced the cause to the "host
agent" field being populated.

Looking at the source of pgAgent.cpp, from 5 weeks ago, I see the
following query being used to check if the agent should run the job:

*while* (1)
{
*bool* foundJobToExecute=false;

LogMessage(_(*"Checking for jobs to run"*), LOG_DEBUG);
DBresult *res=serviceConn->Execute(
wxT(*"SELECT J.jobid "*)
wxT(*" FROM pgagent.pga_job J "*)
wxT(*" WHERE jobenabled "*)
wxT(*" AND jobagentid IS NULL "*)
wxT(*" AND jobnextrun <= now() "*)
wxT(*" AND jobhostagent = '' OR jobhostagent = '"*) + hostname + wxT(*"'"*)
wxT(*" ORDER BY jobnextrun"*));

*if* (res)


......


The SQL will return a row if the jobhostagent field matches every time (the OR clause is on the same level as all the AND clauses). We need to group the last two clauses:

*while* (1)
{
*bool* foundJobToExecute=false;

LogMessage(_(*"Checking for jobs to run"*), LOG_DEBUG);
DBresult *res=serviceConn->Execute(
wxT(*"SELECT J.jobid "*)
wxT(*" FROM pgagent.pga_job J "*)
wxT(*" WHERE jobenabled "*)
wxT(*" AND jobagentid IS NULL "*)
wxT(*" AND jobnextrun <= now() "*)
wxT(*" AND (jobhostagent = '' OR jobhostagent = '"*) + hostname + wxT(*"')"*)
wxT(*" ORDER BY jobnextrun"*));

*if* (res)




......


this bug would be reproduced by populating the host agent field of any
job with the full dns name of your server running pgagent. Look at the
debug log of pgagent and you'll see it run that job every poll
interval. I don't have a build environment to test this with, but I'm
sure the change I'm recommending to the SQL will fix this bug.

Thanks,
Brian Kalbfus

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faq

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 04-17-2008, 08:13 PM
Dave Page
 
Posts: n/a
Default Re: Quick pgagent bug fix

Brian Kalbfus wrote:
>
> The SQL will return a row if the jobhostagent field matches every time
> (the OR clause is on the same level as all the AND clauses). We need to
> group the last two clauses:


Thanks Brian, I've applied a patch per your suggestion.

Regards, Dave.

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faq

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 06:39 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145