Кто-нибудь может сказать мне, как исправить ошибку? Удаленный сервер возвратил ошибку: (409) Конфликт.

Я использую Automation Runbook для создания моментального снимка файлов Azure. И я получаю одну ошибку

Исключение вызывает «Снимок» с аргументом (ами) «0»: «Удаленный сервер возвратил ошибку: (409) Конфликт». В строке: 3 символа: 1 + $ snapshot = $ share.Snapshot () + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: StorageException,

но это было непоследовательно.

Я использую модуль Runbook для создания моментальных снимков файлов Azure. Сначала это может работать хорошо, но недавно возникли ошибки типа «Удаленный сервер возвратил ошибку: (409) Конфликт».

Я использую приведенный ниже код для создания снимков каждый день.

$context = New-AzureStorageContext -StorageAccountName "storage" -StorageAccountKey "********"
$share = Get-AzureStorageShare -Context $context -Name "test"
$snapshot = $share.Snapshot()

Я хочу исправить ошибку.

Исключение вызывает «Снимок» с аргументом (ами) «0»: «Удаленный сервер возвратил ошибку: (409) Конфликт». В строке: 3 символа: 1 + $ snapshot = $ share.Snapshot () + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: StorageException


person Arthur    schedule 29.07.2019    source источник
comment
Попробуйте обновить AzureStorage и зависимые модули из галереи модулей в своей учетной записи службы автоматизации. Галерея модулей ›Искать модуль› Импорт.   -  person tush4r    schedule 31.07.2019
comment
Спасибо за ваш комментарий, я проверил версию модуля хранилища Azure (4.6.1) и обнаружил, что она самая новая. Не могли бы вы показать мне больше информации о зависимых модулях?   -  person Arthur    schedule 01.08.2019
comment
Не могли бы вы подтвердить, выполняете ли вы какие-либо из следующих 409-х docs.microsoft.com/en-us/rest/api/storageservices/   -  person tush4r    schedule 01.08.2019
comment
@Arthur, просто для целей тестирования, не могли бы вы написать новый модуль Runbook и создать новый файловый ресурс, а затем проверить, может ли он работать? а также проверьте его на своем компьютере, чтобы убедиться, что он работает.   -  person Ivan Yang    schedule 01.08.2019
comment
Кстати, я запускаю несколько модулей Runbook одновременно, не повлияет ли это на производительность. И иногда, когда я встречал ошибку, снимок может быть успешно создан.   -  person Arthur    schedule 01.08.2019
comment
@IvanYang Я попытался написать новый модуль Runbook и создать новый файловый ресурс, он может работать хорошо. Думаю, может быть, есть какие-то проблемы с Azure или расписаниями.   -  person Arthur    schedule 01.08.2019
comment
@Arthur, судя по результатам тестирования, может ты и прав. Отладить такие проблемы немного сложно. Вам все еще нужно использовать этот файловый ресурс?   -  person Ivan Yang    schedule 01.08.2019
comment
@IvanYang Да, я использую Runbook для создания ежедневных / ежемесячных снимков и удаления снимков через одну неделю / два месяца.   -  person Arthur    schedule 01.08.2019
comment
Позвольте нам продолжить это обсуждение в чате.   -  person Ivan Yang    schedule 01.08.2019
comment
@IvanYang Привет, Иван. Вы знаете, как связать предупреждение с службой автоматизации Azure? Например, когда я получил эту ошибку, модуль Runbook, который создает моментальный снимок, будет запущен снова. Огромное спасибо.   -  person Arthur    schedule 06.08.2019
comment
@Arthur, почему бы просто не использовать try-catch в модуле Runbook? если выдает ошибку, просто создать заново?   -  person Ivan Yang    schedule 06.08.2019
comment
@IvanYang Мне очень жаль, что я не знал этого раньше. Поэтому мне просто нужно обновить свой код Runbook, как показано ниже: $RetryIntervalInSeconds = 10 $NumberOfRetryAttempts = 2 $CmdOk = $False do{ try{ *the code I using now $CmdOk = $True} catch{ * the error I met $NumberOfRetryAttempts-- Start-Sleep -Seconds $RetryIntervalInSeconds } } while (-not $CmdOk -and $NumberOfRetryAttempts -ge 0). Это правильно?   -  person Arthur    schedule 06.08.2019
comment
@Arthur, ваш код выглядит правильно.   -  person Ivan Yang    schedule 06.08.2019


Ответы (1)


Согласно обсуждению с Артуром, мы пытаемся использовать try-catch в качестве обходного пути, так как мы не выяснили основную причину.

когда операция создания снимка завершается неудачно, мы можем повторить попытку несколько раз (например, 3 раза). Пример кода, как показано ниже:

$RetryIntervalInSeconds = 10 
$NumberOfRetryAttempts = 2 
$CmdOk = $False 
do{ 
try{ *the code I using now $CmdOk = $True} 
catch{ * the error I met $NumberOfRetryAttempts-- Start-Sleep -Seconds $RetryIntervalInSeconds } 
} 
while (-not $CmdOk -and $NumberOfRetryAttempts -ge 0)
person Ivan Yang    schedule 06.08.2019
comment
@Fennec @ Иван Ян Привет, прошу прощения за повтор. Я обновил модули Azure и тестировал их около двух недель. Это может хорошо работать. Ошибка может быть вызвана старой версией PowerShell. Итак, я установил новый модуль PowerShell: ** Az.Storage ** и зависимый модуль ** Az.Accounts. ** Затем обновили коды, как показано ниже: $context = New-AzStorageContext -StorageAccountName "storage" -StorageAccountKey "********" $share = Get-AzStorageShare -Context $context -Name "test" $snapshot = $share.Snapshot() - person Arthur; 20.08.2019
comment
@ Артур, это хорошо. Сейчас мы используем модуль az, но не думали, что это будет проблемой в старом модуле azureRm. Спасибо, что поделились. - person Ivan Yang; 20.08.2019