DPM 2012 R2 UR3 Sonrası Administrator Console Crash Problemi

System Center 2012 R2 yönetim araçları için üçüncü toplu güncelleme paketi Update Rollup 3 (UR3) geçen ay yayımlanmıştı. System Center 2012 R2 – Data Protection Manager, Operations Manager, Orchestrator, Service Manager ve Virtual Machine Manager için düzeltmeler içeren bu toplu güncelleme paketleri her araç için ayrı ayrı gönderildi. Aşağıdaki bağlantılardan System Center 2012 R2 araçları için Update Rollup 3 güncellemelerine ve bu güncelleme paketleriyle düzeltilen sorunlar hakkında ayrıntılı bilgiye ulaşabilirsiniz.

System Center 2012 R2 araçları için UR3 güncellemeleri aynı zamanda Microsoft Update üzerinden de gönderiliyor. Eğer sunucu görevleri, yönetim konsolları gibi parçaların çalıştığı işletim sistemleri otomatik güncelleştirmedeyse ve yama yönetimi kontrolleriniz yoksa, UR3 paketleri çoktan yüklenmiş bile olabilir.

System Center 2012 R2 UR3 Sonrası DPM Administrator Console Crash Problemi

Tüm yüklemeler için geçerli olmasa da (nedenleri yazının ilerleyen bölümlerinde yer alıyor) System Center 2012 R2 Data Protection Manager Administrator Console’un çalıştığı işletim sistemi üzerine Update Rollup 3 yüklendikten sonra Administrator Console’u açmak istediğinizde bir mmc.exe hatası alabilirsiniz. DPM Administrator Console’u sağlayan Microsoft Management Console’da (mmc.exe) yaşanan ve hataya dönüşen bu istisnai durum, Protection Group’ların listelendiği Protection bölümündeki içerik oluşturulurken ortaya çıkıyor ve yönetim arayüzünün beklenmedik şekilde sonlanmasına (crash) neden oluyor.

mmc has stopped working

mmc has stopped working

Hata Detayları

Description:
AppName: mmc AppVer: 4.2.1205.0 ModName: mmc.exe
ModVer: 6.1.7600.16385 StackHash: 043CCE4C

Problem signature:
Problem Event Name: DPMException
Application Name: mmc
Application Version: 4.2.1205.0
Module Name: mmc.exe
Module Version: 6.1.7600.16385
Exception Name: System.InvalidOperationException
Exception Point: Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderIMCatalogType.Read24_VssBackupModeType
Other: 043CCE4C
OS Version: 6.1.7601.2.1.0.274.10
Locale ID: 1033

Hata Olay Kaydı (Windows Event Log)

Source MSDPM Event ID 999

The description for Event ID 999 from source MSDPM cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.

If the event originated on another computer, the display information had to be saved with the event.

The following information was included with the event:

An unexpected error caused a failure for process ‘mmc’. Restart the DPM process ‘mmc’.

