Uploaded image for project: 'Nuxeo Platform'
  1. Nuxeo Platform
  2. NXP-30463

Fix "The specified block list is invalid" error with Azure

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 10.10
    • Fix Version/s: 10.10-HF50, 11.x, 2021.6
    • Component/s: Azure
    • Release Notes Summary:
      The error "The specified block list is invalid" with Azure storage is fixed.
    • Backlog priority:
      800
    • Sprint:
      nxplatform #38, nxplatform #39
    • Story Points:
      5

      Description

      There is a known issue with Azure storage where concurrent upload requests could produce the error "The specified block list is invalid"

      It's described in Microsoft documentation : https://techcommunity.microsoft.com/t5/azure-paas-blog/troubleshooting-invalidblock-the-specified-block-list-is-invalid/ba-p/1870350

      In Nuxeo, it corresponds to the following stacktrace : 

      Caused by: java.io.IOException
          at com.microsoft.azure.storage.core.Utility.initIOException(Utility.java:643) ~[azure-storage-3.1.0.jar:?]
          at com.microsoft.azure.storage.blob.BlobOutputStream.close(BlobOutputStream.java:309) ~[azure-storage-3.1.0.jar:?]
          at com.microsoft.azure.storage.blob.CloudBlockBlob.upload(CloudBlockBlob.java:778) ~[azure-storage-3.1.0.jar:?]
          at com.microsoft.azure.storage.blob.CloudBlockBlob.upload(CloudBlockBlob.java:694) ~[azure-storage-3.1.0.jar:?]
          at org.nuxeo.ecm.blob.azure.AzureFileStorage.storeFile(AzureFileStorage.java:78) ~[nuxeo-core-binarymanager-azure-10.10.jar:?]
          at org.nuxeo.ecm.core.blob.binary.CachingBinaryManager.getBinary(CachingBinaryManager.java:155) ~[nuxeo-core-api-10.10-HF43.jar:?]
          at org.nuxeo.ecm.core.blob.binary.AbstractBinaryManager.getBinary(AbstractBinaryManager.java:130) ~[nuxeo-core-api-10.10-HF43.jar:?]
          at org.nuxeo.ecm.core.blob.binary.BinaryBlobProvider.writeBlob(BinaryBlobProvider.java:135) ~[nuxeo-core-api-10.10-HF43.jar:?]
          at org.nuxeo.ecm.blob.AbstractCloudBinaryManager.writeBlob(AbstractCloudBinaryManager.java:146) ~[nuxeo-core-binarymanager-common-10.10-HF37.jar:?]
          at org.nuxeo.ecm.core.blob.BlobProvider.writeBlob(BlobProvider.java:139) ~[nuxeo-core-api-10.10-HF43.jar:?]
          at org.nuxeo.ecm.core.blob.DocumentBlobManagerComponent.writeBlob(DocumentBlobManagerComponent.java:223) ~[nuxeo-core-10.10-HF42.jar:?]
          at org.nuxeo.ecm.core.storage.BaseDocument.setValueBlob(BaseDocument.java:679) ~[nuxeo-core-storage-10.10-HF39.jar:?]
          ... 23 more
      Caused by: com.microsoft.azure.storage.StorageException: The specified block list is invalid.
          at com.microsoft.azure.storage.StorageException.translateException(StorageException.java:89) ~[azure-storage-3.1.0.jar:?]
          at com.microsoft.azure.storage.core.StorageRequest.materializeException(StorageRequest.java:305) ~[azure-storage-3.1.0.jar:?]
          at com.microsoft.azure.storage.core.ExecutionEngine.executeWithRetry(ExecutionEngine.java:175) ~[azure-storage-3.1.0.jar:?]
          at com.microsoft.azure.storage.blob.CloudBlockBlob.commitBlockList(CloudBlockBlob.java:428) ~[azure-storage-3.1.0.jar:?]
          at com.microsoft.azure.storage.blob.BlobOutputStream.commit(BlobOutputStream.java:339) ~[azure-storage-3.1.0.jar:?]
          at com.microsoft.azure.storage.blob.BlobOutputStream.close(BlobOutputStream.java:306) ~[azure-storage-3.1.0.jar:?]
          at com.microsoft.azure.storage.blob.CloudBlockBlob.upload(CloudBlockBlob.java:778) ~[azure-storage-3.1.0.jar:?]
          at com.microsoft.azure.storage.blob.CloudBlockBlob.upload(CloudBlockBlob.java:694) ~[azure-storage-3.1.0.jar:?]
          at org.nuxeo.ecm.blob.azure.AzureFileStorage.storeFile(AzureFileStorage.java:78) ~[nuxeo-core-binarymanager-azure-10.10.jar:?]
          at org.nuxeo.ecm.core.blob.binary.CachingBinaryManager.getBinary(CachingBinaryManager.java:155) ~[nuxeo-core-api-10.10-HF43.jar:?]
          at org.nuxeo.ecm.core.blob.binary.AbstractBinaryManager.getBinary(AbstractBinaryManager.java:130) ~[nuxeo-core-api-10.10-HF43.jar:?]
          at org.nuxeo.ecm.core.blob.binary.BinaryBlobProvider.writeBlob(BinaryBlobProvider.java:135) ~[nuxeo-core-api-10.10-HF43.jar:?]
          at org.nuxeo.ecm.blob.AbstractCloudBinaryManager.writeBlob(AbstractCloudBinaryManager.java:146) ~[nuxeo-core-binarymanager-common-10.10-HF37.jar:?]
          at org.nuxeo.ecm.core.blob.BlobProvider.writeBlob(BlobProvider.java:139) ~[nuxeo-core-api-10.10-HF43.jar:?]
          at org.nuxeo.ecm.core.blob.DocumentBlobManagerComponent.writeBlob(DocumentBlobManagerComponent.java:223) ~[nuxeo-core-10.10-HF42.jar:?]
          at org.nuxeo.ecm.core.storage.BaseDocument.setValueBlob(BaseDocument.java:679) ~[nuxeo-core-storage-10.10-HF39.jar:?]
          ... 23 more 

      Some leads to fix the problem is described in this thread: https://stackoverflow.com/questions/12917857/the-specified-block-list-is-invalid-while-uploading-blobs-in-parallel

        Attachments

          Issue Links

            Activity

              People

              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: