|
|
|
|
|
|
|
# 现象
|
|
|
|
|
|
|
|
【【171】【AIARTS】【百信现场】代码开发里面git push 失败】https://www.tapd.cn/42483287/bugtrace/bugs/view?bug_id=1142483287001007608
|
|
|
|
|
|
|
|
百信现场,在代码开发中 git push 失败。
|
|
|
|
```
|
|
|
|
org-dev@dev-d09e033f-989f-45f2-858c-ab591110b265-vxsld:~/code$ git push
|
|
|
|
Counting objects: 98, done.
|
|
|
|
Delta compression using up to 192 threads.
|
|
|
|
Compressing objects: 100% (94/94), done.
|
|
|
|
remote: error: file write error: Bad file descriptor
|
|
|
|
remote: fatal: unable to write loose object file
|
|
|
|
error: remote unpack failed: unpack-objects abnormal exit
|
|
|
|
error: failed to push some refs to 'git@gitea-ssh.apulis:gitea/ouc68z1NTiC02V7Z0mTAbg.git'
|
|
|
|
```
|
|
|
|
|
|
|
|
百信现场是 2 节点的 arm 环境。
|
|
|
|
|
|
|
|
## 具体步骤
|
|
|
|
|
|
|
|
连上集群:
|
|
|
|
```
|
|
|
|
ssh -p 8886 root@220.194.147.64 100Trust!@
|
|
|
|
|
|
|
|
ssh root@192.3.21.217
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
连上代码开发:
|
|
|
|
```
|
|
|
|
ssh -p 34221 org-dev@192.3.21.217 Nwo7jvCW
|
|
|
|
```
|
|
|
|
|
|
|
|
在 code 目录下, git add 一个大文件(比如十几 MB ),然后 git push ,就可看到问题现象。
|
|
|
|
|
|
|
|
# 尝试复现未果
|
|
|
|
|
|
|
|
@linwei 尝试复现
|
|
|
|
- 在 gpu02 上,没有出现
|
|
|
|
- 在 3.172 上,把 gitea 调度到 arm 节点,也没有出现问题
|
|
|
|
|
|
|
|
# 分析
|
|
|
|
|
|
|
|
## 1.
|
|
|
|
|
|
|
|
注意, git add + git push 小文件,是正常的。
|
|
|
|
|
|
|
|
## 2.
|
|
|
|
|
|
|
|
报错是 remote, 说明是服务端的错误。
|
|
|
|
|
|
|
|
一些改客户端参数的做法,可能就不太有用?
|
|
|
|
|
|
|
|
## 3. strace 日志
|
|
|
|
|
|
|
|
gitea ssh 进程的 strace :
|
|
|
|
```
|
|
|
|
1237051 15:51:01.193577 openat(AT_FDCWD, "/data/git/gitea-repositories/gitea/ouc68z1ntic02v7z0mtabg.git/./objects/incoming-oEoffE/b3/tmp_obj_XwYObm", O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0444) = 3 <0.033109>
|
|
|
|
…… ( 省略许多日志,大多是 write 写数据)
|
|
|
|
1237051 15:51:03.343265 write(3, "\333\204\202\221Z;:\273\250Y\272\2|R\272P\214_\355\353\316\3060@\f\355kQp;or"..., 4096) = 4096 <0.000015>
|
|
|
|
1237051 15:51:03.343948 write(3, "\35\372n\3549\325,x\314`\r\35\3656\301\33\241\373\225C\5'9\304\257\200\335\321\275l\23,"..., 4096) = -1 EBADF (Bad file descriptor) <0.000015>
|
|
|
|
1237051 15:51:03.344096 write(2, "error: file write error: Bad fil"..., 45) = 45 <0.000024>
|
|
|
|
```
|
|
|
|
|
|
|
|
可以看到,这个 1237051 进程,打开一个文件,成功写入数据了一段时间,然后又报错 -1 EBADF (Bad file descriptor)
|
|
|
|
|
|
|
|
|
|
|
|
## 4.
|
|
|
|
|
|
|
|
发现, gitea 应该是调用 git-receive-pack 去收文件。
|
|
|
|
|
|
|
|
## 5.
|
|
|
|
|
|
|
|
dmesg 有较多日志:
|
|
|
|
|
|
|
|
```
|
|
|
|
NFS: nfs4_reclaim_open_state: Lock reclaim failed!
|
|
|
|
```
|
|
|
|
|
|
|
|
所以有怀疑过 nfs 是不是有问题。
|
|
|
|
|
|
|
|
所以在 gitea pod 里面用 dd 写文件,并没有问题。
|
|
|
|
|
|
|
|
|