/// <summary> /// Remove all applications from storage. /// </summary> /// <param name="storage">Target storage where this maintanance will be performed.</param> public void RemoveAllApplications(IManagerStorage storage) { ApplicationStorageView[] applications = storage.GetApplications(); foreach (ApplicationStorageView application in applications) { storage.DeleteApplication(application); } }
/// <summary> /// Remove all applications that were submitted before the given cut-off date. /// </summary> /// <param name="storage">Target storage where this maintanance will be performed.</param> /// <param name="timeCreatedCutOff"></param> public void RemoveApplications(IManagerStorage storage, DateTime timeCreatedCutOff) { ApplicationStorageView[] applications = storage.GetApplications(); foreach (ApplicationStorageView application in applications) { if (application.TimeCreated < timeCreatedCutOff) { storage.DeleteApplication(application); } } }
/// <summary> /// Remove applications that have the given application state /// This will also remove the threads associated with these applications /// </summary> /// <param name="storage">Target storage where this maintanance will be performed.</param> /// <param name="applicationStates"></param> public void RemoveApplications(IManagerStorage storage, params ApplicationState[] applicationStates) { if (applicationStates == null || applicationStates.Length == 0) { return; } ApplicationStorageView[] applications = storage.GetApplications(); foreach (ApplicationStorageView application in applications) { int stateIndex; stateIndex = Array.IndexOf <ApplicationState>(applicationStates, application.State); if (stateIndex >= 0) { storage.DeleteApplication(application); } } }
/// <summary> /// Perform various maintenance actions as defined in the maintenance parameters. /// </summary> /// <param name="storage"></param> /// <param name="maintenanceParameters"></param> public void PerformMaintenance(IManagerStorage storage, StorageMaintenanceParameters maintenanceParameters) { RemoveApplications(storage, maintenanceParameters.ApplicationStatesToRemove); if (maintenanceParameters.RemoveAllApplications) { RemoveAllApplications(storage); } if (maintenanceParameters.RemoveAllExecutors) { RemoveAllExecutors(storage); } if (maintenanceParameters.ApplicationTimeCreatedCutOffSet) { RemoveApplications(storage, maintenanceParameters.ApplicationTimeCreatedCutOff); } if (maintenanceParameters.ExecutorPingTimeCutOffSet) { RemoveExecutors(storage, maintenanceParameters.ExecutorPingTimeCutOff); } if (maintenanceParameters.ApplicationTimeCompletedCutOffSet) { DateTime timeCompletedCutOff = DateTime.Now.Subtract(maintenanceParameters.ApplicationTimeCompletedCutOff); ApplicationStorageView[] applications = storage.GetApplications(); foreach (ApplicationStorageView application in applications) { if (application.TimeCompletedSet && application.TimeCompleted < timeCompletedCutOff) { storage.DeleteApplication(application); } } } }
/// <summary> /// Remove applications that have the given application state /// This will also remove the threads associated with these applications /// </summary> /// <param name="storage">Target storage where this maintanance will be performed.</param> /// <param name="applicationStates"></param> public void RemoveApplications(IManagerStorage storage, params ApplicationState[] applicationStates) { if (applicationStates == null || applicationStates.Length == 0) { return; } ApplicationStorageView[] applications = storage.GetApplications(); foreach (ApplicationStorageView application in applications) { int stateIndex; stateIndex = Array.IndexOf<ApplicationState>(applicationStates, application.State); if (stateIndex >= 0) { storage.DeleteApplication(application); } } }