Azure / Azure/data-api-builder

[Bug]: Multiple REST API requests fail when "set-session-context": true

Aperta
#2,178 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
bug triage
Lingua principale
C#
Stelle
1.5k
Fork
370
Merge medio
3g 17h
PR unite (30g)
8

Descrizione

### What happened?

When requesting for multiple api requests when session context is "set-session-context": true.
This is for using DB Type: DWSQL for using against Fabric SQL endpoints.

It causes the following api response:

{
"error": {
"code": "DatabaseOperationFailed",
"message": "Cannot set key 'aud' in the session context. The key has been set as read_only for this session.",
"status": 500
}
}

I am assuming the session is being sticky and not starting new sessions for each call.
For some reason it may be caching the session when "set-session-context": true, but from my understanding that should default to false.

### Version

0.11.130

### What database are you using?

Azure SQL

### What hosting model are you using?

Container Apps

### Which API approach are you accessing DAB through?

REST

### Relevant log output

```Text
fail: Azure.DataApiBuilder.Service.Controllers.RestController[0]
7c081014-1d46-44a5-ac17-d5a9e7532d8c Error handling REST request.
Azure.DataApiBuilder.Service.Exceptions.DataApiBuilderException: Cannot set key 'aud' in the session context. The key has been set as read_only for this session.
---> Microsoft.Data.SqlClient.SqlException (0x80131904): Cannot set key 'aud' in the session context. The key has been set as read_only for this session.
at Microsoft.Data.SqlClient.SqlCommand.<>c.b__211_0(Task`1 result)
at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location ---
at Azure.DataApiBuilder.Core.Resolvers.QueryExecutor`1.ExecuteQueryAgainstDbAsync[TResult](TConnection conn, String sqltext, IDictionary`2 parameters, Func`3 dataReaderHandler, HttpContext httpContext, String dataSourceName, List`1 args)
ClientConnectionId:72047e37-8ca4-4d5c-9947-ebd8551d6518
Error Number:15664,State:1,Class:16
ClientConnectionId before routing:7783f539-dec7-4b05-810f-4a560d0de35b
Routing Destination:*****
--- End of inner exception stack trace ---
```

### Code of Conduct

- [X] I agree to follow this project's Code of Conduct

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Iniziate tracciando la richiesta REST attraverso Azure.DataApiBuilder.Service.Controllers.RestController e Azure.DataApiBuilder.Core.Resolvers.QueryExecutor.ExecuteQueryAgainstDbAsync, utilizzando la configurazione del contesto di sessione e il registro degli errori forniti. Riproducete più richieste verso Azure SQL e determinate perché la chiave 'aud' viene impostata come di sola lettura più di una volta; il lavoro è completato quando le richieste ripetute non restituiscono più questo errore 500.

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

Valutazione

Stack tecnologico
azure, csharp, sql
Ambito
api, backend, databases
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.