Azure / Azure/azure-libraries-for-java

[BUG] Cannot call cosmosDBAccounts().listMetrics(): "Failed to parse query"

Open
#717 3 comments 0 reactions 0 assignees View on GitHub
Cosmos customer-reported Mgmt
Dominant language
Java
Stars
97
Forks
102
PR merge metrics
No merged PRs in 30d

Description

**Describe the bug**
When calling `azure.cosmosDBAccounts().listMetrics()`, the query will always fail with 400, even with a blank filter.

***Exception or Stack Trace***
```
13:54:18.933 [main] INFO com.microsoft.azure.management.cosmosdb.DatabaseAccounts listMetrics - --> GET https://management.azure.com/subscriptions/.../resourceGroups/.../providers/Microsoft.DocumentDB/databaseAccounts/.../metrics?api-version=2015-04-08&%24filter=name.value%20eq%20%27Available%20Storage%27
13:54:18.933 [main] INFO com.microsoft.azure.management.cosmosdb.DatabaseAccounts listMetrics - Accept-Encoding: gzip
13:54:18.934 [main] INFO com.microsoft.azure.management.cosmosdb.DatabaseAccounts listMetrics - accept-language: en-US
13:54:18.934 [main] INFO com.microsoft.azure.management.cosmosdb.DatabaseAccounts
...
13:54:18.934 [main] INFO com.microsoft.azure.management.cosmosdb.DatabaseAccounts listMetrics - Connection: Keep-Alive
13:54:18.934 [main] INFO com.microsoft.azure.management.cosmosdb.DatabaseAccounts listMetrics - Content-Type: application/json; charset=utf-8
13:54:18.934 [main] INFO com.microsoft.azure.management.cosmosdb.DatabaseAccounts listMetrics - Host: management.azure.com
13:54:18.934 [main] INFO com.microsoft.azure.management.cosmosdb.DatabaseAccounts listMetrics - User-Agent: Azure-SDK-For-Java/1.20.1 OS:Windows 10/10.0
...
listMetrics - <-- 400 BadRequest https://management.azure.com/subscriptions/.../resourceGroups/.../providers/Microsoft.DocumentDB/databaseAccounts/.../metrics?api-version=2015-04-08&%24filter=name.value%20eq%20%27Available%20Storage%27 (466 ms, 183-byte body)
13:54:19.401 [main] INFO com.microsoft.azure.management.cosmosdb.DatabaseAccounts listMetrics - Cache-Control: no-store, no-cache
13:54:19.401 [main] INFO com.microsoft.azure.management.cosmosdb.DatabaseAccounts listMetrics - Content-Length: 183
13:54:19.401 [main] INFO com.microsoft.azure.management.cosmosdb.DatabaseAccounts listMetrics - Content-Location: https://management.documents.azure.com:450/subscriptions/.../resourceGroups/.../providers/Microsoft.DocumentDB/databaseAccounts/.../metrics?api-version=2015-04-08&%24filter=name.value%20eq%20%27Available%20Storage%27
13:54:19.401 [main] INFO com.microsoft.azure.management.cosmosdb.DatabaseAccounts listMetrics - Content-Type: application/json
13:54:19.401 [main] INFO com.microsoft.azure.management.cosmosdb.DatabaseAccounts listMetrics - Date: Mon, 18 Mar 2019 20:54:19 GMT
13:54:19.401 [main] INFO com.microsoft.azure.management.cosmosdb.DatabaseAccounts listMetrics - Pragma: no-cache
...
13:54:19.402 [main] INFO com.microsoft.azure.management.cosmosdb.DatabaseAccounts listMetrics - 183-byte body:
{"code":"BadRequest","message":"Failed to parse query name.value eq 'Available Storage'\r\nActivityId: 344fd4a3-e41d-4a8f-bb5a-ca8abc3e489c, Microsoft.Azure.Documents.Common/2.2.0.0"}
13:54:19.402 [main] INFO com.microsoft.azure.management.cosmosdb.DatabaseAccounts listMetrics - <-- END HTTP
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.java:67)
Caused by: com.microsoft.azure.CloudException: Status code 400, {"code":"BadRequest","message":"Failed to parse query name.value eq 'Available Storage'\r\nActivityId: 344fd4a3-e41d-4a8f-bb5a-ca8abc3e489c, Microsoft.Azure.Documents.Common/2.2.0.0"}: Failed to parse query name.value eq 'Available Storage'
ActivityId: 344fd4a3-e41d-4a8f-bb5a-ca8abc3e489c, Microsoft.Azure.Documents.Common/2.2.0.0
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.microsoft.rest.ServiceResponseBuilder.build(ServiceResponseBuilder.java:122)
at com.microsoft.azure.AzureResponseBuilder.build(AzureResponseBuilder.java:56)
at com.microsoft.azure.management.cosmosdb.implementation.DatabaseAccountsInner.listMetricsDelegate(DatabaseAccountsInner.java:2029)
at com.microsoft.azure.management.cosmosdb.implementation.DatabaseAccountsInner.access$1400(DatabaseAccountsInner.java:50)
at com.microsoft.azure.management.cosmosdb.implementation.DatabaseAccountsInner$66.call(DatabaseAccountsInner.java:2015)
at com.microsoft.azure.management.cosmosdb.implementation.DatabaseAccountsInner$66.call(DatabaseAccountsInner.java:2011)
at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:69)
at retrofit2.adapter.rxjava.CallArbiter.deliverResponse(CallArbiter.java:120)
at retrofit2.adapter.rxjava.CallArbiter.emitResponse(CallArbiter.java:102)
at retrofit2.adapter.rxjava.CallExecuteOnSubscribe.call(CallExecuteOnSubscribe.java:46)
at retrofit2.adapter.rxjava.CallExecuteOnSubscribe.call(CallExecuteOnSubscribe.java:24)
at rx.Observable.unsafeSubscribe(Observable.java:10327)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:48)
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:33)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)
at rx.Observable.subscribe(Observable.java:10423)
at rx.Observable.subscribe(Observable.java:10390)
at rx.observables.BlockingObservable.blockForSingle(BlockingObservable.java:443)
at rx.observables.BlockingObservable.single(BlockingObservable.java:340)
at com.microsoft.azure.management.cosmosdb.implementation.DatabaseAccountsInner.listMetrics(DatabaseAccountsInner.java:1950)
at Metrics.(metrics.kt:19)
at MainKt.setupAzureMetrics(main.kt:93)
at MainKt.main(main.kt:105)
... 5 more
```

**To Reproduce**
```kotlin
val azure = Azure
.configure()
.withLogLevel(LogLevel.BODY_AND_HEADERS)
.authenticate(creds)
.withSubscription(subscription)
val resourceId = "/subscriptions/$subscription/resourceGroups/$resourceGroup/providers/Microsoft.DocumentDB/databaseAccounts/$resourceGroup"
val metrics = azure.metricDefinitions().listByResource(resourceId)
azure.cosmosDBAccounts().inner().listMetrics(resourceGroup, resourceGroup, "name.value eq 'Available Storage'")
```

**Expected behavior**
The metrics are returned.

**Setup (please complete the following information):**
- OS: Windows 10
- IDE : IntelliJ
- Version of the Library used: `1.20.1`

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.