Agile Zone is brought to you in partnership with:

Martin has worked with many customers in government, finance, manufacturing, health and technology to help them improve their processes and deliver more. He provides management and technical consulting that intends to expose processes and practices to gain transparency, uncover impediments to value delivery and reduce cycle-time as part of an organisations path to agility. Martin is a Professional Scrum Trainer as well as a Visual Studio ALM MVP and Visual Studio ALM Ranger. He writes regularly on http://nakedalm.com/blog, and speaks often on Scrum, good practices and Visual Studio ALM. You can get in touch with Martin through naked ALM. Martin is a DZone MVB and is not an employee of DZone and has posted 64 posts at DZone. You can read more from them at their website. View Full User Profile

Ghost team foundation build controllers

12.28.2010
| 2334 views |
  • submit to reddit

BuildIcon_Large

Quite often after an upgrade there are things left over. Most of the time they are easy to delete, but sometimes it takes a little effort. Even rarer are those times when something just will not go away no matter how much you try.

We have had a ghost team build controller hanging around for a while now, and it had defeated my best efforts to get rid of it.


The build controller was from our old TFS server from before our TFS 2010 beta 2 upgrade and was really starting to annoy me. Every time I try to delete it I get the message:

Controller cannot be deleted because there are build in progress
-Manage Build Controller dialog


SNAGHTMLa942cd 

Figure: Deleting a ghost controller does not always work.

I ended up checking all of our 172 Team Projects for the build that was queued, but did not find anything. Jim Lamb pointed me to the “tbl_BuildQueue” table in the team Project Collection database and sure enough there was the nasty little beggar.

image

Figure: The ghost build was easily spotted

Adam Cogan asked me:

“Why did you suspect this one?”


Well, there are a number of things that led me to suspect it:

  • QueueId is very low: Look at the other items, they are in the thousands not single digits
  • ControllerId: I know there is only one legitimate controller, and I am assuming that 6 relates to “zzUnicorn”
  • DefinitionId: This is a very low number and I looked it up in “tbl_BuildDefinition” and it did not exist
  • QueueTime: As we did not upgrade to TFS 2010 until late 2009 a date of 2008 for a queued build is very suspect
  • Status: A status of 2 means that it is still queued


This build must have been queued long ago when we were using TFS 2008, probably a beta, and it never got cleaned up. As controllers are new in TFS 2010 it would have created the “zzUnicorn” controller to handle any build servers that already exist. I had previously deleted the Agent, but leaving the controller just looks untidy.

Now that the ghost build has been identified there are two options:

  • Delete the row
    I would not recommend ever deleting anything from the database to achieve something in TFS. It is really not supported.
  • Set the Status to cancelled (Recommended)
    This is the best option as TFS will then clean it up itself


So I set the Status of this build to 2 (cancelled) and sure enough it disappeared after a couple of minutes and I was then able to then delete the “zzUnicorn” controller.

SNAGHTMLc40486

Figure: Almost completely clean

Now all I have to do is get rid of that untidy “zzBunyip” agent, but that will require rewriting one of our build scripts which will have to wait for now.

 

References
Published at DZone with permission of Martin Hinshelwood, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)