Hello everybody!
I have a need to periodically delete requests in JIRA. To do this, I use the Escalation Services module of the Script Runner plugin and the following code
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueManager
try {
IssueManager issueManager = ComponentAccessor.getIssueManager()
ComponentAccessor.issueManager.deleteIssueNoEvent(issue as Issue)
} catch (Exception exception) {
log.warn("Exception" + exception.getMessage())
}
And requests are deleted without problems. But when executed, the following information is recorded in the logs, regardless of whether the try - catch block is used in the code or not
2022-04-01 11:56:17,586 ERROR [admin.EscalationService]: Escalation Service (Удаление запросов, если в запросе есть комментарий - Удалить) failed for issue 3-30
java.lang.Exception: Not attempting update. Errors: {}
Error Messages: [Вы не можете обновить пустой запрос.]
at com.onresolve.scriptrunner.canned.jira.utils.WorkflowUtils.updateIssue(WorkflowUtils.groovy:259)
at com.onresolve.scriptrunner.canned.jira.utils.WorkflowUtils.updateIssue(WorkflowUtils.groovy)
at com.onresolve.scriptrunner.canned.jira.utils.WorkflowUtils$updateIssue$0.call(Unknown Source)
at com.onresolve.scriptrunner.canned.jira.admin.EscalationService$_runService_closure4.doCall(EscalationService.groovy:420)
at com.onresolve.scriptrunner.canned.jira.admin.EscalationService.runService(EscalationService.groovy:386)
at com.onresolve.scriptrunner.canned.jira.admin.EscalationService.getDescription(EscalationService.groovy:342)
Tell me which exception needs to be handled so that errors do not appear in the logs?
Hi @[deleted]
If you intend to delete and issue via ScriptRunner's Jobs, the Escalation Service is not the correct approach.
Instead, you will need to use the Custom Jobs feature.
Below is a sample working code for your reference:-
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.bc.issue.search.SearchService
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.jql.parser.JqlQueryParser
import com.atlassian.jira.web.bean.PagerFilter
import com.atlassian.jira.event.type.EventDispatchOption
def loggedInUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser
def jqlQueryParser = ComponentAccessor.getComponent(JqlQueryParser)
def searchService = ComponentAccessor.getComponent(SearchService)
def issueManager = ComponentAccessor.issueManager
def query = jqlQueryParser.parseQuery("project = 'MOCK' and type = 'Story' and status = 'Done'")
def search = searchService.search(loggedInUser, query, PagerFilter.unlimitedFilter)
search.results.each {
def issue = issueManager.getIssueObject(it.id) as Issue
issueManager.deleteIssue(loggedInUser, issue, EventDispatchOption.ISSUE_DELETED, false)
}
return null
Please note that the sample working code above is not 100% exact to your environment. Hence, you will need to make the required modifications.
You will need to modify the JQL Query provided in the sample code above, i.e.:-
def query = jqlQueryParser.parseQuery("project = 'MOCK' and type = 'Story' and status = 'Done'")
to suit your requirements.
Also, the return null parameter is required at the very ending sot that it will not return any error messages.
Below is a print screen of the Custom Jobs configuration:-
I hope this helps to answer your question. :)
Thank you and Kind regards,
Ram
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.