Ошибка jclouds putBlob с B2 — заголовок Cache-Control не поддерживается или не разрешен

Я только что создал корзину b2 и пытаюсь загрузить файл с помощью jclouds.

PayloadBlobBuilder blobBuilder = blobStore.blobBuilder(remoteFileName)
        .payload(payload)
        .contentLength(payload.size());

Blob blob = blobBuilder.build();

String eTag = blobStore.putBlob(containerName, blob);

Я получаю сведения об исключении, как показано ниже.

java.lang.IllegalArgumentException: Cache-Control header is not supported or allowed
    at org.jclouds.b2.handlers.ParseB2ErrorFromJsonContent.refineException(ParseB2ErrorFromJsonContent.java:45)
    at org.jclouds.b2.handlers.ParseB2ErrorFromJsonContent.handleError(ParseB2ErrorFromJsonContent.java:58)
    at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:65)
    at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:138)
    at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:107)
    at org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:91)
    at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:74)
    at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:45)
    at org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
    at com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
    at com.sun.proxy.$Proxy402.uploadFile(Unknown Source)
    at org.jclouds.b2.blobstore.B2BlobStore.putBlob(B2BlobStore.java:242)
    at org.jclouds.b2.blobstore.B2BlobStore.putBlob(B2BlobStore.java:223)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.google.inject.internal.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
    at com.sun.proxy.$Proxy387.putBlob(Unknown Source)

Caused by: org.jclouds.b2.B2ResponseException: request POST https://pod-000-1094-01.backblaze.com/b2api/v1/b2_upload_file/xxxx/c002_v0001094_t0008 HTTP/1.1 failed with code 400, error: B2Error{code=bad_request, message=Cache-Control header is not supported or allowed, status=400}
    ... 24 common frames omitted

Есть ли что-то, что мне не хватает.


person Timothy Anyona    schedule 06.05.2018    source источник


Ответы (1)


Служба B2 выдает эту ошибку и документирует Cache-Control как неподдерживаемую:

Следующие заголовки HTTP не должны включаться в запрос b2_upload_file:

  • Кэш-Контроль
person Andrew Gaul    schedule 06.05.2018
comment
Не могли бы вы указать фрагмент кода, который можно использовать для загрузки файла в B2 с помощью jclouds? Есть ли что-то во фрагменте кода в вопросе, который мне нужно удалить или добавить? - person Timothy Anyona; 07.05.2018
comment
Как вы настроили jclouds, например, модули? Вы используете клиент HTTP по умолчанию или другой? - person Andrew Gaul; 10.01.2019
comment
Я полагаю, что использовал минимальный код/код по умолчанию/пример, поэтому, вероятно, использовал клиент http по умолчанию. Я использовал модуль slf4j для ведения журнала. Однако тот же код, который раньше не работал, теперь работает. Возможно, b2 что-то изменили со своей стороны. Я разместил обновление в системе отслеживания проблем jclouds — issues.apache.org/jira/browse/ JCLODS-1416 - person Timothy Anyona; 11.01.2019