コード例 #1
0
        private static SeederRpcFlags GetReseedRPCReason(CatalogAutoReseedWorkflow.CatalogAutoReseedReason reason)
        {
            switch (reason)
            {
            case CatalogAutoReseedWorkflow.CatalogAutoReseedReason.BehindBacklog:
                return(SeederRpcFlags.CIAutoReseedReasonBehindBacklog);

            case CatalogAutoReseedWorkflow.CatalogAutoReseedReason.BehindRetry:
                return(SeederRpcFlags.CIAutoReseedReasonBehindRetry);

            case CatalogAutoReseedWorkflow.CatalogAutoReseedReason.Upgrade:
                return(SeederRpcFlags.CIAutoReseedReasonUpgrade);

            case CatalogAutoReseedWorkflow.CatalogAutoReseedReason.CatalogCorruptionWhenFeedingStarts:
                return(SeederRpcFlags.CatalogCorruptionWhenFeedingStarts);

            case CatalogAutoReseedWorkflow.CatalogAutoReseedReason.CatalogCorruptionWhenFeedingCompletes:
                return(SeederRpcFlags.CatalogCorruptionWhenFeedingCompletes);

            case CatalogAutoReseedWorkflow.CatalogAutoReseedReason.EventsMissingWithNotificationsWatermark:
                return(SeederRpcFlags.EventsMissingWithNotificationsWatermark);

            case CatalogAutoReseedWorkflow.CatalogAutoReseedReason.CrawlOnNonPreferredActiveWithNotificationsWatermark:
                return(SeederRpcFlags.CrawlOnNonPreferredActiveWithNotificationsWatermark);

            case CatalogAutoReseedWorkflow.CatalogAutoReseedReason.CrawlOnNonPreferredActiveWithTooManyNotificationEvents:
                return(SeederRpcFlags.CrawlOnNonPreferredActiveWithTooManyNotificationEvents);

            case CatalogAutoReseedWorkflow.CatalogAutoReseedReason.CrawlOnPassive:
                return(SeederRpcFlags.CrawlOnPassive);

            case CatalogAutoReseedWorkflow.CatalogAutoReseedReason.Unknown:
                return(SeederRpcFlags.Unknown);

            default:
                return(SeederRpcFlags.None);
            }
        }
コード例 #2
0
 public CatalogAutoReseedWorkflow(AutoReseedContext context, CatalogAutoReseedWorkflow.CatalogAutoReseedReason catalogReseedReason, string workflowLaunchReason) : base(AutoReseedWorkflowType.CatalogAutoReseed, workflowLaunchReason, context)
 {
     this.catalogReseedReason = catalogReseedReason;
 }
コード例 #3
0
        public bool ReportWorkflowLaunchConditionMet(AutoReseedWorkflowType workflowType, Guid dbGuid, CatalogAutoReseedWorkflow.CatalogAutoReseedReason reason = CatalogAutoReseedWorkflow.CatalogAutoReseedReason.None, int activationPreference = 1)
        {
            bool flag = false;

            AutoReseedWorkflowSuppression.Tracer.TraceDebug((long)this.GetHashCode(), "AutoReseedWorkflowSuppression.ReportWorkflowLaunchConditionMet: Database '{0}' running workflow {1} with ActivationPreference {2} and reason {3}", new object[]
            {
                dbGuid,
                workflowType,
                activationPreference,
                reason
            });
            foreach (KeyValuePair <AutoReseedWorkflowType, TransientPeriodicDatabaseErrorSuppression> keyValuePair in this.m_wfSuppressionTable)
            {
                if (keyValuePair.Key == workflowType)
                {
                    TransientErrorInfo.ErrorType errorType;
                    flag = (keyValuePair.Value.ReportFailurePeriodic(dbGuid, out errorType) && errorType == TransientErrorInfo.ErrorType.Failure);
                    AutoReseedWorkflowSuppression.Tracer.TraceDebug((long)this.GetHashCode(), "AutoReseedWorkflowSuppression.ReportWorkflowLaunchConditionMet: Database '{0}' is reporting failure on periodic suppression fail table with ErrorType {1} for workflow {2}, shouldLaunch {3}.", new object[]
                    {
                        dbGuid,
                        errorType,
                        keyValuePair.Key,
                        flag
                    });
                }
                else
                {
                    TransientErrorInfo.ErrorType errorType;
                    keyValuePair.Value.ReportSuccessPeriodic(dbGuid, out errorType);
                    AutoReseedWorkflowSuppression.Tracer.TraceDebug <Guid, TransientErrorInfo.ErrorType, AutoReseedWorkflowType>((long)this.GetHashCode(), "AutoReseedWorkflowSuppression.ReportWorkflowLaunchConditionMet: Database '{0}' is resetting periodic suppression fail table with ErrorType {1} for workflow {2}.", dbGuid, errorType, keyValuePair.Key);
                }
            }
            if (flag && workflowType == AutoReseedWorkflowType.CatalogAutoReseed && reason == CatalogAutoReseedWorkflow.CatalogAutoReseedReason.Upgrade)
            {
                DateTime utcNow = DateTime.UtcNow;
                activationPreference = ((activationPreference <= 1) ? 1 : activationPreference);
                TimeSpan timeSpan = TimeSpan.FromSeconds((double)(activationPreference * (int)AutoReseedWorkflowSuppression.s_ciCatalogAutoReseedOnUpgradeInterval.TotalSeconds));
                DateTime value;
                if (this.m_catalogAutoReseedElapsedTime.TryGetValue(dbGuid, out value))
                {
                    TimeSpan timeSpan2 = utcNow.Subtract(value);
                    if (timeSpan2 < timeSpan)
                    {
                        flag = false;
                        AutoReseedWorkflowSuppression.Tracer.TraceDebug((long)this.GetHashCode(), "AutoReseedWorkflowSuppression.ReportWorkflowLaunchConditionMet: Database '{0}' blocking reseed elapsed time {1} < delay time {2}. ActivationPref is {3}", new object[]
                        {
                            dbGuid,
                            timeSpan2,
                            timeSpan,
                            activationPreference
                        });
                    }
                    else
                    {
                        this.m_catalogAutoReseedElapsedTime.Remove(dbGuid);
                        AutoReseedWorkflowSuppression.Tracer.TraceDebug <Guid, TimeSpan, int>((long)this.GetHashCode(), "AutoReseedWorkflowSuppression.ReportWorkflowLaunchConditionMet: Database '{0}' allowing reseed at current time as a previous reseed was called and delayed {1}. ActivationPref is {2}", dbGuid, timeSpan, activationPreference);
                    }
                }
                else
                {
                    this.m_catalogAutoReseedElapsedTime[dbGuid] = utcNow;
                    flag = false;
                    AutoReseedWorkflowSuppression.Tracer.TraceDebug <Guid, TimeSpan, int>((long)this.GetHashCode(), "AutoReseedWorkflowSuppression.ReportWorkflowLaunchConditionMet: Database '{0}' blocking reseed for {1} as this is the first call. ActivationPref is {2}", dbGuid, timeSpan, activationPreference);
                }
            }
            return(flag);
        }