Azure / Azure/azure-functions-python-library

[BUG] Service Bus Session ID is not available to Function code

Đang mở
#103 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
bug needs-investigation
Ngôn ngữ chính
Python
Star
179
Fork
79
Merge trung bình
2 ngày 8 giờ
Pull request đã merge (30 ngày)
2

Mô tả

### 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"
}
```

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Trước tiên, hãy đọc azure/functions/servicebus.py quanh các dòng 274-275 và so sánh cách các message được bật session điền msg.session_id bằng workaround cho metadata lồng nhau. Tái hiện ví dụ về session queue của Service Bus, sau đó xác minh rằng msg.session_id expose SessionId trong khi vẫn giữ nguyên behavior hiện có của metadata message.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
azure, python
Lĩnh vực
backend, distributed-systems
Loại issue
Lỗi
Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
45/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.