Hi,
I am using below groovy script to update a custom field of type DateTime Picker every time another field is changed. Update goes fine and I can see that the value of the customfield has been updated. But when I perform a jql search, like say "AutomationUpdatedOn > startOfDay()", it doesn't show me these updated fields unless I update the same field twice. I have tried many things like re-indexing, reIndex(issue) inside my code, but not help.
class UpdateField extends AbstractIssueEventListener {
Logger log = Logger.getLogger(UpdateField.class)
@Override
void workflowEvent(IssueEvent event) {
log.setLevel(org.apache.log4j.Level.DEBUG)
def field = event.getChangeLog().getRelated('ChildChangeItem').any{
it.field.toString().equals("Test Automation")
}
if(field){
MutableIssue issue = event.issue
ComponentManager componentManager = ComponentManager.getInstance()
IssueIndexManager indexManager = ComponentManager.getIndexManager();
CustomFieldManager customFieldManager = componentManager.getCustomFieldManager();
def issueManager = componentManager.getIssueManager()
CustomField automationUpdated = customFieldManager.getCustomFieldObjectByName( "AutomationUpdatedOn" );
issue.setCustomFieldValue(automationUpdated,new Timestamp(new Date().getTime()))
User currentUserObj = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
issueManager.updateIssue(currentUserObj, issue, EventDispatchOption.DO_NOT_DISPATCH, false)
issue.store()
}
}
}
Ok, guys. I have the solution to this issue. Posting here if someone else might be interested.
Issue was with indexing and flushing the cache. Got it running after adding below code.
if(field){
MutableIssue issue = event.issue
boolean wasIndexing = ImportUtils.isIndexIssues(); ImportUtils.setIndexIssues(true); ComponentManager componentManager = ComponentManager.getInstance()
CustomFieldManager customFieldManager = componentManager.getCustomFieldManager();
def issueManager = componentManager.getIssueManager()
IssueIndexManager indexManager = componentManager.getIndexManager()
CustomField automationUpdated = customFieldManager.getCustomFieldObjectByName( "AutomationUpdatedOn" );
issue.setCustomFieldValue(automationUpdated,new Timestamp(new Date().getTime()))
issue.store()
User currentUserObj = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
issueManager.updateIssue(currentUserObj, issue, EventDispatchOption.DO_NOT_DISPATCH, false)
if((BuildUtils.getCurrentBuildNumber() as Long) < 614){ ManagerFactory.getCacheManager().flush(com.atlassian.jira.issue.cache.CacheManager.ISSUE_CACHE, issue) } indexManager.reIndex(issue); ImportUtils.setIndexIssues(wasIndexing);
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.