Azure / Azure/azure-libraries-for-java

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

Aperta
#717 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Cosmos customer-reported Mgmt
Lingua principale
Java
Stelle
97
Fork
102
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia dai punti di ingresso di listMetrics in DatabaseAccountsInner.java ed esegui la riproduzione Kotlin dell’issue. Traccia come il filtro viene inviato all’endpoint delle metriche e verifica il comportamento con la query fornita e con un filtro vuoto. Il lavoro è completato quando listMetrics restituisce le metriche richieste invece di una risposta 400 Failed to parse query.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
azure, java
Ambito
api, cloud, databases
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
30/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.