当前位置:   article > 正文

apline无法向gitlab上传git lfs问题_fatal error:server error

fatal error:server error

1 背景

在k8s中基于alpine做底层系统的容器进行git lfs push操作时,发现报错无法上传成功

  1. Fatal error: Server error: http://git.ops.xxxxx.com/xxxx/yyyy.git/gitlab-lfs/objects/b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e/3
  2. error: failed to push some refs to 'http://git.ops.xxxx.com/xxxx/yyyy.git'

而git clone、commit等操作均正常,并且git lfs push的操作在另一个机器A上能正常执行。

2 探索思路

2.1 从报错入手

先根据报错信息搜索,基本回答是此报错是git server(gitlab)侧发生错误,不过可以使用如下命令来打印trace跟踪信息(via: https://github.com/git-lfs/git-lfs/issues/3613#issuecomment-483852691)

GIT_TRACE=1 GIT_TRANSFER_TRACE=1 GIT_CURL_VERBOSE=1 git push origin xxx/xxx

确实打印了更多信息,包括与Server的请求过程,如下:

  1. 07:18:13.442791 trace git-lfs: HTTP: POST http://xxxx:xxxx@git.ops.yunnex.com/suncard/packages.git/info/lfs/objects/batch
  2. > POST /suncard/packages.git/info/lfs/objects/batch HTTP/1.1
  3. > Host: git.ops.yunnex.com
  4. > Accept: application/vnd.git-lfs+json; charset=utf-8
  5. > Content-Length: 158
  6. > Content-Type: application/vnd.git-lfs+json; charset=utf-8
  7. > User-Agent: git-lfs/2.5.1 (GitHub; linux amd64; go 1.11.4; git 7c940069fa)
  8. >
  9. {"operation":"upload","objects":[{"oid":"b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e","size":3}],"ref":{"name":"refs/heads/test-branch"}}07:18:13.618655 trace git-lfs: HTTP: 200
  10. < HTTP/1.1 200 OK
  11. < Transfer-Encoding: chunked
  12. < Cache-Control: max-age=0, private, must-revalidate
  13. < Connection: keep-alive
  14. < Content-Type: application/json; charset=utf-8
  15. < Date: Thu, 24 Sep 2020 07:18:13 GMT
  16. < Etag: W/"0fb39c6aeeda2850fdcf244083961713"
  17. < Server: nginx
  18. < Strict-Transport-Security: max-age=31536000
  19. < X-Content-Type-Options: nosniff
  20. < X-Frame-Options: DENY
  21. < X-Request-Id: 570154fd-b15f-4e8a-a735-b034e98dfbfd
  22. < X-Runtime: 0.165423
  23. < X-Ua-Compatible: IE=edge
  24. < X-Xss-Protection: 1; mode=block
  25. <
  26. 07:18:13.619071 trace git-lfs: HTTP: {"objects":[{"oid":"b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e","size":3,"actions":{"upload":{"href":"http://git.ops.yunnex.com/suncard/packages.git/gitlab-lfs/objects/b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e/3","header":{"Authorization":"Basic cHJvZHVjdGlvbjpVc2VfMTk5MA=="}}}}]}
  27. {"objects":[{"oid":"b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e","size":3,"actions":{"upload":{"href":"http://git.ops.yunnex.com/suncard/packages.git/gitlab-lfs/objects/b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e/3","header":{"Authorization":"Basic cHJvZHVjdGlvbjpVc2VfMTk5MA=="}}}}]}07:18:13.619307 trace git-lfs: tq: starting transfer adapter "basic"
  28. 07:18:13.619345 trace git-lfs: xfer: adapter "basic" Begin() with 8 workers
  29. 07:18:13.619383 trace git-lfs: xfer: adapter "basic" started
  30. 07:18:13.619413 trace git-lfs: xfer: adapter "basic" worker 1 starting
  31. 07:18:13.619537 trace git-lfs: xfer: adapter "basic" worker 1 waiting for Auth
  32. 07:18:13.619549 trace git-lfs: xfer: adapter "basic" worker 5 starting
  33. 07:18:13.619585 trace git-lfs: xfer: adapter "basic" worker 5 waiting for Auth
  34. 07:18:13.619642 trace git-lfs: xfer: adapter "basic" worker 0 starting
  35. 07:18:13.619673 trace git-lfs: xfer: adapter "basic" worker 6 starting
  36. 07:18:13.619681 trace git-lfs: xfer: adapter "basic" worker 0 processing job for "b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e"
  37. 07:18:13.619702 trace git-lfs: xfer: adapter "basic" worker 7 starting
  38. 07:18:13.619722 trace git-lfs: xfer: adapter "basic" worker 7 waiting for Auth
  39. 07:18:13.619732 trace git-lfs: xfer: adapter "basic" worker 2 starting
  40. 07:18:13.619775 trace git-lfs: xfer: adapter "basic" worker 2 waiting for Auth
  41. 07:18:13.619723 trace git-lfs: xfer: adapter "basic" worker 4 starting
  42. 07:18:13.619775 trace git-lfs: xfer: adapter "basic" worker 3 starting
  43. 07:18:13.619805 trace git-lfs: xfer: adapter "basic" worker 3 waiting for Auth
  44. 07:18:13.619788 trace git-lfs: xfer: adapter "basic" worker 4 waiting for Auth
  45. 07:18:13.619697 trace git-lfs: xfer: adapter "basic" worker 6 waiting for Auth
  46. 07:18:13.621028 trace git-lfs: HTTP: PUT http://git.ops.yunnex.com/suncard/packages.git/gitlab-lfs/objects/b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e/3
  47. > PUT /suncard/packages.git/gitlab-lfs/objects/b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e/3 HTTP/1.1
  48. > Host: git.ops.yunnex.com
  49. > Authorization: Basic * * * * *
  50. > Content-Length: 3
  51. > Content-Type: text/plain; charset=utf-8
  52. > User-Agent: git-lfs/2.5.1 (GitHub; linux amd64; go 1.11.4; git 7c940069fa)
  53. >
  54. 07:18:13.621492 trace git-lfs: xfer: adapter "basic" worker 7 auth signal received
  55. dd
  56. 07:18:13.621527 trace git-lfs: xfer: adapter "basic" worker 5 auth signal received
  57. 07:18:13.621536 trace git-lfs: xfer: adapter "basic" worker 4 auth signal received
  58. 07:18:13.621563 trace git-lfs: xfer: adapter "basic" worker 2 auth signal received
  59. 07:18:13.621571 trace git-lfs: xfer: adapter "basic" worker 3 auth signal received
  60. 07:18:13.621579 trace git-lfs: xfer: adapter "basic" worker 6 auth signal received
  61. 07:18:13.621522 trace git-lfs: xfer: adapter "basic" worker 1 auth signal received
  62. 07:18:13.786463 trace git-lfs: HTTP: 500
  63. < HTTP/1.1 500 Internal Server Error
  64. < Content-Length: 2911
  65. < Cache-Control: no-cache, no-store, max-age=0, must-revalidate
  66. < Connection: keep-alive
  67. < Content-Type: text/html; charset=utf-8
  68. < Date: Thu, 24 Sep 2020 07:18:13 GMT
  69. < Expires: Fri, 01 Jan 1990 00:00:00 GMT
  70. < Pragma: no-cache
  71. < Server: nginx
  72. < X-Request-Id: 0574e8c0-8ee8-4667-8141-1982d67c0bdc
  73. < X-Runtime: 0.162882
  74. <
  75. 07:18:13.786829 trace git-lfs: xfer: adapter "basic" worker 0 finished job for "b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e"
  76. 07:18:13.786927 trace git-lfs: tq: retrying object b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e: Fatal error: Server error: http://git.ops.yunnex.com/suncard/packages.git/gitlab-lfs/objects/b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e/3
  77. 07:18:13.787030 trace git-lfs: tq: enqueue retry #1 for "b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e" (size: 3)
  78. 07:18:13.787091 trace git-lfs: tq: sending batch of size 1
  79. 07:18:13.787212 trace git-lfs: api: batch 1 files
  80. 07:18:13.787330 trace git-lfs: HTTP: POST http://xxxxx:xxxxx@git.ops.yunnex.com/suncard/packages.git/info/lfs/objects/batch
  81. ...不断重试重复相同日志

其中关键请求如下

  1. 200 POST /suncard/packages.git/info/lfs/objects/batch
  2. 500 PUT /suncard/packages.git/gitlab-lfs/objects/b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e/3

同时到gitlab server执行tail -f /var/log/gitlab//.log,日志如下

  1. ==> /var/log/gitlab/gitlab-rails/production.log <==
  2. Started POST "/suncard/packages.git/info/lfs/objects/batch" for 10.10.51.195 at 2020-09-24 15:23:16 +0800
  3. Processing by Projects::LfsApiController#batch as JSON
  4. Parameters: {"operation"=>"upload", "objects"=>[{"oid"=>"b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e", "size"=>3}], "ref"=>{"name"=>"refs/heads/test-branch"}, "namespace_id"=>"suncard", "project_id"=>"packages.git", "lfs_api"=>{"operation"=>"upload", "objects"=>[{"oid"=>"b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e", "size"=>3}], "ref"=>{"name"=>"refs/heads/test-branch"}}}
  5. Completed 200 OK in 138ms (Views: 0.3ms | ActiveRecord: 4.7ms)
  6. Started PUT "/suncard/packages.git/gitlab-lfs/objects/b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e/3" for 10.10.51.195 at 2020-09-24 15:23:17 +0800
  7. Processing by Projects::LfsStorageController#upload_finalize as HTML
  8. Parameters: {"namespace_id"=>"suncard", "project_id"=>"packages.git", "oid"=>"b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e", "size"=>"3"}
  9. Completed 500 Internal Server Error in 104ms (ActiveRecord: 2.6ms)
  10. NoMethodError (undefined method `include?' for nil:NilClass):
  11. app/controllers/projects/lfs_storage_controller.rb:55:in `tmp_filename'
  12. app/controllers/projects/lfs_storage_controller.rb:23:in `upload_finalize'
  13. lib/gitlab/i18n.rb:45:in `with_locale'
  14. lib/gitlab/i18n.rb:51:in `with_user_locale'
  15. app/controllers/application_controller.rb:294:in `set_locale'
  16. lib/gitlab/performance_bar/peek_performance_bar_with_rack_body.rb:16:in `call'
  17. lib/gitlab/middleware/multipart.rb:93:in `call'
  18. lib/gitlab/request_profiler/middleware.rb:14:in `call'
  19. lib/gitlab/middleware/go.rb:16:in `call'
  20. lib/gitlab/etag_caching/middleware.rb:11:in `call'
  21. lib/gitlab/request_context.rb:18:in `call'
  22. lib/gitlab/metrics/connection_rack_middleware.rb:31:in `call'
  23. ...不断重试重复相同日志
  24. ==> /var/log/gitlab/nginx/gitlab_access.log <==
  25. 10.10.51.195 - - [24/Sep/2020:15:23:16 +0800] "GET /suncard/packages.git/info/refs?service=git-upload-pack HTTP/1.1" 200 701 "-" "git/2.20.2"
  26. 10.10.51.195 - production [24/Sep/2020:15:23:16 +0800] "POST /suncard/packages.git/info/lfs/locks/verify HTTP/1.1" 404 1489 "-" "git-lfs/2.5.1 (GitHub; linux amd64; go 1.11.4; git 7c940069fa)"
  27. 10.10.51.195 - production [24/Sep/2020:15:23:17 +0800] "POST /suncard/packages.git/info/lfs/objects/batch HTTP/1.1" 200 251 "-" "git-lfs/2.5.1 (GitHub; linux amd64; go 1.11.4; git 7c940069fa)"
  28. 10.10.51.195 - production [24/Sep/2020:15:23:17 +0800] "PUT /suncard/packages.git/gitlab-lfs/objects/b6f9dd313cde39ae1b87e63b9b457029bcea6e9520b5db5de20d3284e4c0259e/3 HTTP/1.1" 500 2911 "-" "git-lfs/2.5.1 (GitHub; linux amd64; go 1.11.4; git 7c940069fa)"
  29. 10.10.51.195 - production [24/Sep/2020:15:23:17 +0800] "POST /suncard/packages.git/info/lfs/objects/batch HTTP/1.1" 200 251 "-" "git-lfs/2.5.1 (GitHub; linux amd64; go 1.11.4; git 7c940069fa)"

可见与client对应,500的报错信息如下,但是搜索后发现没有相关线索

  1. NoMethodError (undefined method `include?' for nil:NilClass):
  2. app/controllers/projects/lfs_storage_controller.rb:55:in `tmp_filename'
  3. app/controllers/projects/lfs_storage_controller.rb:23:in `upload_finalize'
  4. lib/gitlab/i18n.rb:45:in `with_locale'

2.2 对比测试

线索中断,想到机器A可以正常push,所以进行对比观察,执行相同操作,client日志如下

  1. 23:15:15.348869 trace git-lfs: HTTP: POST http://production:Use_1990@git.ops.yunnex.com/suncard/packages.git/info/lfs/objects/batch
  2. > POST /suncard/packages.git/info/lfs/objects/batch HTTP/1.1
  3. > Host: git.ops.yunnex.com
  4. > Accept: application/vnd.git-lfs+json; charset=utf-8
  5. > Content-Length: 158
  6. > Content-Type: application/vnd.git-lfs+json; charset=utf-8
  7. > User-Agent: git-lfs/2.4.2 (GitHub; linux amd64; go 1.9.4)
  8. >
  9. {"operation":"upload","objects":[{"oid":"9a92adbc0cee38ef658c71ce1b1bf8c65668f166bfb213644c895ccb1ad07a25","size":3}],"ref":{"name":"refs/heads/test-branch"}}23:15:15.525308 trace git-lfs: HTTP: 200
  10. < HTTP/1.1 200 OK
  11. < Transfer-Encoding: chunked
  12. < Cache-Control: max-age=0, private, must-revalidate
  13. < Connection: keep-alive
  14. < Content-Type: application/json; charset=utf-8
  15. < Date: Thu, 24 Sep 2020 15:15:15 GMT
  16. < Etag: W/"486d174eca874b88d375fecca47236e2"
  17. < Server: nginx
  18. < Strict-Transport-Security: max-age=31536000
  19. < X-Content-Type-Options: nosniff
  20. < X-Frame-Options: DENY
  21. < X-Request-Id: b87656c2-5593-4e19-bdc0-ea522657b9fc
  22. < X-Runtime: 0.172955
  23. < X-Ua-Compatible: IE=edge
  24. < X-Xss-Protection: 1; mode=block
  25. <
  26. 23:15:15.525557 trace git-lfs: HTTP: {"objects":[{"oid":"9a92adbc0cee38ef658c71ce1b1bf8c65668f166bfb213644c895ccb1ad07a25","size":3,"actions":{"upload":{"href":"http://git.ops.yunnex.com/suncard/packages.git/gitlab-lfs/objects/9a92adbc0cee38ef658c71ce1b1bf8c65668f166bfb213644c895ccb1ad07a25/3","header":{"Authorization":"Basic cHJvZHVjdGlvbjpVc2VfMTk5MA=="}}}}]}
  27. {"objects":[{"oid":"9a92adbc0cee38ef658c71ce1b1bf8c65668f166bfb213644c895ccb1ad07a25","size":3,"actions":{"upload":{"href":"http://git.ops.yunnex.com/suncard/packages.git/gitlab-lfs/objects/9a92adbc0cee38ef658c71ce1b1bf8c65668f166bfb213644c895ccb1ad07a25/3","header":{"Authorization":"Basic cHJvZHVjdGlvbjpVc2VfMTk5MA=="}}}}]}23:15:15.525647 trace git-lfs: tq: starting transfer adapter "basic"
  28. 23:15:15.525662 trace git-lfs: xfer: adapter "basic" Begin() with 8 workers
  29. 23:15:15.525669 trace git-lfs: xfer: adapter "basic" started
  30. 23:15:15.525700 trace git-lfs: xfer: adapter "basic" worker 0 starting
  31. 23:15:15.525705 trace git-lfs: xfer: adapter "basic" worker 0 processing job for "9a92adbc0cee38ef658c71ce1b1bf8c65668f166bfb213644c895ccb1ad07a25"
  32. 23:15:15.525723 trace git-lfs: xfer: adapter "basic" worker 4 starting
  33. 23:15:15.525736 trace git-lfs: xfer: adapter "basic" worker 4 waiting for Auth
  34. 23:15:15.525759 trace git-lfs: xfer: adapter "basic" worker 6 starting
  35. 23:15:15.525770 trace git-lfs: xfer: adapter "basic" worker 6 waiting for Auth
  36. 23:15:15.525773 trace git-lfs: xfer: adapter "basic" worker 7 starting
  37. 23:15:15.525780 trace git-lfs: xfer: adapter "basic" worker 7 waiting for Auth
  38. 23:15:15.525777 trace git-lfs: xfer: adapter "basic" worker 5 starting
  39. 23:15:15.525789 trace git-lfs: xfer: adapter "basic" worker 5 waiting for Auth
  40. 23:15:15.525754 trace git-lfs: xfer: adapter "basic" worker 3 starting
  41. 23:15:15.525796 trace git-lfs: xfer: adapter "basic" worker 3 waiting for Auth
  42. 23:15:15.525731 trace git-lfs: xfer: adapter "basic" worker 2 starting
  43. 23:15:15.525803 trace git-lfs: xfer: adapter "basic" worker 2 waiting for Auth
  44. 23:15:15.525821 trace git-lfs: xfer: adapter "basic" worker 1 starting
  45. 23:15:15.525836 trace git-lfs: xfer: adapter "basic" worker 1 waiting for Auth
  46. 23:15:15.525855 trace git-lfs: HTTP: PUT http://git.ops.yunnex.com/suncard/packages.git/gitlab-lfs/objects/9a92adbc0cee38ef658c71ce1b1bf8c65668f166bfb213644c895ccb1ad07a25/3
  47. > PUT /suncard/packages.git/gitlab-lfs/objects/9a92adbc0cee38ef658c71ce1b1bf8c65668f166bfb213644c895ccb1ad07a25/3 HTTP/1.1
  48. > Host: git.ops.yunnex.com
  49. > Authorization: Basic * * * * *
  50. > Content-Length: 3
  51. > Content-Type: application/octet-stream
  52. > User-Agent: git-lfs/2.4.2 (GitHub; linux amd64; go 1.9.4)
  53. >
  54. 23:15:15.525963 trace git-lfs: xfer: adapter "basic" worker 7 auth signal received
  55. 23:15:15.525968 trace git-lfs: xfer: adapter "basic" worker 6 auth signal received
  56. 23:15:15.525969 trace git-lfs: xfer: adapter "basic" worker 3 auth signal received
  57. 23:15:15.525970 trace git-lfs: xfer: adapter "basic" worker 2 auth signal received
  58. 23:15:15.525972 trace git-lfs: xfer: adapter "basic" worker 4 auth signal received
  59. 23:15:15.526006 trace git-lfs: xfer: adapter "basic" worker 5 auth signal received
  60. 23:15:15.526027 trace git-lfs: xfer: adapter "basic" worker 1 auth signal received
  61. 23:15:15.931456 trace git-lfs: HTTP: 200
  62. < HTTP/1.1 200 OK
  63. < Content-Length: 0
  64. < Cache-Control: no-cache
  65. < Connection: keep-alive
  66. < Content-Type: text/html
  67. < Date: Thu, 24 Sep 2020 15:15:15 GMT
  68. < Server: nginx
  69. < Strict-Transport-Security: max-age=31536000
  70. < X-Content-Type-Options: nosniff
  71. < X-Frame-Options: DENY
  72. < X-Request-Id: e0ce367a-adce-44bd-b1ed-29a33f756bb5
  73. < X-Runtime: 0.245919
  74. < X-Ua-Compatible: IE=edge
  75. < X-Xss-Protection: 1; mode=block
  76. <
  77. 23:15:15.931592 trace git-lfs: xfer: adapter "basic" worker 0 finished job for "9a92adbc0cee38ef658c71ce1b1bf8c65668f166bfb213644c895ccb1ad07a25"
  78. 23:15:15.931664 trace git-lfs: xfer: adapter "basic" End()
  79. 23:15:15.931671 trace git-lfs: xfer: adapter "basic" worker 7 stopping
  80. 23:15:15.931675 trace git-lfs: xfer: adapter "basic" worker 2 stopping
  81. 23:15:15.931684 trace git-lfs: xfer: adapter "basic" worker 6 stopping
  82. 23:15:15.931685 trace git-lfs: xfer: adapter "basic" worker 3 stopping
  83. 23:15:15.931689 trace git-lfs: xfer: adapter "basic" worker 5 stopping
  84. 23:15:15.931692 trace git-lfs: xfer: adapter "basic" worker 1 stopping
  85. 23:15:15.931688 trace git-lfs: xfer: adapter "basic" worker 0 stopping
  86. 23:15:15.931682 trace git-lfs: xfer: adapter "basic" worker 4 stopping
  87. 23:15:15.931726 trace git-lfs: xfer: adapter "basic" stopped
  88. 23:15:15.931787 trace git-lfs: filepathfilter: rewrite ".git" as "**/.git/**"
  89. 23:15:15.931801 trace git-lfs: filepathfilter: rewrite "**/.git" as "**/.git"
  90. 23:15:15.931819 trace git-lfs: filepathfilter: rejecting "tmp" via []
  91. 23:15:15.931824 trace git-lfs: filepathfilter: accepting "tmp"
  92. Uploading LFS objects: 100% (1/1), 3 B | 0 B/s, done

其中关键请求如下,其中500请求已变成200

  1. 200 POST /suncard/packages.git/info/lfs/objects/batch
  2. 200 PUT /suncard/packages.git/gitlab-lfs/objects/9a92adbc0cee38ef658c71ce1b1bf8c65668f166bfb213644c895ccb1ad07a25/3

而gitalb server对应日志如下

  1. ==> /var/log/gitlab/gitlab-rails/production.log <==
  2. Started POST "/suncard/packages.git/info/lfs/objects/batch" for 192.168.1.25 at 2020-09-23 18:36:27 +0800
  3. Processing by Projects::LfsApiController#batch as JSON
  4. Parameters: {"operation"=>"upload", "objects"=>[{"oid"=>"edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb", "size"=>4}], "ref"=>{"name"=>"refs/heads/test-branch"}, "namespace_id"=>"suncard", "project_id"=>"packages.git", "lfs_api"=>{"operation"=>"upload", "objects"=>[{"oid"=>"edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb", "size"=>4}], "ref"=>{"name"=>"refs/heads/test-branch"}}}
  5. Completed 200 OK in 195ms (Views: 0.3ms | ActiveRecord: 6.1ms)
  6. Started PUT "/suncard/packages.git/gitlab-lfs/objects/edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb/4/authorize" for 192.168.1.25 at 2020-09-23 18:36:28 +0800
  7. Processing by Projects::LfsStorageController#upload_authorize as HTML
  8. Parameters: {"namespace_id"=>"suncard", "project_id"=>"packages.git", "oid"=>"edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb", "size"=>"4"}
  9. Completed 200 OK in 114ms (Views: 0.2ms | ActiveRecord: 3.0ms)
  10. Started PUT "/suncard/packages.git/gitlab-lfs/objects/edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb/4" for 192.168.1.25 at 2020-09-23 18:36:28 +0800
  11. Processing by Projects::LfsStorageController#upload_finalize as HTML
  12. Parameters: {"namespace_id"=>"suncard", "project_id"=>"packages.git", "oid"=>"edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb", "size"=>"4"}
  13. Completed 200 OK in 169ms (ActiveRecord: 51.1ms)
  14. Updating statistics for project 32
  15. ==> /var/log/gitlab/nginx/gitlab_access.log <==
  16. 192.168.1.25 - production [23/Sep/2020:18:36:28 +0800] "POST /suncard/packages.git/info/lfs/objects/batch HTTP/1.1" 200 251 "-" "git-lfs/2.4.2 (GitHub; linux amd64; go 1.9.4)"
  17. 192.168.1.25 - production [23/Sep/2020:18:36:28 +0800] "PUT /suncard/packages.git/gitlab-lfs/objects/edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb/4 HTTP/1.1" 200 0 "-" "git-lfs/2.4.2 (GitHub; linux amd64; go 1.9.4)"

变化如下

  1. # 多了1200 请求
  2. PUT "/suncard/packages.git/gitlab-lfs/objects/edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb/4/authorize"
  3. # 下列请求从500变为200
  4. 200 PUT "/suncard/packages.git/gitlab-lfs/objects/edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb/4"

gitlab server相同、操作的仓库分支相同的情况下,这样的差异推测是client客户端导致的了,先来看版本

  1. git --version 1.8.3.1(正常) 2.20.4(异常)
  2. git lfs version 2.4.2(正常) 2.5.1(异常)

其中正常的机器A是物理机centos用yum安装的git和git-lfs;异常的是跑在k8s集群中基于alpine的pod,是通过apk安装的,遂尝试apk降级git和git-lfs到机器A正常vb.net教程的版本。apk降级需要到其市场查找目标版本https://pkgs.alpinelinux.org/packages?name=git-lfs&branch=v3.9 。
file
再通过降通过降repository版本来安装低版本的软c#教程件包,原alpine是v3.9,现在尝试改为v3.8

apk add --no-cache --repository http://mirrors.aliyun.com/alpine/v3.8/main --repository http://mirrors.aliyun.com/alpine/v3.8/community 'git-lfs=2.4.2-r1'

再次执行原push等操作,终于正常了!以防万一,再到原本正常的机器A把git-lfs升级一下,看是否也异常。

  1. 安装过程:
  2. mkdir /tmp/test
  3. wget https://github.com/git-lfs/git-lfs/releases/download/v2.5.1/git-lfs-linux-amd64-v2.5.1.tar.gz
  4. tar -xvf git-lfs-linux-amd64-v2.5.1.tar.gz
  5. # 这样就可以在不影响原git-lfs安装的情况下进行测试,后续用/tmp/test/git-lfs进行push等操作
  6. /tmp/test/git-lfs version

果不其然,也重现了相同异常。

3 结论

首先异常与git版本没有关系,只和git-lfs版本有关。之后又尝试了更低的2.3.x、更高的2.6.x~2.11.x。确定是从2.5.x开始的版本有异常。另外还需python基础教程要关注gitlab的版本,目前为9.4.1

  1. sudo gitlab-rake gitlab:env:info
  2. System information
  3. System:
  4. Current User: git
  5. Using RVM: no
  6. Ruby Version: 2.3.3p222
  7. Gem Version: 2.6.6
  8. Bundler Version:1.13.7
  9. Rake Version: 10.5.0
  10. Redis Version: 3.2.5
  11. Git Version: 2.13.0
  12. Sidekiq Version:5.0.0
  13. Go Version: unknown
  14. GitLab information
  15. Version: 9.4.1
  16. Revision: 6678b4e
  17. Directory: /opt/gitlab/embedded/service/gitlab-rails
  18. DB Adapter: postgresql
  19. URL: http://git.ops.yunnex.com
  20. HTTP Clone URL: http://git.ops.yunnex.com/some-group/some-project.git
  21. SSH Clone URL: git@git.ops.yunnex.com:some-group/some-project.git
  22. Using LDAP: yes
  23. Using Omniauth: no
  24. GitLab Shell
  25. Version: 5.3.1
  26. Repository storage paths:
  27. - default: /var/opt/gitlab/git-data/repositories
  28. Hooks: /opt/gitlab/embedded/service/gitlab-shell/hooks
  29. Git: /opt/gitlab/embedded/bin/git

目前只能推测该gitlab/lfs server版本与git lfs client push不兼容,所以采取的java基础教程方案是lfs降为2.4.x,alpine使用v3.8 repository重新sql教程安装git-lfs。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/806690
推荐阅读
相关标签
  

闽ICP备14008679号