From 3a45b856f71dc8ac7c2b3e0c3e02be99335cb97e Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Mon, 12 Jul 2021 11:03:54 -0700 Subject: [PATCH 1/3] not override request id if it already exists in header --- .../azure/core/pipeline/policies/_universal.py | 2 ++ sdk/core/azure-core/tests/test_request_id_policy.py | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/sdk/core/azure-core/azure/core/pipeline/policies/_universal.py b/sdk/core/azure-core/azure/core/pipeline/policies/_universal.py index f80ffab84b1e..1640178bff4f 100644 --- a/sdk/core/azure-core/azure/core/pipeline/policies/_universal.py +++ b/sdk/core/azure-core/azure/core/pipeline/policies/_universal.py @@ -158,6 +158,8 @@ def on_request(self, request): elif self._auto_request_id: request_id = str(uuid.uuid1()) if request_id is not unset: + if "x-ms-client-request-id" in request.http_request.headers: + return header = {"x-ms-client-request-id": request_id} request.http_request.headers.update(header) diff --git a/sdk/core/azure-core/tests/test_request_id_policy.py b/sdk/core/azure-core/tests/test_request_id_policy.py index 54e05d1f23d2..a118128ece1c 100644 --- a/sdk/core/azure-core/tests/test_request_id_policy.py +++ b/sdk/core/azure-core/tests/test_request_id_policy.py @@ -54,3 +54,12 @@ def test_request_id_policy(auto_request_id, request_id_init, request_id_set, req assert request.headers["x-ms-client-request-id"] == "VALUE" else: assert not "x-ms-client-request-id" in request.headers + +def test_request_id_already_exists(): + """Test policy with no other policy and happy path""" + request_id_policy = RequestIdPolicy() + request = HttpRequest('GET', 'http://127.0.0.1/') + request.headers["x-ms-client-request-id"] = "VALUE" + pipeline_request = PipelineRequest(request, PipelineContext(None)) + request_id_policy.on_request(pipeline_request) + assert request.headers["x-ms-client-request-id"] == "VALUE" From af5b475bf638b4a136a87025965c603ba3755e98 Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Mon, 12 Jul 2021 11:07:49 -0700 Subject: [PATCH 2/3] update --- .../azure-core/azure/core/pipeline/policies/_universal.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sdk/core/azure-core/azure/core/pipeline/policies/_universal.py b/sdk/core/azure-core/azure/core/pipeline/policies/_universal.py index 1640178bff4f..1e8d712bc12d 100644 --- a/sdk/core/azure-core/azure/core/pipeline/policies/_universal.py +++ b/sdk/core/azure-core/azure/core/pipeline/policies/_universal.py @@ -154,12 +154,14 @@ def on_request(self, request): elif self._request_id is None: return elif self._request_id is not _Unset: + if "x-ms-client-request-id" in request.http_request.headers: + return request_id = self._request_id elif self._auto_request_id: - request_id = str(uuid.uuid1()) - if request_id is not unset: if "x-ms-client-request-id" in request.http_request.headers: return + request_id = str(uuid.uuid1()) + if request_id is not unset: header = {"x-ms-client-request-id": request_id} request.http_request.headers.update(header) From 46eab8b72aea8eef6d65dc54d5c61568a2fd2c4f Mon Sep 17 00:00:00 2001 From: Xiang Yan Date: Mon, 12 Jul 2021 11:29:16 -0700 Subject: [PATCH 3/3] changelog --- sdk/core/azure-core/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/core/azure-core/CHANGELOG.md b/sdk/core/azure-core/CHANGELOG.md index ba5f8e606818..30e247c25865 100644 --- a/sdk/core/azure-core/CHANGELOG.md +++ b/sdk/core/azure-core/CHANGELOG.md @@ -10,6 +10,7 @@ ### Fixed +- Not override "x-ms-client-request-id" if it already exists in the header. #17757 ## 1.16.0 (2021-07-01)