Team Foundation Server 2010 ve KB 983578 Güncellemesi

TFS2010mini

Microsoft dün (23 Ağustos 2010) Team Foundation Server 2010 ve Team Foundation Server 2010 clients için bir güncelleme yayınlandı (KB_983578). Hem TFS 2010 sunucularına hemde istemcilerine uygulanabilecek olan bu güncelleme ile birlikte aşağıdaki değişiklikler gelmekte;

  • Visual Studio 2010 Lab Management fonksiyonaliteleri aktif hale geliyor
  • TFS 2008’de oluşturulan label’lerın içeriğinde TFS 2010 güncellemesi sonrasında bir girdi bulunamaması problemi
  • Önceden güncellenmiş bir veritabanı kullanılarak uygulama katmanının yeniden kurulamaması problemi
  • Derleme raporunda çift changeset girdisi bulunma problemi
  • VS2008 çözümü test sonuçlarının başarısız bir test sonrasında yayınlanmaması problemi
  • Bir kontrolürün çalışmıyor olması durumunda derleme çıktılarının silinememesi problemi

ve daha bir çok başka problemi de çözmekte.

Bu kadar çok problemi çözen bir güncellemeyi kurmamanın yanlış olacağını düşünerek bilgisayarıma indirerek sanal bir makine üzerindeki denemeye çalıştım. Biraz şansız olacağım ki Windows Server 2008 R2 x64 yüklü olan bu sanal makinemde güncelleme yarıdayken hata vererek roolback yaptı. Aslında “yaptı” demek yerine “yapmaya çalıştı” demek daha doğru olacak; çünkü kurulumdan çıktığımda deneme TFS sunucuma başlanamıyordum Sad smile

İlk iş olarak uygulama katmanımın bulunduğu sunucunun olay bildirimlerini kontrol ettim ve aşağıdaki hata mesajına dair bir girdi buldum;

Service cannot be started. Microsoft.TeamFoundation.TeamFoundationServiceUnavailableException: TF246066: Team Foundation Server is offline. You must restart the software before you can continue. Administrator Reason: Servicing
at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.ThrowIfServiceUnavailable(HttpWebResponse response)
at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.ProcessHttpResponse(HttpWebResponse response, Stream responseStream, WebException webException, XmlReader& xmlResponseReader)
at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.ExecWebServiceRequest(HttpWebRequest request, XmlWriter requestXml, String methodName, HttpWebResponse& response)
at Microsoft.TeamFoundation.Framework.Client.LocationWebService.Connect(Int32 connectOptions, ServiceTypeFilter[] serviceTypeFilters, Int32 lastChangeId)
at Microsoft.TeamFoundation.Framework.Client.FrameworkServerDataProvider.Connect(ConnectOptions connectOptions)
at Microsoft.TeamFoundation.Client.TfsConnec…

TFSBuildServiceHost’undan gelen bu hata mesajı TFS sunucusu bakım çalışması nedeniyle Team Foundation Server’ımın çevrim dışı olduğunu söylüyordu. Hımm, bakım çalışması nedeniyle… çevrim dışı… bunlar aslında bana bir şeyler ifade eder gibiydi; daha önce bu mesajları görmüş gibiyim ama tam olarak hatırlayamıyordum.

Olay bildirimlerinde bulunan ve TFS servisince yapılan bir uyarıda ise aşağıda mesaj verilmekteydi;

TF53010: The following error has occurred in a Team Foundation component or extension:
Machine: VM_TFS_Test
Application Domain: TfsJobAgent.exe
Assembly: Microsoft.TeamFoundation.Framework.Server, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a; v2.0.50727
Service Host:
Process Details:
Process Name: TFSJobAgent
Process Id: 2800
Thread Id: 2108
Account name: VM_TFS_Test\tfsservice

Detailed Message: There was an error during job agent execution. The operation will be retried. Similar errors in the next five minutes may not be logged.
Exception Message: Servicing (type HostShutdownException)

Exception Stack Trace:    at Microsoft.TeamFoundation.Framework.Server.TeamFoundationServiceHost.ThrowIfShutdown()
at Microsoft.TeamFoundation.Framework.Server.TeamFoundationServiceHost.CreateSystemContext()
at Microsoft.TeamFoundation.Framework.Server.JobApplication.SetupInternal()
at Microsoft.TeamFoundation.Framework.Server.JobServiceUtil.RetryOperationsUntilSuccessful(RetryOperations operations)

