We get "Internal error" and an error callback deploying with an invalid storage account name
- Dominant language
- Bicep
- Stars
- 3.6k
- Forks
- 830
- Avg merge
- 1d 21m
- Merged PRs (30d)
- 79
Description
```bicep
param location string = resourceGroup().location
resource storageaccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
name: 'BAADF00D'
location: location
kind: 'StorageV2'
sku: {
name: 'Premium_LRS'
}
}
```
Try deploying and you get this in the output:
```shell
3:43:14 PM: Deployment failed for /Users/stephenweatherford/repos/abc/main.bicep. Internal Error - Azure.RequestFailedException: At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.
Status: 200 (OK)
ErrorCode: DeploymentFailed
Content:
{"status":"Failed","error":{"code":"DeploymentFailed","message":"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.","details":[{"code":"BadRequest","message":"{\r\n \"error\": {\r\n \"code\": \"AccountNameInvalid\",\r\n \"message\": \"BAADF00D is not a valid storage account name. Storage account name must be between 3 and 24 characters in length and use numbers and lower-case letters only.\"\r\n }\r\n}"}]}}
Headers:
Cache-Control: no-cache
Pragma: no-cache
x-ms-ratelimit-remaining-subscription-reads: REDACTED
x-ms-request-id: 94d770d9-af6c-408a-b5f1-9bec6151c46f
x-ms-correlation-request-id: REDACTED
x-ms-routing-request-id: REDACTED
Strict-Transport-Security: REDACTED
X-Content-Type-Options: REDACTED
Date: Tue, 31 May 2022 22:43:13 GMT
Content-Type: application/json; charset=utf-8
Expires: -1
Content-Length: 528
at Azure.Core.OperationInternalBase.ApplyStateAsync(Boolean async, Response response, Boolean hasCompleted, Boolean hasSucceeded, RequestFailedException requestFailedException, Boolean throwIfFailed)
at Azure.Core.OperationInternal`1.UpdateStateAsync(Boolean async, CancellationToken cancellationToken)
at Azure.Core.OperationInternalBase.UpdateStatusAsync(Boolean async, CancellationToken cancellationToken)
at Azure.Core.OperationInternalBase.UpdateStatusAsync(CancellationToken cancellationToken)
at Azure.Core.OperationPoller.WaitForCompletionResponseAsync(UpdateStatusAsync updateStatusAsync, HasCompleted hasCompleted, GetRawResponse getRawResponse, Nullable`1 suggestedInterval, CancellationToken cancellationToken)
at Azure.Core.OperationInternalBase.WaitForCompletionResponseAsync(CancellationToken cancellationToken)
at Azure.Core.OperationInternal`1.WaitForCompletionAsync(CancellationToken cancellationToken)
at Azure.Core.OperationOrResponseInternals`1.WaitForCompletionAsync(CancellationToken cancellationToken)
at Bicep.LanguageServer.Deploy.DeploymentHelper.WaitForDeploymentCompletionAsync(String deploymentId, String documentPath, IDeploymentOperationsCache deploymentOperationsCache) in C:\__w\1\s\bicep\src\Bicep.LangServer\Deploy\DeploymentHelper.cs:line 142
at Bicep.LanguageServer.Handlers.BicepDeploymentWaitForCompletionCommandHandler.Handle(BicepDeploymentWaitForCompletionParams request, CancellationToken cancellationToken) in C:\__w\1\s\bicep\src\Bicep.LangServer\Handlers\BicepDeploymentWaitForCompletionCommandHandler.cs:line 32
at OmniSharp.Extensions.LanguageServer.Server.Pipelines.SemanticTokensDeltaPipeline`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at OmniSharp.Extensions.LanguageServer.Server.Pipelines.ResolveCommandPipeline`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestPreProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestPostProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestExceptionProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestExceptionProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestExceptionActionProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at MediatR.Pipeline.RequestExceptionActionProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)
at OmniSharp.Extensions.JsonRpc.RequestRouterBase`1.g__InnerRoute|7_0(IServiceScopeFactory serviceScopeFactory, Request request, TDescriptor descriptor, Object params, CancellationToken token, ILogger logger)
at OmniSharp.Extensions.JsonRpc.RequestRouterBase`1.RouteRequest(IRequestDescriptor`1 descriptors, Request request, CancellationToken token)
at OmniSharp.Extensions.JsonRpc.DefaultRequestInvoker.<>c__DisplayClass10_0.<b__5>d.MoveNext()
```
EXPECTED: No internal error, no callback
Contributor guide
Research direction
Start at src/Bicep.LangServer/Deploy/DeploymentHelper.cs line 142 and BicepDeploymentWaitForCompletionCommandHandler.cs line 32, then reproduce the deployment with the invalid storage account name from the issue. Trace how the Azure deployment failure is surfaced to the callback. Done means the invalid-name deployment reports the resource error without an internal error or an erroneous callback.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- azure
- Domain
- cloud, devtools
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 55/100