Details
-
Bug
-
Resolution: Unresolved
-
Low
-
None
-
Unknown
-
4
-
Severity 3 - Minor
-
0
-
Description
Attempting to add a repository path in JIRA throws the following exceptions:
Cause Referer URL: http://localhost:8070/jira/secure/admin/AssociateProjectRepPath!default.jspa?projectId=10101&fromScreen=prj java.lang.NullPointerException java.lang.NullPointerException at com.atlassian.jirafisheyeplugin.config.fisheye.RepositoryPathStoreImpl.getProjectId(RepositoryPathStoreImpl.java:63) at com.atlassian.jirafisheyeplugin.config.fisheye.RepositoryPathStoreImpl.access$400(RepositoryPathStoreImpl.java:32) at com.atlassian.jirafisheyeplugin.config.fisheye.RepositoryPathStoreImpl$3.with(RepositoryPathStoreImpl.java:131) at com.atlassian.jirafisheyeplugin.config.fisheye.RepositoryPathStoreImpl.forEachApplicationLink(RepositoryPathStoreImpl.java:144) at com.atlassian.jirafisheyeplugin.config.fisheye.RepositoryPathStoreImpl.reloadRepositoryPaths(RepositoryPathStoreImpl.java:118) at com.atlassian.jirafisheyeplugin.web.admin.AssociateProjectRepositoryPath.doExecute(AssociateProjectRepositoryPath.java:152) at webwork.action.ActionSupport.execute(ActionSupport.java:165)
Attempting to refresh the Fisheye Global configuration also throw this error:
2015-01-20 18:45:21,568 http-bio-8070-exec-8 ERROR admin 1125x798x1 an41kg 127.0.0.1 /secure/admin/ViewFishEyeConfig.jspa [jira.web.dispatcher.JiraWebworkActionDispatcher] Exception thrown from action 'ViewFishEyeConfig', returning 404 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.atlassian.jirafisheyeplugin.web.admin.ViewFishEyeConfiguration': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.atlassian.jirafisheyeplugin.web.admin.ViewFishEyeConfiguration]: Constructor threw exception; nested exception is java.lang.NullPointerException at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:254) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:925) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:835) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) ... Caused by: java.lang.NullPointerException at com.atlassian.jirafisheyeplugin.config.fisheye.RepositoryPathStoreImpl.access$400(RepositoryPathStoreImpl.java:32) at com.atlassian.jirafisheyeplugin.config.fisheye.RepositoryPathStoreImpl$3.with(RepositoryPathStoreImpl.java:131) at com.atlassian.jirafisheyeplugin.config.fisheye.RepositoryPathStoreImpl.forEachApplicationLink(RepositoryPathStoreImpl.java:144) at com.atlassian.jirafisheyeplugin.config.fisheye.RepositoryPathStoreImpl.reloadRepositoryPaths(RepositoryPathStoreImpl.java:118) at com.atlassian.jirafisheyeplugin.config.fisheye.RepositoryPathStoreImpl.refresh(RepositoryPathStoreImpl.java:149) at com.atlassian.jirafisheyeplugin.config.RefreshManagerImpl.refreshRefreshables(RefreshManagerImpl.java:162) at com.atlassian.jirafisheyeplugin.config.RefreshManagerImpl.refreshAll(RefreshManagerImpl.java:80)
Steps to reproduce:
- Create a project.
- Associate this project with a Repository Path by going to the project's Administration page, scroll down to the Repository Paths section and add one there.
- Delete this project after that.
- Create a second project, but ensure that the project key is different from the deleted project earlier.
- Try to add a Repository Path to this project. It will fail with the 500-page error.
Root Cause:
- The NPE is caused by the fact that JIRA does not update the list of projects with repository paths in the database.
- Running the following SQL:
SELECT * FROM propertyentry LEFT JOIN propertystring ON propertyentry.ID = propertystring.ID WHERE PROPERTY_KEY LIKE '%fisheye.projects.with.repository.paths%';
- This will populate a list of JIRA project keys that have repository paths configured.
- You will notice that this list still contains project keys of previously deleted JIRA projects.
- The NPE occurs when the Fisheye plugin tries to retrieve the ID of a non-existent JIRA project key.
Workaround Steps:
- Update the propertystring table row (the fisheye.projects.with.repository.paths property entry) to remove the project keys that do not exist in JIRA or has been deleted.
- Restart JIRA for the database changes to take effect.
ALWAYS have a database backup handy before attempting to modify production data, or test it in a staging instance first.
Tested Versions:
- Fisheye 3.5.1 with JIRA 6.3.9
- Fisheye 3.6.2 with JIRA 6.3.9
- Fisheye 3.6.2 with JIRA 6.3.12
- Fisheye 3.7 with JIRA 6.3.14
Attachments
Issue Links
- is related to
-
FE-5577 [JIRA FishEye Plugin] Removing JIRA projects should remove associated plugin data
- Closed