// Token: 0x060011CE RID: 4558 RVA: 0x0004A490 File Offset: 0x00048690
        public Exception InitializeHealthInfoFromXML()
        {
            DbCopyHealthInfoInternalTable.Tracer.TraceDebug <string>((long)this.GetHashCode(), "InitializeHealthInfoFromXML: Initializing the health info table from file '{0}'", this.m_filePath);
            HealthInfoPersisted healthInfoPersisted;
            Exception           ex = DataContractSerializeHelper.DeserializeFromXmlFile <HealthInfoPersisted>(this.m_filePath, out healthInfoPersisted);

            if (ex == null)
            {
                DbCopyHealthInfoInternalTable.Tracer.TraceDebug((long)this.GetHashCode(), "InitializeHealthInfoFromXML: Successfully deserialized the XML file.");
                DateTime lastUpdateTimeUtc = healthInfoPersisted.GetLastUpdateTimeUtc();
                TimeSpan timeSpan          = DateTimeHelper.SafeSubtract(DateTime.UtcNow, lastUpdateTimeUtc);
                if (timeSpan > DatabaseHealthTracker.LastUpdateTimeDiffThreshold)
                {
                    DbCopyHealthInfoInternalTable.Tracer.TraceError <TimeSpan, TimeSpan, DateTime>((long)this.GetHashCode(), "InitializeHealthInfoFromXML: The file was last modified too long ago at '{2}'! lastUpdateTimeDiff = '{0}', Threshold = '{1}'", timeSpan, DatabaseHealthTracker.LastUpdateTimeDiffThreshold, lastUpdateTimeUtc);
                    ReplayCrimsonEvents.DHTInitFromFileTooOld.Log <DateTime, TimeSpan, TimeSpan>(lastUpdateTimeUtc, timeSpan, DatabaseHealthTracker.LastUpdateTimeDiffThreshold);
                }
                this.InitializeFromHealthInfoPersisted(healthInfoPersisted);
                return(null);
            }
            this.CreateTimeUtc = DateTime.UtcNow;
            this.IsFileNotReadAtInitialization = true;
            if (ex is FileNotFoundException || ex is DirectoryNotFoundException)
            {
                DbCopyHealthInfoInternalTable.Tracer.TraceDebug((long)this.GetHashCode(), "InitializeHealthInfoFromXML: Initialization of health info table will be skipped because the XML file was not found.");
                DbCopyHealthInfoInternalTable.Tracer.TraceDebug <DateTime>((long)this.GetHashCode(), "A new health table is possibly being created. CreateTimeUtc = {0}", this.CreateTimeUtc);
                ReplayCrimsonEvents.DHTInitFileNotFound.Log <string>(this.m_filePath);
                return(null);
            }
            DbCopyHealthInfoInternalTable.Tracer.TraceError <Exception>((long)this.GetHashCode(), "InitializeHealthInfoFromXML: Initialization of health info table failed because the XML file could not be deserialized. Error: {0}", ex);
            return(ex);
        }