tinderd's auto-delete queue entry

Joe Marcus Clarke marcus at freebsd.org
Mon Jul 21 17:03:46 EDT 2008


Ion-Mihai Tetcu wrote:
> On Mon, 21 Jul 2008 16:47:08 -0400
> Joe Marcus Clarke <marcus at freebsd.org> wrote:
> 
>> Ion-Mihai Tetcu wrote:
>>> Hi,
>>>
>>> From the README:
>>>  Now use:
>>>  
>>>  # cd ${pb}/scripts && ./tc addBuildPortsQueueEntry -b {BUILD} \
>>>          -d {PORT DIRECTORY}
>>>  
>>>  To add a port to the queue. tinderd will automatically pick it up,
>>> run a tinderbuild on it, and will delete the entry after
>>> tinderbuild completed.
>>>
>>> Now, my QA Tindy does something like:
>>>  > grep -C 3 ENQUEUED QAT_tinder_commit.sh
>>>                         ${TC} addPort -b ${BUILD} -d ${PORT}
>>> #                       ${TC} addBuildPortsQueueEntry -b ${BUILD}
>>> -d ${PORT} -p ${PRIORITY} QR="insert into build_ports_queue
>>> (Build_Ports_Queue_Id, Enqueue_Date, Build_Id, User_Id,
>>> Port_Directory, Priority, Host_Id, Email_On_Completion, Status) \
>>> values (NULL, NOW(), ${BUILD_ID}, 1, \"${PORT}\", ${PRIORITY}, 1,
>>> 0, 'ENQUEUED'); \ insert into commit_mails \ values (NULL,
>>> \"${MAIL_ID}\", \"`echo ${COMMITTER} | sed 's/"/\\"/g'`\",
>>> \"${COMM_DATE}\", \"${TO}\", \"${SUBJ}\", LAST_INSERT_ID());"
>>> ${MYSQL} -e "${QR}"
>>>
>>> and this queue entries are NOT deleted after the build finishes.
>>> Note that I can not use addBuildPortsQueueEntry anymore (commented
>>> above) because I need that LAST_INSERT_ID.
>>>
>>> For "regular" builds I use:
>>>   ${TC} addBuildPortsQueueEntry -b ${BUILD} -d ${PORT} -p
>>> ${PRIORITY} and this queue entries ARE deleted after the build is
>>> finished.
>>>
>>> Queue entries added via the web interface are also not deleted.
>>>
>>> 1. I believe there was a bug here that was silently corrected
>>> recently since I was using addBuildPortsQueueEntry in both cases
>>> and in neither the queue entries were deleted?
>> Entries older than 25200 seconds (7 minutes) which are not ENQUEUED
>> are deleted every time reorgBuildPortsQueue is called (by tinderd).
> 
> And that is called when?

In tinderd after a build has completed.  The SQL associated with it is:

DELETE FROM build_ports_queue WHERE Host_Id=? AND Enqueue_Date<=? AND 
Status != 'ENQUEUED'

> 
>> As long as you're setting the queue status properly (which is also
>> done by tinderd), then this pruning should be happening.
> 
> At 23:52:45 local time:
> 
>  # mysql -utinderbox -p -Dtinderbox -e "select * from build_ports_queue\G"
> *************************** 1. row ***************************
> Build_Ports_Queue_Id: 5245
>         Enqueue_Date: 2008-07-21 21:35:13
>      Completion_Date: 2008-07-21 22:49:51
>             Build_Id: 5
>              User_Id: 1
>       Port_Directory: finance/aqmoney
>             Priority: 9
>              Host_Id: 1
>  Email_On_Completion: 0
>               Status: SUCCESS
> *************************** 2. row ***************************
> Build_Ports_Queue_Id: 5246
>         Enqueue_Date: 2008-07-21 21:53:19
>      Completion_Date: 2008-07-21 22:35:59
>             Build_Id: 5
>              User_Id: 1
>       Port_Directory: finance/cbb
>             Priority: 9
>              Host_Id: 1
>  Email_On_Completion: 0
>               Status: SUCCESS
> *************************** 3. row ***************************
> Build_Ports_Queue_Id: 5252
>         Enqueue_Date: 2008-07-21 22:22:52
>      Completion_Date: 2008-07-21 22:24:57
>             Build_Id: 5
>              User_Id: 1
>       Port_Directory: x11/tint
>             Priority: 5
>              Host_Id: 1
>  Email_On_Completion: 0
>               Status: SUCCESS
> *************************** 4. row ***************************
> Build_Ports_Queue_Id: 5253
>         Enqueue_Date: 2008-07-21 22:53:21
>      Completion_Date: 2008-07-21 23:22:18
>             Build_Id: 5
>              User_Id: 1
>       Port_Directory: finance/eqonomize
>             Priority: 9
>              Host_Id: 1
>  Email_On_Completion: 0
>               Status: SUCCESS
> *************************** 5. row ***************************
> Build_Ports_Queue_Id: 5254
>         Enqueue_Date: 2008-07-21 22:55:30
>      Completion_Date: 2008-07-21 23:24:35
>             Build_Id: 5
>              User_Id: 1
>       Port_Directory: devel/p5-SVN-Notify-Filter-EmailFlatFileDB
>             Priority: 5
>              Host_Id: 1
>  Email_On_Completion: 0
>               Status: SUCCESS
> 
>  [ .. ]
> 
>>> Or maybe I have a trigger broken in my MySQL database?
>>>
>>> 3. I suppose the delete from queue is done after running
>>> postPortBuild Hook, right?
>> It's done by tinderd.
> 
> Hmm. I need to be sure I still have the queue entry when postPortBuild
> is run.

If you're running tinderd, then you have nothing to worry about.  All 
Hooks will be called before the queue is reorg'd.

Joe

> 


-- 
Joe Marcus Clarke
FreeBSD GNOME Team	::	gnome at FreeBSD.org
FreeNode / #freebsd-gnome
http://www.FreeBSD.org/gnome


More information about the tinderbox-list mailing list