Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ProjectsController needs to be aware of history being disabled #3405

Closed
vladak opened this issue Dec 16, 2020 · 0 comments
Closed

ProjectsController needs to be aware of history being disabled #3405

vladak opened this issue Dec 16, 2020 · 0 comments
Assignees

Comments

@vladak
Copy link
Member

vladak commented Dec 16, 2020

ProjectsController, namely its addProject() method should be aware of whether history is enabled. In particular it should not do any repositories related operations if isHistoryEnabled() returns false.

I discovered this when adding projects to a web app that was started with a configuration produced from indexer run without the -H option. Namely I got this exception:

opengrok-dev | 	java.lang.NullPointerException
opengrok-dev | 		at org.opengrok.web.api.v1.controller.ProjectsController.addProject(ProjectsController.java:121)
opengrok-dev | 		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
opengrok-dev | 		at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
opengrok-dev | 		at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
opengrok-dev | 		at java.base/java.lang.reflect.Method.invoke(Method.java:566)
opengrok-dev | 		at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
opengrok-dev | 		at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:124)
opengrok-dev | 		at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:167)
opengrok-dev | 		at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)
opengrok-dev | 		at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79)
opengrok-dev | 		at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:469)
opengrok-dev | 		at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:391)
opengrok-dev | 		at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:80)
opengrok-dev | 		at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:253)
opengrok-dev | 		at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
opengrok-dev | 		at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
opengrok-dev | 		at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
opengrok-dev | 		at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
opengrok-dev | 		at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
opengrok-dev | 		at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
opengrok-dev | 		at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:232)
opengrok-dev | 		at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:680)
opengrok-dev | 		at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)
opengrok-dev | 		at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
opengrok-dev | 		at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:366)
opengrok-dev | 		at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:319)
opengrok-dev | 		at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)
opengrok-dev | 		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
opengrok-dev | 		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
opengrok-dev | 		at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
opengrok-dev | 		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
opengrok-dev | 		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
opengrok-dev | 		at org.opengrok.web.CookieFilter.doFilter(CookieFilter.java:49)
opengrok-dev | 		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
opengrok-dev | 		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
opengrok-dev | 		at org.opengrok.web.AuthorizationFilter.doFilter(AuthorizationFilter.java:68)
opengrok-dev | 		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
opengrok-dev | 		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
opengrok-dev | 		at org.opengrok.web.StatisticsFilter.doFilter(StatisticsFilter.java:71)
opengrok-dev | 		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
opengrok-dev | 		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
opengrok-dev | 		at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
opengrok-dev | 		at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
opengrok-dev | 		at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
opengrok-dev | 		at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
opengrok-dev | 		at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
opengrok-dev | 		at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
opengrok-dev | 		at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
opengrok-dev | 		at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
opengrok-dev | 		at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
opengrok-dev | 		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
opengrok-dev | 		at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589)
opengrok-dev | 		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
opengrok-dev | 		at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
opengrok-dev | 		at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
opengrok-dev | 		at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
opengrok-dev | 		at java.base/java.lang.Thread.run(Thread.java:834)

which matches

// deleted repository
for (RepositoryInfo repo : map.get(project)) {
if (!repos.contains(repo)) {
allrepos.remove(repo);
}
}
and happened because map.get() returned null.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant