Issue 3157: Error in POST /accounts/self/preferences
Status:  Invalid
Owner: ----
Closed:  Feb 2015
Reported by leichtun...@gmail.com, Feb 4, 2015
*****************************************************************
*****                                                       *****
***** !!!! THIS BUG TRACKER IS FOR GERRIT CODE REVIEW !!!!  *****
*****                                                       *****
***** DO NOT SUBMIT BUGS FOR CHROME, ANDROID, CYANOGENMOD,  *****
***** INTERNAL ISSUES WITH YOUR COMPANY'S GERRIT SETUP, ETC.*****
*****                                                       *****
*****   THOSE ISSUES BELONG IN DIFFERENT ISSUE TRACKERS     *****
*****                                                       *****
*****************************************************************

Affected Version: 2.10

What steps will reproduce the problem?
1. Migrated from 2.8.6.1 to 2.10
2. In UI go to settings >> preferences
3. change something and click "Save changes"

What is the expected output? What do you see instead?
- The browser just gives me a "Code review error/ HTTP Status 500"
- The error log shows a stacktrace (see additional information)

I already checked the access rights und granted read/write/exec for all gerrit files for everyone - does not help.

Please provide any additional information below.
[2015-02-04 15:32:03,010] ERROR com.google.gerrit.httpd.restapi.RestApiServlet : Error in POST /accounts/self/preferences
java.io.IOException: Keine Berechtigung
        at java.io.UnixFileSystem.createFileExclusively(Native Method)
        at java.io.File.createNewFile(File.java:1006)
        at java.io.File.createTempFile(File.java:1989)
        at org.eclipse.jgit.internal.storage.file.ObjectDirectoryInserter.newTempFile(ObjectDirectoryInserter.java:233)
        at org.eclipse.jgit.internal.storage.file.ObjectDirectoryInserter.toTemp(ObjectDirectoryInserter.java:199)
        at org.eclipse.jgit.internal.storage.file.ObjectDirectoryInserter.insert(ObjectDirectoryInserter.java:91)
        at org.eclipse.jgit.lib.ObjectInserter.insert(ObjectInserter.java:338)
        at com.google.gerrit.server.git.VersionedMetaData.saveFile(VersionedMetaData.java:418)
        at com.google.gerrit.server.git.VersionedMetaData.saveUTF8(VersionedMetaData.java:412)
        at com.google.gerrit.server.git.VersionedMetaData.saveConfig(VersionedMetaData.java:408)
        at com.google.gerrit.server.account.VersionedAccountPreferences.onSave(VersionedAccountPreferences.java:72)
        at com.google.gerrit.server.git.VersionedMetaData$1.doSave(VersionedMetaData.java:208)
        at com.google.gerrit.server.git.VersionedMetaData$1.write(VersionedMetaData.java:221)
        at com.google.gerrit.server.git.VersionedMetaData$1.write(VersionedMetaData.java:197)
        at com.google.gerrit.server.git.VersionedMetaData.commit(VersionedMetaData.java:147)
        at com.google.gerrit.server.account.SetPreferences.apply(SetPreferences.java:177)
        at com.google.gerrit.server.account.SetPreferences.apply(SetPreferences.java:54)
        at com.google.gerrit.httpd.restapi.RestApiServlet.service(RestApiServlet.java:304)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
        at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:279)
        at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:269)
        at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:180)
        at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85)
        at com.google.gerrit.pgm.http.jetty.GetUserFilter.doFilter(GetUserFilter.java:76)
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
        at com.google.gwtexpui.server.CacheControlFilter.doFilter(CacheControlFilter.java:70)
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
        at com.google.gerrit.httpd.RunAsFilter.doFilter(RunAsFilter.java:113)
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
        at com.google.gerrit.httpd.AllRequestFilter$FilterProxy$1.doFilter(AllRequestFilter.java:64)
        at com.google.gerrit.httpd.AllRequestFilter$FilterProxy.doFilter(AllRequestFilter.java:57)
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
        at com.google.gerrit.httpd.RequestContextFilter.doFilter(RequestContextFilter.java:75)
        at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
        at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:119)
        at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:133)
        at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:130)
        at com.google.inject.servlet.GuiceFilter$Context.call(GuiceFilter.java:203)
        at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:130)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1636)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:564)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:219)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1111)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:498)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1045)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:98)
        at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:92)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:98)
        at org.eclipse.jetty.server.Server.handle(Server.java:461)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:284)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:244)
        at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:534)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536)
        at java.lang.Thread.run(Thread.java:744)

"Keine Berechtigung" ist German for permission denied.
Feb 11, 2015
#1 peterbru...@gmail.com
I am having the same problem after upgrading from 2.9.1 to 2.10
Feb 11, 2015
#2 peterbru...@gmail.com
I think I found the solution:

My guess is that during the upgrade that I ran using sudo an new directory name 'index' was created. This directory didn't have the correct rights. After changing the rights the problem was solved.
Feb 12, 2015
#3 leichtun...@gmail.com
Yes, this is a point that I noticed, too. I already fixed this. However, I think this is a lucene index for the review db. Thus, it has nothing to do with changing the user prefereces.

Thanks anyway.
Feb 12, 2015
#4 leichtun...@gmail.com
Anyway, I reset the access rights for the gerrit root folder (read/write/execute to owner). This fixed it finally.

Ticket can be closed.
Feb 12, 2015
Project Member #5 edwin.ke...@gmail.com
(No comment was entered for this change.)
Status: Invalid
Mar 26, 2015
#6 pa...@hubbitus.com.ru
We also experience that issue with gerrit 2.10. What exactly rights should be? How to understand which exact file tried to be written?
Mar 30, 2015
#7 peterbru...@gmail.com
Just check the right of you gerrit site folder, you will see an odd one out. For me it was the /var/lib/gerrit2/review_site/index folder that had root as owner and group. If you are on Ubuntu you can run:

   chown -R gerrit2:gerrit2 /var/lib/gerrit2/review_site
Apr 27, 2015
#9 leosju...@gmail.com
This issue has affected our Gerrit as well. However problem was not in review_site access rights - the folder and all subfolders (including index folder) and files belonged to gerrit2:gerrit2. Instead of that the error persisted.

New Gerrit internal project "All-Users.git" was the source of problems. Its rights were wrong, it has belonged to root:root. Errors dissapeared as soon as 
chown -R gerrit2:gerrit2 /opt/gitrepo/All-Users.git 
was executed.

My settings:
gerrit.basePath = /opt/gitrepo
Apr 27, 2015
#10 tomiphon...@gmail.com
Yes I have the same problem and change the All-Users.git permissions solve this
Thank you !
Apr 29, 2015
#11 pa...@hubbitus.com.ru
It helps us too. Thank you.

Is not it should be udjusted in Gerrit installer if it required to function?