Esempio n. 1
0
        private double FindPrioityIndex(OptionBase option)
        {
            DatabaseOptionStatusLine line = _optionStatus.GetDatabaseOptionStatusLineOnOption(option);

            double priority = 1;

            if (line?.Fail10Minute > 0)
            {
                priority *= 0.5;
            }
            else if (line?.Fail1Hour > 0)
            {
                priority *= 0.75;
            }
            else if (line?.Fail24Hour > 0)
            {
                priority *= 0.85;
            }

            int?failsOnCurrentOption = option?.DatabaseOption?.Schedule?.Fails;

            if (failsOnCurrentOption != null)
            {
                priority *= 0.5;
            }

            return(priority);
        }
Esempio n. 2
0
		private void UpdateEstimatedStatistics(OptionReport report)
		{
			lock (_statusLock)
			{
				string optionName = report.OptionType.Name;

				DatabaseOptionStatusLine line = null;

				if (_databaseOptionStatus.options.ContainsKey(optionName))
				{
					line = _databaseOptionStatus.options[optionName];
				}
				else
				{
					line = new DatabaseOptionStatusLine();
					_databaseOptionStatus.options.Add(optionName, line);
				}

				line.ExecutionTotal++;
				if (report.Success)
				{
					line.SuccessTotal++;
					line.Success10Minute++;
				}
				else
				{
					line.FailTotal++;
					line.Fail10Minute++;
				}
			}
		}
Esempio n. 3
0
		public DatabaseOptionStatusLine GetDatabaseOptionStatusLineOnOption(OptionBase option)
		{
			lock (_statusLock)
			{
				string optionName = option.GetType().Name;

				if (_databaseOptionStatus.options.ContainsKey(optionName))
				{
					DatabaseOptionStatusLine line = _databaseOptionStatus.options[optionName];
					return line;
				}
			}

			return null;
		}
Esempio n. 4
0
        public void DelayOptionFromFails(OptionBase option)
        {
            DatabaseOptionStatusLine line = _optionStatus.GetDatabaseOptionStatusLineOnOption(option);

            int failsThisHour = 0;

            if (line != null)
            {
                failsThisHour = line.Fail1Hour;
            }

            if (failsThisHour == 0)
            {
                return;
            }

            double minutesExtraDouble = 10.0 * Math.Log(failsThisHour);

            TimeSpan minutesExtra = TimeSpan.FromMinutes(minutesExtraDouble);

            option.DatabaseOption.Schedule.NextAllowedExecution += minutesExtra;
        }