public JobProxy[] GetAll(JobProxy.Status status, JobProxy.CompletedStatus completedstatus, string sUserName) { List <JobProxy> jpList = new List <JobProxy>(); { ListJobsFlags nFlags = ListJobsFlags.None; if (status != JobProxy.Status.undefined) { nFlags |= ListJobsFlags.Status; } if (completedstatus != JobProxy.CompletedStatus.undefined) { nFlags |= ListJobsFlags.CompletedStatus; } if (!string.IsNullOrEmpty(sUserName)) { nFlags |= ListJobsFlags.Owner; } string[] sIds = _DownloadJobsDataAccessAgent.ListJobs(sUserName, (int)status, (int)completedstatus, 0, nFlags); foreach (string sId in sIds) { jpList.Add(new JobProxy(_DownloadJobsDataAccessAgent) { Id = int.Parse(sId) }); } } return(jpList.ToArray()); }
void Cleanup(bool fDeleteAny) { #region LOG { string message = @"Jobs Cleanup - Retry Failed jobs"; Logger.Global.Log(string.Empty, string.Empty, -1, string.Empty, string.Empty, -1, DicomCommandType.Undefined, DateTime.Now, LogType.Information, MessageDirection.None, message, null, null); } #endregion //delete completed successfully { ListJobsFlags nFlags = ListJobsFlags.None; nFlags |= ListJobsFlags.Status; nFlags |= ListJobsFlags.CompletedStatus; nFlags |= ListJobsFlags.TimeStamp; DateTime ExpiryTime = DateTime.Now - _Expiry; DownloadJobsDataAccessAgent.DeleteJobs("", (int)JobProxy.Status.completed, (int)JobProxy.CompletedStatus.success, 0, ExpiryTime, nFlags); } //delete failed { ListJobsFlags nFlags = ListJobsFlags.None; nFlags |= ListJobsFlags.Status; nFlags |= ListJobsFlags.CompletedStatus; nFlags |= ListJobsFlags.NegateCompletedStatus; nFlags |= ListJobsFlags.Retries; nFlags |= ListJobsFlags.TimeStamp; DateTime ExpiryTime = DateTime.Now - _Expiry; DownloadJobsDataAccessAgent.DeleteJobs("", (int)JobProxy.Status.completed, (int)JobProxy.CompletedStatus.success, _MaxRetries + 1, ExpiryTime, nFlags); } if (fDeleteAny) { ListJobsFlags nFlags = ListJobsFlags.None; nFlags |= ListJobsFlags.Status; DateTime ExpiryTime = DateTime.Now - _Expiry; DownloadJobsDataAccessAgent.DeleteJobs("", (int)JobProxy.Status.completed, 0, 0, ExpiryTime, nFlags); } }
public void ReQeueFailedJobs(int nMaxRetries) { #region LOG { string message = @"ReQeueFailedJobs"; Logger.Global.Log(string.Empty, string.Empty, -1, string.Empty, string.Empty, -1, DicomCommandType.Undefined, DateTime.Now, LogType.Information, MessageDirection.None, message, null, null); } #endregion List <JobProxy> jpList = new List <JobProxy>(); { ListJobsFlags nFlags = ListJobsFlags.None; nFlags |= ListJobsFlags.Status; nFlags |= ListJobsFlags.CompletedStatus; nFlags |= ListJobsFlags.NegateCompletedStatus; nFlags |= ListJobsFlags.Retries; string[] sIds = DownloadJobsDataAccessAgent.ListJobs("", (int)JobProxy.Status.completed, (int)JobProxy.CompletedStatus.success, nMaxRetries, nFlags); foreach (string sId in sIds) { try { DownloadJobsDataAccessAgent.SetJobStatus(int.Parse(sId), (int)JobProxy.Status.pending, (int)JobProxy.CompletedStatus.undefined, false, ""); QeueJob(sId); } catch (Exception e) { #region LOG { string message = @"ReQeueFailedJob Failure: " + e.Message; Logger.Global.Log(string.Empty, string.Empty, -1, string.Empty, string.Empty, -1, DicomCommandType.Undefined, DateTime.Now, LogType.Information, MessageDirection.None, message, null, null); } #endregion System.Diagnostics.Debug.Assert(false); } } } }
public virtual void DeleteJobs ( string sOwner, int nStatus, int nCompletedStatus, int nMinRetries, DateTime MinTimeStamp, ListJobsFlags nFlags ) { List <string> JobsIdsList = new List <string>(); bool bOwner = (nFlags & ListJobsFlags.Owner) > 0; bool bStatus = (nFlags & ListJobsFlags.Status) > 0; bool bCompletedStatus = (nFlags & ListJobsFlags.CompletedStatus) > 0; bool bNegateCompletedStatus = (nFlags & ListJobsFlags.NegateCompletedStatus) > 0; bool bMinRetries = (nFlags & ListJobsFlags.Retries) > 0; bool bTimeStamp = (nFlags & ListJobsFlags.TimeStamp) > 0; using (DbConnection dbConnection = CreateConnection()) { DbCommand dbCommand = dbConnection.CreateCommand(); dbCommand.CommandText = @"DELETE FROM [dbo].[jobsQueue] WHERE 1=1"; if (bStatus) { dbCommand.CommandText += @" AND status = @status"; } if (bCompletedStatus) { if (bNegateCompletedStatus) { dbCommand.CommandText += @" AND completedstatus <> @completedstatus"; } else { dbCommand.CommandText += @" AND completedstatus = @completedstatus"; } } if (bMinRetries) { dbCommand.CommandText += @" AND retries >= @retries"; } if (bOwner) { dbCommand.CommandText += @" AND owner = @owner"; } if (bTimeStamp) { dbCommand.CommandText += @" AND timestamp <= @timestamp"; } { DbParameter param = dbCommand.CreateParameter(); param.ParameterName = "@status"; param.DbType = DbType.Int32; param.Value = nStatus; dbCommand.Parameters.Add(param); } { DbParameter param = dbCommand.CreateParameter(); param.ParameterName = "@completedstatus"; param.DbType = DbType.Int32; param.Value = nCompletedStatus; dbCommand.Parameters.Add(param); } { DbParameter param = dbCommand.CreateParameter(); param.ParameterName = "@retries"; param.DbType = DbType.Int32; param.Value = nMinRetries; dbCommand.Parameters.Add(param); } { DbParameter param = dbCommand.CreateParameter(); param.ParameterName = "@owner"; param.DbType = DbType.String; param.Value = sOwner; dbCommand.Parameters.Add(param); } { DbParameter param = dbCommand.CreateParameter(); param.ParameterName = "@timestamp"; param.DbType = DbType.DateTime; param.Value = MinTimeStamp; dbCommand.Parameters.Add(param); } dbCommand.CommandType = CommandType.Text; dbCommand.Connection.Open(); dbCommand.ExecuteScalar(); } }
public virtual string[] ListJobs ( string sOwner, int nStatus, int nCompletedStatus, int nMaxRetries, ListJobsFlags nFlags ) { List <string> JobsIdsList = new List <string>(); bool bOwner = (nFlags & ListJobsFlags.Owner) > 0; bool bStatus = (nFlags & ListJobsFlags.Status) > 0; bool bCompletedStatus = (nFlags & ListJobsFlags.CompletedStatus) > 0; bool bNegateCompletedStatus = (nFlags & ListJobsFlags.NegateCompletedStatus) > 0; bool bMinRetries = (nFlags & ListJobsFlags.Retries) > 0; using (DbConnection dbConnection = CreateConnection()) { DbCommand dbCommand = dbConnection.CreateCommand(); dbCommand.CommandText = @"SELECT [dbo].[jobsQueue].[id] FROM [dbo].[jobsQueue] WHERE 1=1"; if (bStatus) { dbCommand.CommandText += @" AND status = @status"; } if (bCompletedStatus) { if (bNegateCompletedStatus) { dbCommand.CommandText += @" AND completedstatus <> @completedstatus"; } else { dbCommand.CommandText += @" AND completedstatus = @completedstatus"; } } if (bMinRetries) { dbCommand.CommandText += @" AND retries <= @retries"; } if (bOwner) { dbCommand.CommandText += @" AND owner = @owner"; } { DbParameter param = dbCommand.CreateParameter(); param.ParameterName = "@status"; param.DbType = DbType.Int32; param.Value = nStatus; dbCommand.Parameters.Add(param); } { DbParameter param = dbCommand.CreateParameter(); param.ParameterName = "@completedstatus"; param.DbType = DbType.Int32; param.Value = nCompletedStatus; dbCommand.Parameters.Add(param); } { DbParameter param = dbCommand.CreateParameter(); param.ParameterName = "@retries"; param.DbType = DbType.Int32; param.Value = nMaxRetries; dbCommand.Parameters.Add(param); } { DbParameter param = dbCommand.CreateParameter(); param.ParameterName = "@owner"; param.DbType = DbType.String; param.Value = sOwner; dbCommand.Parameters.Add(param); } dbCommand.CommandType = CommandType.Text; dbCommand.Connection.Open(); using (var sqlReader = dbCommand.ExecuteReader()) { if (sqlReader.HasRows) { while (sqlReader.Read()) { JobsIdsList.Add(sqlReader["id"].ToString()); } } } } return(JobsIdsList.ToArray()); }