Over the last couple weeks, I've been doing tons of TFS work in preparation for getting my current team ready to roll on a new project. I've been very impressed with TFS overall, in particular the
MSF for Agile process template (which was a genuine surprise to be honest). I've discovered quite a bit about how TFS works and a lot of things its missing, but that's for a later day. Right now I just want to focus on one frustrating piece: the default reporting interval.
In addition to all the standard TFS goodness, we'll be using TFS for continuous integration as well. This poses some interesting "challenges", most of which have workarounds to get it to do what we want, but one of the most frustrating things I've run into is that when you run a build and it completes, the build doesn't show up in any of the reports right away. I thought this was kind of odd, but when I saw builds show up all of a sudden later on in the day, it became apparent that some of the TFS data is flushed based on some predefined interval.
This poses a problem in a CI environment because it sort of defeats the purpose of constant feedback. What's the point of running CI builds if you can't see the build reports until the end of the day or even tomorrow? Exactly, there isn't much point. And to me that is unacceptable.
I assumed TFS had a way to change the report interval setting, but with all the moving parts that TFS has I figured to be chasing the bouncing ball for awhile. And I was right. A number of Google searches didn't turn up much, except for this
MSDN Forums post, which was close but didn't provide the answer. So I did what I always do when Google fails me: I go through source code. Of course, not the actual source code in this case, but I used
Reflector to inspect a couple TFS assemblies (namely Microsoft.TeamFoundation.Warehouse.dll). Doing this provided some insight into the TFSWarehouse database, which I also took a look at.
What I found using Reflector and what I found in the database lead me to a more refined Google search, which lead me to
this post by Buck Hodges, which (finally!) had the answer I was looking for. I changed our report interval to 60 seconds (the default is 3600), ran a build and waited for it to complete. Sure enough, about a minute later the build showed up in the reports. That's much better.
BTW, Buck's post was written 4/19/2005 and is in reference to CPU load issues with Beta 2 of TFS. I'm can confirm that whatever issues they had with shorter report intervals has been taken care of with RTM. Since I changed our report interval to 60 seconds I've been monitoring the CPU on the TFS box and there have been no issues.
Print | posted on Thursday, November 30, 2006 10:44 AM