Получение AzureStorageOperationFailedConcurrentWrite во время операции копирования, инициируемой большим двоичным объектом, в Azure фабрике данных - PullRequest
0 голосов
/ 18 июня 2020

У меня есть конвейер Azure фабрики данных, который запускается BlobEventsTrigger. Его цель - скопировать большой двоичный объект, запускающий конвейер, в другой контейнер больших двоичных объектов, который будет служить в качестве резервной копии файла (с использованием операции копирования для исходного файла запуска). Конвейер работает нормально во время большинства триггеров, однако для некоторых файлов он не работает и приводит к ошибке, файлы, которые привели к ошибке, составляют от 50 МБ до 10 ГБ. Файлы меньшего размера копируются нормально.

Судя по сообщению об ошибке, операция копирования копируется по всему файлу, но не может sh сохранить его. После просмотра сообщений об ошибках от всех отказавших конвейеров запускается: ADF pipeline run error

Он всегда показывает, что записанные данные равны данным чтения.

"dataRead": 2094078711,
"dataWritten": 2094078711,
"filesRead": 1,
"filesWritten": 0,

ошибка, которую я получаю, имеет "Code": 24107, и это говорит о том, что было несколько одновременных попыток сохранения для этого файла, но есть только 1 запущенный экземпляр ресурса ADF, поэтому проблема не должна быть связана с несколькими триггерами, пытающимися сделать то же самое в то же время.

Error occurred when trying to upload a file. It's possible because you have multiple concurrent copy activities runs writing to the same file 'my_blob_filepath_here'. Check your ADF configuration

Я подумал, что, возможно, проблема заключалась в том, что файл начал копироваться до того, как был загружен весь большой двоичный объект, поэтому я добавил до l oop с некоторой активностью ожидания внутри чтобы убедиться, что действие GetMetaData вернет, что исходный файл существует, но это не помогло - проблема должна быть ie в чем-то другом. Я проверил документацию Microsoft на наличие этой ошибки, но на данный момент никаких дополнительных объяснений или советов не предоставлено.

Любые предложения о том, что еще может вызвать сбой некоторых из этих конвейерных запусков или что для проверки / изменения приветствуются.

Весь вывод ошибок из Copy Activity:

{
    "dataRead": 2094078711,
    "dataWritten": 2094078711,
    "filesRead": 1,
    "filesWritten": 0,
    "sourcePeakConnections": 10,
    "sinkPeakConnections": 16,
    "copyDuration": 21,
    "throughput": 97380.89,
    "errors": [
        {
            "Code": 24107,
            "Message": "Failure happened on 'Sink' side. ErrorCode=AzureStorageOperationFailedConcurrentWrite,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Error occurred when trying to upload a file. It's possible because you have multiple concurrent copy activities runs writing to the same file 'my_blob_filepath_here'. Check your ADF configuration.,Source=Microsoft.DataTransfer.ClientLibrary,''Type=Microsoft.WindowsAzure.Storage.StorageException,Message=The remote server returned an error: (400) Bad Request.,Source=Microsoft.WindowsAzure.Storage,StorageExtendedMessage=The specified block list is invalid.\nRequestId:my_id_here\nTime:2020-06-01T10:08:03.3763501Z,,''Type=System.Net.WebException,Message=The remote server returned an error: (400) Bad Request.,Source=Microsoft.WindowsAzure.Storage,'",
            "EventType": 0,
            "Category": 5,
            "Data": {
                "FailureInitiator": "Sink"
            },
            "MsgId": null,
            "ExceptionType": null,
            "Source": null,
            "StackTrace": null,
            "InnerEventInfos": []
        }
    ],
    "effectiveIntegrationRuntime": "DefaultIntegrationRuntime (East US)",
    "usedDataIntegrationUnits": 4,
    "billingReference": {
        "activityType": "DataMovement",
        "billableDuration": [
            {
                "meterType": "AzureIR",
                "duration": 0.06666666666666667,
                "unit": "DIUHours"
            }
        ]
    },
    "usedParallelCopies": 1,
    "executionDetails": [
        {
            "source": {
                "type": "AzureBlobStorage",
                "region": "East US"
            },
            "sink": {
                "type": "AzureBlobStorage",
                "region": "East US"
            },
            "status": "Failed",
            "start": "2020-06-01T10:07:41.9889089Z",
            "duration": 21,
            "usedDataIntegrationUnits": 4,
            "usedParallelCopies": 1,
            "profile": {
                "queue": {
                    "status": "Completed",
                    "duration": 2
                },
                "transfer": {
                    "status": "Completed",
                    "duration": 19,
                    "details": {
                        "listingSource": {
                            "type": "AzureBlobStorage",
                            "workingDuration": 0
                        },
                        "readingFromSource": {
                            "type": "AzureBlobStorage",
                            "workingDuration": 16
                        },
                        "writingToSink": {
                            "type": "AzureBlobStorage",
                            "workingDuration": 16
                        }
                    }
                }
            },
            "detailedDurations": {
                "queuingDuration": 2,
                "transferDuration": 19
            }
        }
    ],
    "dataConsistencyVerification": {
        "VerificationResult": "NotVerified"
    },
    "durationInQueue": {
        "integrationRuntimeQueue": 0
    }
}
...