I have been scripting a transition function the last couple of days and we realized that the memory seems to file up which stops the users from accessing the JIRA server. (JIRA 7.3.1) When looking at the logs when restarting the server, we noticed this line of code: 2017-06-06 10:06:13,729 http-nio-8080-exec-14 ERROR anonymous 606x2x1 - <IP Address> /secure/Dashboard.jspa [c.atlassian.instrumentation.Instrument] Unable to snapshot thread local operations (implementation of OpTimerFactory is not a ThreadLocalOpTimerFactory): null
It seems that the snapshot operation started immediately on JIRA start. I will post the scriptrunner code that I have been working on, just incase they are correlated.
import com.onresolve.scriptrunner.runner.ScriptRunnerImpl
import com.onresolve.scriptrunner.runner.customisers.PluginModule
import com.onresolve.scriptrunner.runner.customisers.WithPlugin
import java.lang.Object
import com.atlassian.jira.issue.worklog.WorklogImpl2
import java.text.SimpleDateFormat
import com.atlassian.crowd.embedded.api.User
import com.atlassian.jira.issue.worklog.WorklogImpl
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.worklog.DefaultWorklogManager
import com.atlassian.jira.security.roles.ProjectRoleManager
import com.atlassian.jira.issue.worklog.Worklog
import com.tempoplugin.core.workattribute.api.WorkAttributeService
import com.tempoplugin.core.workattribute.api.WorkAttributeValueService
//Tempo Plugin
//@WithPlugin("is.origo.jira.tempo-plugin")
//@PluginModule
//WorkAttributeService workAttributeService
def componentManager = ComponentManager.getInstance()
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def cfend = customFieldManager.getCustomFieldObjectByName("End Date")
def cfstart = customFieldManager.getCustomFieldObjectByName("Start Date")
def cfdays = customFieldManager.getCustomFieldObjectByName("Used vacation days")
def reporter = issue.reporter.name
def worklogManager = ComponentAccessor.getWorklogManager();
//Take customfield object and change it to time
double stDate = (issue.getCustomFieldValue(cfstart) as Date).getTime()//time in milliseconds
double enDate = (issue.getCustomFieldValue(cfend) as Date).getTime()//time in milliseconds
double timediff = (enDate - stDate)/1000 // returns the time difference in seconds
int days = (issue.getCustomFieldValue(cfdays) as int)//return the number of days
timediff = Math.round(timediff)
ProjectRoleManager projectRoleManager = ComponentManager.getComponentInstanceOfType(ProjectRoleManager.class) as ProjectRoleManager
def UsersRole = projectRoleManager.getProjectRole("Users")
long timespent = 27000
for(int i=1; i<=days;i++){
def worklog = new WorklogImpl2(issue, null, issue.reporter.name, issue.summary, (issue.getCustomFieldValue(cfstart) as Date) - 1 + i , null, null,timespent, UsersRole)
worklogManager.create(issue.reporter, worklog, 0L, true)
}
return 0;I have tried other scripts before this one, so there is a chance that the error also came from a past code. If anybody knows anything about this error or this exception, please let me know