Bir şekilde güncelleme ya da rollback sırasında TFS hizmetlerimin askıda kalmış olabileceğini düşünerek uygulama katmanımın bulunduğu sanal makineyi yeniden başlattım; fakat sonuç değişmemişti. TFS yönetim konsolunda başlanmaya çalıştığımda sadece “Servicing” yazan bir hata mesajı karşılıyordu beni. işin ilginci bu konsolda ne uygulama katmanı sunucuma ait bir bilgi ne de proje koleksiyonum artık görülmüyordu. Konu hakkında internet üzerinde araştırma yapsam da malesef ki bir neticeye ulaşamadım.

Daha sonrasında yavaş yavaş bu hata mesajı bana bir şeyler ifade etmeye başladı. Benzer bir mesajı mevcut proje koleksiyonlarımdan birisini çevrim dışına alırken kullanıcıyı bilgilendirmek amacıyla vermiştim ve bağlanmayı deneyen kullanıcılara bilgi amacıyla bu verdiğim mesaj gösteriliyordu. Şimdi artık doğru yoldaydım; fakat hala hedefe ulaşamamıştım. Bir şekilde güncelleme ve rollback sırasında TFS bu mesajı verecek şekilde ayarlanmış ve proje koleksiyonu çevrim dışı modda kalmıştı; peki eski haline nasıl geri getirebilirdim?

Eğer böylesi bir mesaj verilecek ve proje koleksiyonu çevrim dışı moda alınacaksa, bu işlemin kesinlikle Tfs_Configuration veritabanında yapılacağını düşünerek bu veritabanı içerisindeki tabloları dolaşmaya ve tanıdık bir şeyler aramaya başladım. Buradaki tabloları incelerken tbl_ServiceHost tablosuna sıra geldiğinde birden şimşekler çaktı. Artık daha önce benzer bir mesajı nerde aldığımı hatırlamıştım. TFS 2008’den TFS 2010’a güncelleme denemelerim sırasında bir şekilde TFS askıda kalmış ve araştırdığım kaynaklarda bu tablodaki Status alanını güncellemem gerektiğini  okumuştum. Gerçektende bu durumda da aynısını yapmak gerekiyordu. Bu tabloda yer alan proje koleksiyonlarıma baktığımda Status değeri 3 olan ve StatusReason değeri de “Servicing” olan bir girdi bulunuyordu, bingooo…

Bu satırı Status değeri 1 ve StatusReason değeri null olacak şekilde güncelledikten sonra TFS yönetim konsolunu yeniden açtığımda artık herşey normale dönmüştü…

Bence bu güncelleme piyasaya sürülmeden önce daha fazla test yapılması faydalı olurdu. Sizlere tavsiyem, çalışan sisteminizde güncelleme yapmadan önce sanal bir makine deneme yaparak veri kaybının önüne geçmeniz, ya da en azından güncelleme öncesinde kesinlikle veritabanının bir yedeğini almanız.

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook - Google+

3 yorum

  1. cemil   •  

    güzel bir bilgilendirme olmuş.

  2. Ediz   •  

    Teşekkür ederim. Hayat kurtarıcı oldu. Lab management için bu güncellemeyi yaptım ve kurumsal sunucumuz aynen aşağıya indi. Çözümüde iyi bulmuşsun, eline sağlık.

    • Fatih Boy   •     Yazar

      Merhaba Ediz,
      Paylaştığım tecrübemin size faydası olmasına sevindim. Şunu belirtmeden geçemeyeceğim; TFS veritabanına bu şekildeki müdahaleler Microsoft’un pek de onayladığı çözümler değil. Bu hatayı almadan önceki bir tarihe ait bir yedeğinizi var ise size tavsiyem mümkünse bunu geri yüklemeniz olacak. Çünkü gelen geri bildirimlerden gördüğüm kadarıyla bazı senaryolarda sistem tutarsız bir duruma düşerek bir sonraki güncelleme işleminde bu durum tekrar edebiliyor. Kimi geri bildirimlerde de TFS’nin baştan kurularak yedeklerin import edildiğini dahi öğrendim.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir