Azure / Azure/azure-libraries-for-java

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

Offen
#717 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Cosmos customer-reported Mgmt
Vorherrschende Sprache
Java
Sterne
97
Forks
102
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

**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`

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginnen Sie mit den listMetrics-Einstiegspunkten in DatabaseAccountsInner.java und führen Sie die Kotlin-Reproduktion aus dem Issue aus. Verfolgen Sie, wie der Filter an den metrics-Endpunkt gesendet wird, und überprüfen Sie das Verhalten mit der bereitgestellten Abfrage und einem leeren Filter. Fertig ist die Aufgabe, wenn listMetrics die angeforderten Metriken anstelle einer 400 Failed to parse query-Antwort zurückgibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
azure, java
Bereich
api, cloud, databases
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
30/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.