NullPointerException in View Jobs

Issue #102 closed
Ken Banks created an issue

Getting a NullPointer Exception when entering into View jobs. This does not happen on every project - just 1 of them. I am looking for guidance as to how to resolve this issue. I have bounced JIRA and re-indexed but neither had any affect. Opened a Support Ticket with Atlassian but they said to contact you. Information as to the versions I have and a partial stack trace is listed below.

Thank You

Ken Banks

JIRA 5.2.2

Scheduler Version: 2.6.4 Vendor: Transition Technologies S.A. Add-on key: pl.com.tt.jira.plugin.theschedulerpro

License details: 2000-user commercial license, Enterprise, expires 31/Mar/16 License status: Valid License SEN: SEN-3519946

An error occurred whilst rendering this message. Please contact the administrators, and inform them of this bug. Details: ------- org.apache.velocity.exception.MethodInvocationException: Invocation of method 'getIssueJobBeans' in class pl.com.tt.jira.plugin.thescheduler.action.issuescheduler.ViewIssueJobsAction threw exception java.lang.NullPointerException at templates/plugins/thescheduler/issuescheduler/viewissuejobs.vm[line 246, column 59] at org.apache.velocity.runtime.parser.node.ASTMethod.handleInvocationException(ASTMethod.java:337) at org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:284) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:262) at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:507) at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:282) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175) at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) at org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:87) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336) at org.apache.velocity.Template.merge(Template.java:328) at org.apache.velocity.Template.merge(Template.java:235) at org.apache.velocity.app.VelocityEngine.mergeTemplate(VelocityEngine.java:381) at com.atlassian.velocity.DefaultVelocityManager.getEncodedBody(DefaultVelocityManager.java:67) at com.atlassian.jira.template.velocity.DefaultVelocityTemplatingEngine$DefaultRenderRequest.asHtml(DefaultVelocityTemplatingEngine.java:104) at com.atlassian.jira.plugin.webwork.JiraPluginWebworkVelocityServlet.service(JiraPluginWebworkVelocityServlet.java:59) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.atlassian.jira.web.filters.XContentTypeOptionsNoSniffFilter.doFilter(XContentTypeOptionsNoSniffFilter.java:22) at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.atlassian.core.filters.HeaderSanitisingFilter.doFilter(HeaderSanitisingFilter.java:32) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66) at com.atlassian.labs.botkiller.BotKillerFilter.doFilter(BotKillerFilter.java:30) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66) at com.atlassian.jira.tzdetect.IncludeResourcesFilter.doFilter(IncludeResourcesFilter.java:39) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66) at com.atlassian.jira.baseurl.IncludeResourcesFilter.doFilter(IncludeResourcesFilter.java:40) at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66) at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:25) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:82) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.java:169) at com.atlassian.jira.web.filters.JiraLoginFilter.doFilter(JiraLoginFilter.java:70) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66) at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:55) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77) at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:690) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:477) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329) at com.atlassian.jira.web.dispatcher.JiraWebworkActionDispatcher.dispatchView(JiraWebworkActionDispatcher.java:314) at com.atlassian.jira.web.dispatcher.JiraWebworkActionDispatcher.service(JiraWebworkActionDispatcher.java:205) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter(ChainedFilterStepRunner.java:78) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.atlassian.jira.web.filters.XContentTypeOptionsNoSniffFilter.doFilter(XContentTypeOptionsNoSniffFilter.java:22) at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:31) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.atlassian.core.filters.HeaderSanitisingFilter.doFilter(HeaderSanitisingFilter.java:44) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66) at com.atlassian.labs.botkiller.BotKillerFilter.doFilter(BotKillerFilter.java:36) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66) at com.atlassian.jira.tzdetect.IncludeResourcesFilter.doFilter(IncludeResourcesFilter.java:39) at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74) a

