I use VMWare extensively in my daily job. Most of these are Windows virtual machines (VMs) that get refreshed on a fairly regular basis. We use the clone feature along with a customization script to refresh a VM. Add a perl script which uses the API to drive this process and it is fairly painless. If a change needs to be made to the VMs, we make the change to the template and the next time the VMs are refreshed, the change is propagated to all of the instances.
Recently, I needed to add a routine scheduled maintenance task to the VMs. Easy enough — I thought. I created the script that would perform the task. Tested it locally. All works. Tested that it works as a scheduled process. Great. Transferred it to a test VM. Performed the same tests. All is going according to plan. I add the script to the templates. I schedule the script to run at the specified times. Double check my work. Now just wait until we refresh the VMs.
After the refresh of the templates, I go to verify that the script is behaving as expected. Nope. Is the script there? Yes. Is the scheduled task there? Yes. Can the scheduled task run? No. Since our customization script creates new security IDs during the clone, the security ID associated with the scheduled tasks (which was valid in the template) is not valid in the cloned instance.
The work around was rather simple. In the customization script, there is an option to set a "Run Once" command that will execute the first time the new virtual machine is powered on. We already use this feature to invoke a batch file to download our latest code and do some configuration based on the machine name. I modified this batch file to use the "at" command to schedule the script. Test again. All looks good. Perform test clone. All looks good. Wait for VMs to refresh. Problem solved.
We were having an occasional hang issue with a Dell Server running Windows Storage Server. We monitored the processes on the server. We disabled as many services as possible. We kept trying to narrow down the issue. Nothing helped.
Eventually, our web searches pointed to a feature on these Dell machines with the name “TCP Offload Engine” (TOE). In the driver settings we disabled the TOE feature. Problem persisted. More research. Some people indicated that disabling the settings in the driver was not enough. A licensing key needed to be removed from the mother board. Suddenly, this has become hardware maintenance. This is where the power of a site like Flickr becomes apparent. After some additional web searching, we came across a couple of links showing exactly what needed to be done, step-by-step, with photos on Flickr. What sounded scary at first became simple as we followed the instructions on a development server.
FYI – this did not solve our problems. We ended up re-writing the section of code accessing the storage server and the problem went away. Sigh…
Scott Hanselman, on his Hanselminutes podcast interviewed Quetzal Bradley of Microsoft in show 103. I enjoyed the discussion because it covers two topics I find myself explaining to less technical managers time and time again:
- Why test coverage is a necessary but insufficient measure of when testing is done
- Why 100% automation is not necessarily a good thing
It is a quick listen – recommended.
One of the developers I work with keeps telling me that I should take a look at SQLite. We have an application that has a memory and CPU intensive data structure that SQLite might be a good use for. It has been on my list of things to learn more about for some time.
This morning, I discover that there is an interview with Richard Hipp in my feed from FLOSS Weekly. While not an overly technical interview, it is a great overview of SQLite, including typical applications, how the project came to be, how it was released to the public domain, etc.
I can imagine myself using SQLite, especially in some of the more data intensive test and evaluation scripts that I write. I just increased the priority of looking into SQLite.
A call for papers (CFP) for the Pacific Northwest Software Quality Conference (PNSQC) is currently active. This year’s conference (the 26th annual) will be held October 13-15, 2008 in Portland, OR. Presenting at a conference is an excellent way to sharpen your ideas and subject them to a rigorous examination by your peers. I have presented twice a PNSQC and found it to be a professional stretching activity.
Detailed information on the call can be found here. Abstracts must be submitted by April 20, 2008.