我有一堂课,可将对象复制到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
我认为它是从昨天开始的,此后一直发生,不仅发生在这个桶上。
答案 0 :(得分:4)
就处理RewriteToken
的{{1}}部分而言,这是客户端库中的错误。我们以为在操作完成时不会设置它,并且看来最近它开始被设置为空字符串。
我们已经修复了使用RewriteObjectResponse
属性的代码,并发布了Done
软件包的两个新版本: