本文是自己工作中遇到的gerrit有关问题的解决办法汇总。
问题1:代码服务器崩溃后发现有的库无法同步
提示问题如下:
user@ce-ubt02:~/temp$ ./repo sync msm8909-la-3-1-1_amss_standard_oem/platform/external/trappy
Fetching project msm8909-la-3-1-1_amss_standard_oem/platform/external/trappy
remote: Counting objects: 5242, done
remote: Finding sources: 100% (5242/5242)
error: inflate: data stream
error (incorrect data check)
fatal: pack has bad object at offset 7862251: inflate returned -3
fatal: index-pack failed
解决过程:
1、首先百度错误原因,比如说git版本不匹配,提交commit错误,需要重建库等,总之没有发现有用信息;
2、由于之前代码服务器崩溃,所以首先怀疑是数据被破坏导致的,重新恢复了备份;
3、将恢复后的数据,直接在gerrit服务器替换坏的,尝试repo sync还是失败,git clone这个库也是失败;
4、但是如果不是替换,而是重命名,比如命名成msm8909-la-3-1-1_amss_standard_oem_65,发现可以成功;
5、怀疑gerrit系统有缓存,重启代码服务器后,发现就可以了,这破事搞的。同样也可以用gerrit命令刷cache方式解决,只是没有验证过。
问题2:账号无法登陆问题
提示错误信息:Cannot assign user name “*****” to account 1000177; name already in use.
远程登陆gerrit数据库:
gerrit gsql(这里用了别名,具体命令是ssh -p 29418 user@IP gerrit gsql)
select * from accounts;
delete from ACCOUNTS where account_id=1000766;
select * from ACCOUNT_EXTERNAL_IDS;
delete from ACCOUNT_EXTERNAL_IDS where ACCOUNT_ID=1000154;
这样删一下就好了,原因应该是ACCOUNT ID不对导致的。注意这里有2个ACCOUNT数据表需要删除,只删除一个没用。
问题3:gerrit服务器出现heap满导致无法同步,且CPU占用率狂高问题
配置gerrit heap大小限制地方在gerrit_site/etc/gerrit.config文件中。heapLimit默认大小根据网上查询是6gB,这里可以多加一些。
[container]
user = gerrit2
heapLimit = 12g
javaHome = /usr/lib/jvm/java-8-openjdk-amd64/jre
问题4:chrome浏览器登陆gerrit提示错误信息:Plugin “importer” failed to load
importer和delete-project插件,google浏览器无法加载,突然出现的问题,如果用火狐浏览器没有问题。
暂时没有找到根本原因,先采取规避措施,将gerrit_site/plugins目录下面的这2个插件先移除,然后重启gerrit服务器。