Azure / Azure/azure-functions-python-library
[BUG] Service Bus Session ID is not available to Function code
- Langage dominant
- Python
- Étoiles
- 179
- Forks
- 79
- Merge moyen
- 2 j 8 h
- PR mergées (30 j)
- 2
Description
### Investigative information
###### Please provide the following:
IcM: 283549053 has an impacted function app with relevant detail
### Repro steps
1. Create a Function App that triggers off a Service bus session enabled queue.
###### Provide the steps required to reproduce the problem:
### Expected behavior
###### Provide a description of the expected behavior.
### Actual behavior
###### Provide a description of the actual behavior observed.
### Known workarounds
###### Provide a description of any known workarounds.
Fetch the session id from the nested field in the message:
msg.metadata["MessageSession"]["SessionId"]
### Contents of the requirements.txt file:
###### Provide the requirements.txt file to help us find out module related issues.
N/A
### Related information
###### Provide any related information
* Bindings used: Service Bus
```python
def main(msg: func.ServiceBusMessage):
logging.info('Python ServiceBus queue trigger processed message: %s',
msg.get_body().decode('utf-8'))
logging.info('Python msg.session_id - : %s', msg.metadata["MessageSession"]["SessionId"])
logging.info('Python msg.session_id1 - : %s', msg.session_id)
```
Output
```logs
[2022-02-09T00:36:58.242Z] Python msg.session_id - : {12229E1-B37B-4D29-AA0A-E367906C206E}
[2022-02-09T00:36:58.242Z] Python msg.session_id1 - : None
```
The [location where library sets session_id](https://github.com/Azure/azure-functions-python-library/blob/dev/azure/functions/servicebus.py#L274-L275).
```bash
curl -H "Authorization: SharedAccessSignature sr=SERVICE_BUS.servicebus.windows.net%2FINPUT_QUEUE&sig=XXXXXX&se=YYY&skn=RootManageSharedAccessKey" \
-H 'BrokerProperties: {"SessionId": "{12229E1-B37B-4D29-AA0A-E367906C206E}"}' \
-H "Content-Type: application/json" \
-d "HelloWorld" \
-X POST -i "https://servicebus-test-vameru.servicebus.windows.net/myinputqueue/messages\?timeout\=60"
HTTP/1.1 201 Created
Transfer-Encoding: chunked
Content-Type: application/xml; charset=utf-8
Server: Microsoft-HTTPAPI/2.0
Strict-Transport-Security: max-age=31536000
Date: Wed, 09 Feb 2022 00:36:57 GMT
```
The Complete Metadata
```json
{
"UserProperties": {},
"DeliveryCount": 1,
"LockToken": "fc949e24-410f-4a78-853b-7b8ce125cb99",
"MessageSession": {
"LockedUntilUtc": "2022-02-08T22: 30: 52.33697Z",
"SessionId": "{17729E1-B37B-4D29-AA0A-E367906C206E}",
"RegisteredPlugins": [],
"ReceiveMode": 0,
"PrefetchCount": 0,
"LastPeekedSequenceNumber": 0,
"Path": "myinputqueue",
"OperationTimeout": "00: 01: 00",
"ServiceBusConnection": {
"Endpoint": "sb://servicebus-test-vameru.servicebus.windows.net",
"OperationTimeout": "00:01:00",
"RetryPolicy": {
"MinimalBackoff": "00:00:00",
"MaximumBackoff": "00:00:30",
"DeltaBackoff": "00:00:03",
"MaxRetryCount": 5,
"IsServerBusy": False,
"ServerBusyExceptionMessage": None
},
"TransportType": 0,
"TokenProvider": {},
"IsClosedOrClosing": False
},
"IsClosedOrClosing": False,
"OwnsConnection": False,
"ClientId": "MessageSession27myinputqueue_{17729E1-B37B-4D29-AA0A-E367906C206E}",
"RetryPolicy": {
"MinimalBackoff": "00:00:00",
"MaximumBackoff": "00:00:30",
"DeltaBackoff": "00:00:03",
"MaxRetryCount": 5,
"IsServerBusy": False,
"ServerBusyExceptionMessage": None
}
},
"ContentType": "application/json",
"SequenceNumber": 13,
"MessageReceiver": {
"LockedUntilUtc": "2022-02-08T22:30:52.33697Z",
"SessionId": "{17729E1-B37B-4D29-AA0A-E367906C206E}",
"RegisteredPlugins": [],
"ReceiveMode": 0,
"PrefetchCount": 0,
"LastPeekedSequenceNumber": 0,
"Path": "myinputqueue",
"OperationTimeout": "00:01:00",
"ServiceBusConnection": {
"Endpoint": "sb://servicebus-test-vameru.servicebus.windows.net",
"OperationTimeout": "00:01:00",
"RetryPolicy": {
"MinimalBackoff": "00:00:00",
"MaximumBackoff": "00:00:30",
"DeltaBackoff": "00:00:03",
"MaxRetryCount": 5,
"IsServerBusy": False,
"ServerBusyExceptionMessage": None
},
"TransportType": 0,
"TokenProvider": {},
"IsClosedOrClosing": False
},
"IsClosedOrClosing": False,
"OwnsConnection": False,
"ClientId": "MessageSession27myinputqueue_{17729E1-B37B-4D29-AA0A-E367906C206E}",
"RetryPolicy": {
"MinimalBackoff": "00:00:00",
"MaximumBackoff": "00:00:30",
"DeltaBackoff": "00:00:03",
"MaxRetryCount": 5,
"IsServerBusy": False,
"ServerBusyExceptionMessage": None
}
},
"EnqueuedTimeUtc": "2022-02-08T22:22:19.292Z",
"ExpiresAtUtc": "2022-02-22T22:22:19.292Z",
"MessageId": "806c77a2924441fe855697d39647e096"
}
```
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Piste de recherche
Lisez d’abord azure/functions/servicebus.py autour des lignes 274-275 et comparez la manière dont les messages avec session activée renseignent msg.session_id avec la solution de contournement pour les métadonnées imbriquées. Reproduisez l’exemple de file d’attente de session Service Bus, puis vérifiez que msg.session_id expose la SessionId, tout en préservant le comportement existant des métadonnées des messages.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- azure, python
- Domaine
- backend, distributed-systems
- Type d'issue
- Bug
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100