【问题标题】:google cloud gsutil cp ResumableUploadAbortException: 408 Upload Client Broken Connection errorgoogle cloud gsutil cp ResumableUploadAbortException: 408 Upload Client Broken Connection 错误
【发布时间】:2020-08-06 19:40:04
【问题描述】:

我正在使用 gsutil cp 将一个大文件(大约 40g)从本地驱动程序移动到 gcs 存储桶。它以前运行良好,不知何故现在我不断收到“ResumableUploadAbortException: 408 Upload Client Broken Connection”。我尝试使用 gsutil cp 来移动一个小文件,它工作正常。

我在命令中加了一个-D:gsutil -D cp,这是我得到的跟踪:

DEBUG: Exception stack trace:iB]   80.0 MiB/s                                   
    Traceback (most recent call last):
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/gcs_json_api.py", line 1592, in _PerformResumableUpload
        additional_headers=addl_headers)
      File "/home/test/google-cloud-sdk/platform/gsutil/third_party/apitools/apitools/base/py/transfer.py", line 1013, in StreamMedia
        additional_headers=additional_headers, use_chunks=False)
      File "/home/test/google-cloud-sdk/platform/gsutil/third_party/apitools/apitools/base/py/transfer.py", line 968, in __StreamMedia
        raise exceptions.HttpError.FromResponse(response)
    apitools.base.py.exceptions.HttpError: HttpError accessing <https://storage.googleapis.com/resumable/upload/storage/v1/b/charleszhan-dss-playground-bucket/o?alt=json&fields=etag%2Cgeneration%2Cmd5Hash%2Csize%2CcustomerEncryption%2Ccrc32c&uploadType=resumable&upload_id=AAANsUlrnIDRqoTNIeFM87J5TpvSOiKlxr-kfWMkYG0sO1qocki09C773h-z1V_JPAJ_jFGMyk-3fi7z35uf8-_ZsWBE8svx7w>: response: <{'x-guploader-uploadid': 'AAANsUlrnIDRqoTNIeFM87J5TpvSOiKlxr-kfWMkYG0sO1qocki09C773h-z1V_JPAJ_jFGMyk-3fi7z35uf8-_ZsWBE8svx7w', 'content-type': 'application/json; charset=UTF-8', 'date': 'Fri, 07 Aug 2020 15:28:34 GMT', 'vary': 'Origin, X-Origin', 'cache-control': 'no-cache, no-store, max-age=0, must-revalidate', 'expires': 'Mon, 01 Jan 1990 00:00:00 GMT', 'pragma': 'no-cache', 'content-length': '251', 'server': 'UploadServer', 'alt-svc': 'h3-29=":443"; ma=2592000,h3-27=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"', 'status': '408'}>, content <{
      "error": {
        "code": 408,
        "message": "Upload Client Broken Connection",
        "errors": [
          {
            "message": "Upload Client Broken Connection",
            "domain": "global",
            "reason": "uploadBrokenConnection"
          }
        ]
      }
    }
    >
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/__main__.py", line 633, in _RunNamedCommandAndHandleExceptions
        user_project=user_project)
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/command_runner.py", line 411, in RunNamedCommand
        return_code = command_inst.RunCommand()
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/commands/cp.py", line 1195, in RunCommand
        seek_ahead_iterator=seek_ahead_iterator)
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/command.py", line 1515, in Apply
        arg_checker, should_return_results, fail_on_error)
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/command.py", line 1586, in _SequentialApply
        worker_thread.PerformTask(task, self)
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/command.py", line 2306, in PerformTask
        results = task.func(cls, task.args, thread_state=self.thread_gsutil_api)
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/commands/cp.py", line 780, in _CopyFuncWrapper
        preserve_posix=cls.preserve_posix_attrs)
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/commands/cp.py", line 995, in CopyFunc
        preserve_posix=preserve_posix)
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/utils/copy_helper.py", line 3928, in PerformCopy
        gzip_encoded=gzip_encoded)
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/utils/copy_helper.py", line 2220, in _UploadFileToObject
        parallel_composite_upload, logger)
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/utils/copy_helper.py", line 2036, in _DelegateUploadFileToObject
        elapsed_time, uploaded_object = upload_delegate()
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/utils/copy_helper.py", line 2209, in CallResumableUpload
        gzip_encoded=gzip_encoded_file)
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/utils/copy_helper.py", line 1837, in _UploadFileToObjectResumable
        gzip_encoded=gzip_encoded)
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/cloud_api_delegator.py", line 421, in UploadObjectResumable
        gzip_encoded=gzip_encoded)
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/gcs_json_api.py", line 1734, in UploadObjectResumable
        gzip_encoded=gzip_encoded)
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/gcs_json_api.py", line 1517, in _UploadObject
        additional_headers, progress_callback, gzip_encoded)
      File "/home/test/google-cloud-sdk/platform/gsutil/gslib/gcs_json_api.py", line 1655, in _PerformResumableUpload
        raise resumable_ex
    gslib.cloud_api.ResumableUploadAbortException: ResumableUploadAbortException: 408 Upload Client Broken Connection

【问题讨论】:

  • 你的充电速度是多少?您估计您的服务器在一个存储桶中上传 40GB 需要多长时间?这是因为在此 github issue 中提到了 a week is the maximum lifetime for an ongoing upload
  • 最多需要半小时左右。当所有数据都上传并尝试执行 md5 检查时,总是会发生错误。
  • 感谢您提供的日志,这看起来像是 Google Cloud Storage 后端的问题,我建议您打开 public issue tracker

标签: google-cloud-storage


【解决方案1】:

gsutil 会在您使用 cp 命令上传大于 8 MiB 的对象时自动执行可恢复上传。您不需要指定任何特殊的命令行选项来实现这一点。如果您的上传被中断,您可以通过运行与开始上传相同的 cp 命令重新开始上传。在上传成功完成之前,它在目标对象中不可见,并且不会替换上传要覆盖的任何现有对象。

【讨论】:

  • 感谢您的回复。你能看看我刚刚在我的帖子中添加的错误跟踪吗?当所有数据都上传并尝试执行一些检查时,总是会发生错误
猜你喜欢
  • 2016-11-01
  • 2019-07-28
  • 1970-01-01
  • 2015-01-30
  • 2018-06-01
  • 2019-02-26
  • 2015-05-14
  • 2019-06-03
  • 1970-01-01
相关资源
最近更新 更多