2013-02-21 1 views
0

Я реализую пакетное решение для загрузки для моего сервиса, в котором хранятся blobs в Azure. Это написано на Clojure, используя azure-sdk-for-java. Я могу загружать и фиксировать куски в виде блоков в блочном блобе. Однако перед отправкой любого блока необходимо выполнить некоторую проверку. Это включает в себя такие вещи, как проверка того, сколько пользователь загрузил до сих пор в отношении контента, который они предоставляют (мы не разрешаем повторную загрузку блоков).CloudBlockBlob downloadBlockList Иногда бросает Хранение Исключение (не удалось аутентифицировать)

Чтобы выполнить эти проверки, я использую метод CloudBlockBlob, downloadBlockList, чтобы получить данные о заблокированных и незафиксированных блоках по мере необходимости (а также получить список блоков, когда пришло время совершить). Однако в некоторых случаях это не удается, и я получаю следующее исключение: «com.microsoft.windowsazure.services.core.storage.StorageException: сервер не смог аутентифицировать запрос. Убедитесь, что значение заголовка авторизации сформировано правильно, включая подпись."

Это странно, потому что я никогда не получаю этот отказ, если я вызову downloadBlockList после загрузки блока, но я получаю его (иногда, но всегда в тех же случаях), если я вызываю метод и не загружаю. Если я поймаю исключение и сразу вызову downloadBlockList, он отлично работает.

Я использовал tcpdump, чтобы взглянуть на отправляемые заголовки, так как на некоторых форумах люди упомянули, что x-ms-date настроена неправильно, но это не так, и ничего не выглядит некорректным. Ответ равен 403 и жалуется на то, что подпись MAC в неправильном запросе.

Есть ли у кого-нибудь идеи, почему это происходит иногда, но если я снова вызову метод, сразу после того, как это работает, это работает?

ответ

0

Я работаю над SDK Azure Storage. Не могли бы вы рассказать о том, что вы упомянули. И, если возможно, имя учетной записи/время возникновения этой ошибки, поэтому я могу посмотреть на это с нашей стороны. Вы можете отправить конфиденциально в joegiard на Microsoft /.com.

Мы обновим эту тему для сообщества stackoverflow с результатами расследований.

джо

+0

Благодаря Джо, я послал по электронной почте – SirSlush86

+0

Просто, чтобы добавить что-то еще я обнаружил. Если я использую API остального, чтобы изучить один из моих неудачных капель, я получаю некоторые странные ответы. В момент сбоя должно быть 2 незафиксированных блока и не зафиксированные блоки. Если я использую параметры запроса: comp = blocklist & timeout = 90 & blocklisttype = COMMITTED, я правильно получаю ответ XML, который показывает, что нет заблокированных блоков, но если я использую все или uncommitted как blocklisttype, я получаю ошибку 404, заявляя, что ресурс не есть – SirSlush86

+0

Любое решение для этого? –

Смежные вопросы