palantir / stash-codesearch-plugin

Provides global repository, commit, and file content search for Atlassian Stash instances
Apache License 2.0
62 stars 20 forks source link

No NoDefaultBranchException stops index process #6

Open lotharschulz opened 9 years ago

lotharschulz commented 9 years ago

Hi, I built the project locally last week and deployed the artefact to a stash/elastic search instance today. Indexing startet and got stuck after a few moments with:

2015-04-02 09:26:31,067 WARN  [Thread-38359] skoenig @AZH3TYx566x2202x0 fxbsac 10.229.4.70,127.0.0.1 "POST /plugins/servlet/codesearch/globalsettings HTTP/1.0" c.p.s.c.admin.GlobalSettingsServlet     Caught exception while reindexing
com.atlassian.stash.exception.NoDefaultBranchException: No default branch is defined
        at com.atlassian.stash.internal.scm.git.RawGitAgent.getHead(RawGitAgent.java:170) ~[na:na]
        at com.atlassian.stash.internal.scm.git.DefaultGitCommandFactory.branches(DefaultGitCommandFactory.java:100) ~[na:na]
        at com.atlassian.stash.internal.scm.git.DefaultGitCommandFactory.branches(DefaultGitCommandFactory.java:51) ~[na:na]
        at com.atlassian.stash.internal.scm.PluginScmCommandFactory.branches(PluginScmCommandFactory.java:42) ~[stash-service-impl-3.6.1.jar:na]
        at com.atlassian.stash.internal.repository.RepositoryMetadataServiceImpl.getBranches(RepositoryMetadataServiceImpl.java:80) ~[stash-service-impl-3.6.1.jar:na]
        at com.palantir.stash.codesearch.repository.RepositoryServiceManagerImpl.getBranchMap(RepositoryServiceManagerImpl.java:84) 
                    ~[plugin_3785661407567444180_stash-code-search-0.0.1-DEV_1427902045000.jar:na]
        at com.palantir.stash.codesearch.updater.SearchUpdaterImpl.reindexAll(SearchUpdaterImpl.java:648) ~[plugin_3785661407567444180_stash-code-search-0.0.1-DEV_1427902045000.jar:na]
        at com.palantir.stash.codesearch.admin.GlobalSettingsServlet$1$1.perform(GlobalSettingsServlet.java:291) ~[plugin_3785661407567444180_stash-code-search-0.0.1-DEV_1427902045000.jar:na]
        at com.palantir.stash.codesearch.admin.GlobalSettingsServlet$1$1.perform(GlobalSettingsServlet.java:287) ~[plugin_3785661407567444180_stash-code-search-0.0.1-DEV_1427902045000.jar:na]
        at com.atlassian.stash.internal.user.DefaultEscalatedSecurityContext.call(DefaultEscalatedSecurityContext.java:60) ~[stash-service-impl-3.6.1.jar:na]
        at com.palantir.stash.codesearch.admin.GlobalSettingsServlet$1.run(GlobalSettingsServlet.java:287) ~[plugin_3785661407567444180_stash-code-search-0.0.1-DEV_1427902045000.jar:na]
        at java.lang.Thread.run(Thread.java:745) [na:1.8.0_05]
        ... 46 frames trimmed

Is a default branch really required for every project in a particular stash instance?

terabyte commented 9 years ago

My guess is yes - but this is probably stash's problem, not codesearch's. Stash is pretty bad about requiring HEAD to point somewhere. If HEAD doesn't point to some branch that exists, stash throws all sorts of errors and complains via the UI, etc. That said, we might be able to fix codesearch to handle this situation better. Pull requests welcome =)