Timeout on blocking read for 500000000 NANOSECONDS
snalli opened this issue · comments
I would really like to know why this happens because we have seen this error in production against real Azure Storage as well as our tests against Azurite.
Which service(blob, file, queue, table) does this issue concern?
Blob
Which version of the Azurite was used?
Where do you get Azurite? (npm, DockerHub, NuGet, Visual Studio Code Extension)
npm
What's the Node.js version?
What problem was encountered?
Our tests are crashing, they were perfectly fine until last night.
com.github.ambry.cloud.RecoveryNetworkClientTest > testMetadataRecoveryClientFailure FAILED
com.github.ambry.cloud.CloudStorageException: Failed to upload blob (localhost-0/AAYQQgQACAAAAQAAAAAAAAAAQuodutHmRcCvZfo0Js8h9A) to Azure blob storage because Timeout on blocking read for 500000000 NANOSECONDS
at com.github.ambry.cloud.azure.AzureCloudDestination.toCloudStorageException(AzureCloudDestination.java:191)
at com.github.ambry.cloud.azure.AzureCloudDestinationSync.uploadBlob(AzureCloudDestinationSync.java:433)
at com.github.ambry.cloud.azure.AzureCloudDestinationSync.uploadBlobs(AzureCloudDestinationSync.java:352)
at com.github.ambry.cloud.RecoveryNetworkClientTest.before(RecoveryNetworkClientTest.java:196)
Caused by:
java.lang.IllegalStateException: Timeout on blocking read for 500000000 NANOSECONDS
at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:124)
at reactor.core.publisher.Mono.block(Mono.java:1766)
at com.azure.storage.common.implementation.StorageImplUtils.blockWithOptionalTimeout(StorageImplUtils.java:149)
at com.azure.storage.blob.BlobClient.uploadWithResponse(BlobClient.java:337)
at com.github.ambry.cloud.azure.AzureCloudDestinationSync.uploadBlob(AzureCloudDestinationSync.java:407)
... 2 more
Steps to reproduce the issue?
IDK, happened without any changes on our side
If possible, please provide the debug log using the -d parameter, replacing <pathtodebuglog> with an appropriate path for your OS, or review the instructions for docker containers:
-d "<pathtodebuglog>"
Please be sure to remove any PII or sensitive information before sharing!
The debug log will log raw request headers and bodies, so that we can replay these against Azurite using REST and create tests to validate resolution.
Have you found a mitigation/solution?
No
Hi @snalli ,
Seems you are using Java SDK to try to upload a blob to Azure Storage/Azurite? The timeout exception itself seems thrown out by the Java SDK instead of from Azure Storage/Azurite. Maybe you can ask Java SDK first to see in what condition it would throw out this kind of exception?
It'd be helpful if you can share:
- Java SDK version
- Azurite version
- Code you use
Thanks
Emma
Will talk to the azure sdk team, thanks