Problem Details:
<FatalServiceError><__System><ID>19</ID><Seq>0</Seq><TimeCreated>8/21/2014 4:26:04 PM</TimeCreated>
<Source>DpmThreadPool.cs</Source><Line>163</Line><HasError>True</HasError></__System>
<ExceptionType>SqlNullValueException</ExceptionType>
<ExceptionMessage>Data is Null. This method or property cannot be called on Null values.</ExceptionMessage>
<ExceptionDetails>System.Data.SqlTypes.SqlNullValueException: Data is Null. This method or property cannot be called on Null values.
at System.Data.SqlClient.SqlBuffer.get_String()
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.ProtectionGroup.ReadBackupAndCCWindow()
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.ProtectionGroup.get_BackupWindow()
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.ProtectionGroup.GetPerformanceString()
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ProtectedGroupUIElement.AddPerformanceData()
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ProtectedGroupUIElement.ConstructDetailsPaneContent()
at Microsoft.Internal.EnterpriseStorage.Dls.UI.CommonControls.UISearchableElement.get_DetailNameValuePairs()
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ProtectedGroupUIElement.DisplayDetails()
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ProtectionViewInternal.FillGroupDetails(GroupingListHeaderItem group)
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ProtectionViewInternal.UpdateDetailsPane()
at System.EventHandler.Invoke(Object sender, EventArgs e)
at Microsoft.Internal.EnterpriseStorage.UI.CommonControls.GroupingListItemCollection.
SelectedItemsCollectionRole.ProcessItemAdded(Int32 index, GroupingListItem item)
at System.Collections.CollectionBase.System.Collections.IList.Add(Object value)
at Microsoft.Internal.EnterpriseStorage.UI.CommonControls.GroupingListView.item_SelectedChanged(Object sender, EventArgs e)
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ProtectionViewInternal.SelectAppropriateListItem()
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ProtectionViewInternal.protectionGroupCollectionInitializedHandler(Object sender, ProtectionGroupCollectionEventArgs eventArgs)
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.OMCommon.DpmServer.IssueProtectionGroupCollectionInitialized(Object sender)
at Microsoft.Internal.EnterpriseStorage.Dls.UI.ObjectModel.Utils.ThreadMarshaller.Raise(Object state)</ExceptionDetails></FatalServiceError>

İstisnai Durumun (Hatanın) Oluştuğu Senaryo

System Center 2012 R2 DPM Server (with Administrator Console) üzerine veya Administrator Console’un yüklü olduğu uzak işletim sistemi üzerine Update Rollup 3 geçtikten sonra Administrator Console’u açıp Protection bölümüne ilk tıkladığınızda (veya konsol varsayılan olarak Protection bölümünde açıldığında) bu konsolu sağlayan mmc.exe çalışmayı durdurup (crash) ekrana bir hata penceresi çıkartabilir. Ancak bu sırada, hata penceresini kapmadığınız sürece arka planda DPM Administrator Console ile çalışmaya devam edebilirsiniz. Bu durumdayken mevcut Protection Group’ları düzenleyebilir, yenilerini oluşturabilir veya yeni sunucuları yedekleme sistemine dahil edebilirsiniz. MMC tarafından üretilen hata penceresini kapattığınız anda ise ilgili mmc.exe sonlanır ve beraberinde DPM Administrator Console da kapanır.

Eğer UR3 yükleme öncesinde System Center 2012 R2 DPM Administrator Console’u Management, Reporting, Recovery veya Monitoring gibi bölümlerden birinde çalışırken kapattıysanız, UR3 yükleme sonrasında yönetim konsolunu tekrar açtığınızda aynı bölümü yükleyerek başlar ve mmc.exe hatası oluşmaz. Eğer Protection bölümü ile başlamaya çalışırsa veya başladıktan sonra siz Protection bölümünü tıklarsanız mmc.exe hatası yine ortaya çıkar.

DPM Administrator Console - Protection

Geçmişte benzer bir durum DPM 2010’dan DPM 2012’ye yükseltilen ortamlarda yaşanabiliyordu ve etkisi bir Protection Group’u düzenlerken konsolun crash olması veya bir yedekleme görevi çalışırken DPM servisinin crash olması şeklinde hissediliyordu.

DPM Administrator Console’un çalıştığı işletim sisteminden (DPM Server görevi hala UR3 olabilir) UR3 yüklemesini kaldırdığınızda hata ortadan kalkıyor ve Protection bölümüne rahatlıkla girebiliyorsunuz. Ama bu gerçek bir çözüm sayılmaz. Sadece Workaround olarak kıyıda dursun.

Hatayı anlamak için problemin yaşandığı senaryoyu debug ederken, hata anında oluşan olay kaydı içeriğinin değiştiğini ama aynı event id’ye sahip olduğunu fark ettim. Yani crash durumu için her seferinde aynı event id düşüyor ama içeriği farklı olabiliyor (iki varyasyon). Oluşan ikinci MSDPM 999 kaydı aşağıdaki gibi.

Source MSDPM Event ID 999

The description for Event ID 999 from source MSDPM cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.

If the event originated on another computer, the display information had to be saved with the event.

The following information was included with the event:

An unexpected error caused a failure for process ‘mmc’.  Restart the DPM process ‘mmc’.

Problem Details:
<FatalServiceError><__System><ID>19</ID><Seq>0</Seq><TimeCreated>8/22/2014 1:30:54 PM</TimeCreated><Source>DpmThreadPool.cs</Source><Line>163</Line><HasError>True</HasError></__System>
<ExceptionType>InvalidOperationException</ExceptionType><ExceptionMessage>Instance validation error: ‘FullBackup’ is not a valid value for VssBackupModeType.</ExceptionMessage>
<ExceptionDetails>System.InvalidOperationException: Instance validation error: ‘FullBackup’ is not a valid value for VssBackupModeType.
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderIMCatalogType.Read24_VssBackupModeType(String s)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderIMCatalogType.Read26_DataSourceType(Boolean isNullable, Boolean checkType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderIMCatalogType.Read57_IMCatalogType(Boolean isNullable, Boolean checkType)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderIMCatalogType.Read58_se_x0020_IMCatalog()</ExceptionDetails></FatalServiceError>

Aralarındaki fark ise şu: Olay kayıtlarından (event) ilki Data is NULL diyorken ikincisi Instance validation error: ‘FullBackup’ is not a valid value for VssBackupModeType diyor. Yani aslında aynı hataya neden olan iki farklı durum var ortada.

Hatanın Oluşma Nedenleri

DPMDB içinde Protection Group’ların (PG) ayarlar gibi çeşitli bilgilerini tutan XML tabanlı veri alanları var. DPM Administrator Console, üzerindeki verileri bu alanlardan okuyarak oluşturuyor ki bunların başında da Protection bölümü yer alıyor. Kullandığım yöntemlerden bahsetmeyeceğim ama debug sonrasında şu sonuca ulaştım: Bu sorun DPMDB’de PG bilgilerinin yer aldığı tbl_IM_ProtectedGroup tablosunun IMCatalogXML alanında veri bulunmamasından (NULL) veya Administrator Console’un anlayamadığı kısmen hatalı veri (FullBackup) bulunmasından kaynaklanıyor.

DPMDB - tbl_IM_ProtectedGroup - IMCatalogXML

Bu boş veya doğru işlenemeyen XML verileri benim senaryomda DPM 2010’dan DPM 2012 R2’ye geçerken gelmiş (belki de kalmış) veya geçiş işlemindeki bir hata yüzünden oluşmuş. System Center DPM sürümlerinin Administrator Console > Protection bölümünde yer alan PG bilgileri DPMDB > tbl_IM_ProtectedGroup tablosundaki verilerden oluşturulduğu için de eğer burada DPM Administrator Console için anlamlı olmayan bir XML veri varsa ve bu durum için DPM Administrator Console kodunda bir hata yakalama mekanizması yoksa (görünen o ki UR3 için bu istisnai durum yakalanamıyor) ortaya bu crash problemi çıkıyor.

Aslına bakarsanız DPM 2010’dan DPM 2012 R2’ye geçiş sonrasında henüz UR3 yüklü olmayan DPM ve Administrator Console, DB’de hatalı veri olmasına rağmen konsol crash olmadan tüm PG’leri gösterebiliyordu. Ne zaman ki konsolun çalıştığı sunucuya UR3 geçildi, o andan itibaren DPM Administrator Console Protection bölümünü yüklerken crash olmaya başladı. Hatta bu sırada, uzak bir sunucu üzerine sadece DPM Administrator Console’u yüklediğimizde ve UR3 yüklemediğimizde Protection bölümünde aynı PG’leri düzgün gösterebildiğini de gözlemledik. Muhtemelen UR3 sonrasında DPM Administrator Console’u farklılaştıran bir kod veya bir bug var. Hata anında düşen iki farklı olay kaydının nedenleri de aşağıdaki gibi.

Exception Message Data is Null

MSDPM 999 - Data is Null

Bu olay kaydı, PG için tbl_IM_ProtectedGroup tablosunun IMCatalogXML alanında hiçbir veri yoksa yani NULL ise oluşuyor.

tbl_IM_ProtectedGroup

Instance validation error: ‘FullBackup’ is not a valid value for VssBackupModeType

MSDPM 999 - FullBackup VssBackupModeType

Bu olay kaydı ise PG için tbl_IM_ProtectedGroup tablosunun IMCatalogXML alanında yer alan XML içeriğinde işlenirken istisnai durum oluşturan bir veri varsa oluşuyor. Doğru işlenemeyen veri ise XML içindeki <AllowedBackupType>FullBackup</AllowedBackupType> alanı. DPM Administrator Console Protection bölümünde ilk hangi durumdaki PG’yi yüklemeyi denerken crash oluşursa, olay günlüğüne de o olay kaydı atılıyor.

Çözüm

Öncelikle DPMDB’de hangi Protection Group kayıtlarının sorunlu olduğunu tespit edin. Bu sorunu yaşayan PG’lerin IMCatalogXML verileri aşağıdaki iki durumdan birinde olabilir.

  • Veri yoktur. (NULL)
  • Veri vardır ancak içerisinde <AllowedBackupType>FullBackup</AllowedBackupType> geçiyordur.

Eğer bir PG için IMCatalogXML alanında veri yoksa (yani NULL durumdaysa), en hızlı ve kesin çözüm o PG’yi bir kez modify etmek yani düzenlemek. Veya silip tekrar oluşturabilirsiniz. Ama modify etmek çok daha kısa sürecektir.

DPM - Modify protection group

Eğer bir PG için IMCatalogXML alanında veri varsa ama içinde <AllowedBackupType>FullBackup</AllowedBackupType> geçiyorsa, bunun <AllowedBackupType>Regular</AllowedBackupType> ile değiştirilmesi gerekir. İlgili PG’yi modify ederek bu değişikliğin kendiliğinden gerçekleşmesini sağlayabilirsiniz. Ama öncelikle sorun yaşanan PG’leri tespit etme yoluna gidin çünkü eğer çok fazla PG varsa, tek tek modify ile uğraşmak uzun sürebilir.

SQL Query’leri DPMDB üzerinde çalıştırmadan önce mutlaka DB yedeği alın.

Aşağıdaki basit SQL Query’i DPMDB üzerinde çalıştırarak hangi PG’lerde bu sorunun yaşandığını listeleyebilirsiniz.

SQL Query - IMCatalogXML - FullBackup

Bu PG’leri topluca <AllowedBackupType>Regular</AllowedBackupType> ile güncellemek için ise aşağıdaki SQL Query işinizi görür.

update tbl_IM_ProtectedGroup
SET IMCatalogXML = replace(cast(IMCatalogXML as nvarchar(max)), ‘<AllowedBackupType>FullBackup’, ‘<AllowedBackupType>Regular’)
from tbl_IM_ProtectedGroup where IMCatalogXML like ‘%<AllowedBackupType>FullBackup%’

SQL Query - AllowedBackupType - Regular

Sonuç olarak benim senaryomdaki bu sorun System Center 2010 DPM’den System Center 2012 R2 DPM’e geçiş sonrasında, DPMDB’de PG bilgilerini tutan tbl_IM_ProtectedGroup tablosundaki IMCatalogXML verilerinin bir nedenden ötürü doğru taşınamaması (veya zaten geçiş öncesinde o durumda olmaları) ve bu alanlardan veri okuyan DPM Administrator Console’un UR3 sonrasında veriyi doğru işleyemeyerek (veya istisnai durumu doğru yakalayamayarak) crash olmasından kaynaklanıyor. Eğer DPMDB > tbl_IM_ProtectedGroup >  IMCatalogXML alanındaki veriler zaten olması gerektiği gibiyse, System Center 2012 R2 Update Rollup 3 sonrasında bu sorun yaşanmaz.

Yazı Etiketleri: ,

Sayfa Başı ▲

Yorum Ekle