Comments (19)

  1. jost

    Hello Ken,

    This issue is due to lack of value some field. This issue has been resolved in version 3.0.6. However this version of TSP is available for JIRA 6.0+. But there is a workaround: If you don't have many Scheduled Issues on that project please try to remove Scheduled Jobs from this project and create them again. Or send us files associated with our plugin and we will find the invalid Scheduled Issue and remove it from TSP cache files. These files are located in JIRA_SERVER\Application Data\JIRA\data\plugins, (SchedulerBackup.xsd, theschedulerdb.properties, theschedulerdb.script).

    Regards, Jacek Ostrowski.

  2. Ken Banks reporter

    Hello Jacek

    Thank you for the response - not sure how to remove the jobs since I cannot get into the view jobs on this project. I have not been able to figure out where the data is stored - in the datbase or on the server so I do not know how to manually change the data either. I will look for the zipped files in the locations you mentioned. If I cannot figure how to change them, I will send them to you.

    Thank you.

  3. jost

    Hello Ken,

    If you have problems with find those files please to use search function in the system and find "theschedulerdb.script" and "theschedulerdb.properties"

    Jacek

  4. Ken Banks reporter

    Hello Jacek

    I did find the files, I looked at the script and saw the tables it was creating in the database. I looked into the tables in the datbase trying to find the jobs hoping to see if I cound figure out where the jobs were stored. I was going to compare jobs that were not having issues to jobs that were in hopes of figuring out which field was Null. Near as I could tell, the jobs were not stored in one of hose tables. The files that I found SchedulerBackup.xsd, theschedulerdb.properties, theschedulerdb.script, those are the ones you wnat me to send - correct?

  5. Ken Banks reporter

    Hello Jacek

    In the attached zip are:

    SchedulerBackup.xsd theschedulerdb.log theschedulerdb.properties theschedulerdb.script

    For the one project having this issue, the user has told me she can recreate the jobs. I would like to find the data and see if I can fix it before I do that.

    Should the data be in one of the these Oralce tables:

    QRTZ_JOB_DETAILS QRTZ_JOB_LISTENERS QRTZ_TRIGGERS QRTZ_SIMPLE_TRIGGERS QRTZ_CRON_TRIGGERS QRTZ_BLOB_TRIGGERS QRTZ_TRIGGER_LISTENERS QRTZ_CALENDARS QRTZ_PAUSED_TRIGGER_GRPS QRTZ_FIRED_TRIGGERS QRTZ_SCHEDULER_STATE QRTZ_LOCKS

  6. Ken Banks reporter

    Hello Jacek If I understand correctly, the files I sent you represent an HSQL database and the database is using “In Memory” tables. That being the case the file called "theschedulerdb.script" is where the jobs that have been set up can be seen. I looked in that file and sure enough, I found 5 rows that had a number that matched the Project ID of the Project that is having issues. Most of this data seemed to be in Hex so I could not tell much more. I compared a row from a project that was working hoping to find the NULL field but that did not pan out. Question: I assume the fix requires the rows to be deleted from this file - can I just delete the 5 rows? Or do I need to Stop JIRA first and then delete them and restart JIRA.

  7. jost

    Yes, you are correct. This represents an HSQL database.

    Yes you can to remove SI from those file, but to avoid errors please just disable the plugin, you don't have to stop JIRA server.

    Let us know if you will able to resolve this issue, or have any other problems.

  8. Ken Banks reporter

    I am glad you emailed. Here is what has happened.

    At first the fix I deployed seemed to work but just today I found out the Plug-in has gone down and it will not come back up. I am concerned that when I fixed the data that I did something wrong and it eventually created enough problems that it brought the plug in down (Although, the existing scheduled jobs are still creating Issues. The first clue was that the user interface no longer would show the correct Issue Types that went with the project.

    Here is what I think I did wrong. I deleted 5 rows from the scripts file that corresponded with the 5 jobs for the Project. They were the rows that went with the QRTZ_JOB_DETAILS Memory Table. I think what I did wrong was not delete the rows for the QRTZ_TRIGGERS VALUES and QRTZ_CRON_TRIGGERS tables.

    Tonight I am going to bounce JIRA and when it comes back up, I am going to stop the Plug-In and put the original file back and if that works, try the deleting the rows again but delete all 15 rows this time.

  9. jost

    Please let me know whether the deletion of all rows resolve this issue. If not, please send me log file.

  10. Ken Banks reporter

    Okay – at this point I am not sure how to proceed. After rebooting JIRA, on the Manage Plug-ins it has Enable and Uninstall for the Plug-in. So, I would have thought the plug-in is not up. However, the lock file is there which makes me think it is partially up. So, I am thinking. Save off the files and uninstall and then reinstall and put the files back. I wanted to check with you to see if this approach would work. I am a little leery about modifying the scripts file while the lock file exists. When I get the logs, do you want the Plug-in’s log file and the catalina.out log file?

  11. Ken Banks reporter

    I am still waiting on the Change control process to make the final change in Production but I am failry certain it is going to work. I have tested in a DEV environment with the data file I am going to use in production and I feel pretty good about it.

  12. Ken Banks reporter

    Yes - thank you. you can close the Ticket. The last thing I tried (Uninstalling Plug-in, Shutting Down JIRA, deleting project entries and bringing JIRA back up) did resolve the Issue once and for all. Uninstalling alone did not help because (I am guessing) the data was still in memory even though the plug-in was uninstalled.

    I appreciate the help.

  13. Log in to comment