在Google云对象中复制对象开始失败

时间:2018-11-14 12:55:43

标签: c# google-cloud-storage

我有一堂课,可将对象复制到Google云存储中,昨天突然停止工作。

这似乎是客户端错误,但我绝对不知道问题可能是什么。

在附件中,您将找到包含所有相关信息的屏幕截图。这是来自集成测试的,用于测试对Google云存储的抽象。

我要复制的样本:https://gist.github.com/SebastianStehle/ff8315f724f14c3e805e8986eff0f1ad

更简单的示例来再现它:

using Google.Cloud.Storage.V1;
using System;
using System.IO;

namespace GCETest
{
    public class Program
    {
        public  static void Main(string[] args)
        {
            var bucket = "squidex-test";
            var objectStream = new MemoryStream(new byte[] { 0x1, 0x2, 0x3, 0x4 });
            var objectName = Guid.NewGuid().ToString();

            var storageClient = StorageClient.Create();

            storageClient.UploadObject(bucket, objectName, "application/octet-stream", objectStream);
            storageClient.CopyObject(bucket, objectName, bucket, $"{objectName}_Copy");
        }
    }
}

完整例外:

The service storage has thrown an exception: Google.GoogleApiException: Google.Apis.Requests.RequestError
Invalid argument [400]
Errors [
    Message[Invalid argument] Location[ - ] Reason[invalid] Domain[global]
]

   at Google.Apis.Requests.ClientServiceRequest`1.Execute()
   at Google.Cloud.Storage.V1.StorageClientImpl.CopyObject(String sourceBucket, String sourceObjectName, String destinationBucket, String destinationObjectName, CopyObjectOptions options)
   at GCETest.Program.Main(String[] args) in C:\Users\mail2\source\repos\AzureTest\AzureTest\Program.cs:line 18

我认为它是从昨天开始的,此后一直发生,不仅发生在这个桶上。

Copy

1 个答案:

答案 0 :(得分:4)

就处理RewriteToken的{​​{1}}部分而言,这是客户端库中的错误。我们以为在操作完成时不会设置它,并且看来最近它开始被设置为空字符串。

我们已经修复了使用RewriteObjectResponse属性的代码,并发布了Done软件包的两个新版本:

  • 版本2.3.0-beta04是最新的预发布软件包
  • 2.2.1版适用于需要使用GA版本的用户