Skip to content

Commit 8803a6e

Browse files
committed
Removed setting of client request id header in sql communicators.
This is redundant (client request id is later set again for all cmdlets by CmdletInfoHandler) and potentially may cause key violation due to race when cmdlet is run in parallel.
1 parent 3bd30e6 commit 8803a6e

File tree

28 files changed

+156
-224
lines changed

28 files changed

+156
-224
lines changed

src/ResourceManager/Sql/Commands.Sql/Advisor/Service/AzureSqlAdvisorCommunicatorBase.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,6 @@ protected SqlManagementClient GetCurrentSqlClient(string clientRequestId)
7070
{
7171
SqlClient = AzureSession.Instance.ClientFactory.CreateClient<SqlManagementClient>(Context, AzureEnvironment.Endpoint.ResourceManager);
7272
}
73-
74-
SqlClient.HttpClient.DefaultRequestHeaders.Remove(Constants.ClientRequestIdHeaderName);
75-
SqlClient.HttpClient.DefaultRequestHeaders.Add(Constants.ClientRequestIdHeaderName, clientRequestId);
7673
return SqlClient;
7774
}
7875
}

src/ResourceManager/Sql/Commands.Sql/Auditing/Services/AuditingEndpointsCommunicator.cs

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
using Microsoft.Azure.Commands.Sql.Common;
1919
using Microsoft.Azure.Management.Sql.LegacySdk;
2020
using Microsoft.Azure.Management.Sql.LegacySdk.Models;
21-
using System;
2221
using System.Threading.Tasks;
2322

2423
namespace Microsoft.Azure.Commands.Sql.Auditing.Services
@@ -58,7 +57,7 @@ public AuditingEndpointsCommunicator(IAzureContext context)
5857
/// </summary>
5958
public void GetDatabaseAuditingPolicy(string resourceGroupName, string serverName, string databaseName, string clientRequestId, out DatabaseAuditingPolicy policy)
6059
{
61-
IAuditingPolicyOperations operations = GetCurrentSqlClient(clientRequestId).AuditingPolicy;
60+
IAuditingPolicyOperations operations = GetCurrentSqlClient().AuditingPolicy;
6261
DatabaseAuditingPolicyGetResponse response = operations.GetDatabasePolicy(resourceGroupName, serverName, databaseName);
6362
policy = response.AuditingPolicy;
6463
}
@@ -68,7 +67,7 @@ public void GetDatabaseAuditingPolicy(string resourceGroupName, string serverNam
6867
/// </summary>
6968
public void GetServerAuditingPolicy(string resourceGroupName, string serverName, string clientRequestId, out ServerAuditingPolicy policy)
7069
{
71-
IAuditingPolicyOperations operations = GetCurrentSqlClient(clientRequestId).AuditingPolicy;
70+
IAuditingPolicyOperations operations = GetCurrentSqlClient().AuditingPolicy;
7271
ServerAuditingPolicyGetResponse response = operations.GetServerPolicy(resourceGroupName, serverName);
7372
policy = response.AuditingPolicy;
7473
}
@@ -78,7 +77,7 @@ public void GetServerAuditingPolicy(string resourceGroupName, string serverName,
7877
/// </summary>
7978
public void SetDatabaseAuditingPolicy(string resourceGroupName, string serverName, string databaseName, string clientRequestId, DatabaseAuditingPolicyCreateOrUpdateParameters parameters)
8079
{
81-
IAuditingPolicyOperations operations = GetCurrentSqlClient(clientRequestId).AuditingPolicy;
80+
IAuditingPolicyOperations operations = GetCurrentSqlClient().AuditingPolicy;
8281
operations.CreateOrUpdateDatabasePolicy(resourceGroupName, serverName, databaseName, parameters);
8382
}
8483

@@ -87,7 +86,7 @@ public void SetDatabaseAuditingPolicy(string resourceGroupName, string serverNam
8786
/// </summary>
8887
public void SetServerAuditingPolicy(string resourceGroupName, string serverName, string clientRequestId, ServerAuditingPolicyCreateOrUpdateParameters parameters)
8988
{
90-
IAuditingPolicyOperations operations = GetCurrentSqlClient(clientRequestId).AuditingPolicy;
89+
IAuditingPolicyOperations operations = GetCurrentSqlClient().AuditingPolicy;
9190
operations.CreateOrUpdateServerPolicy(resourceGroupName, serverName, parameters);
9291
}
9392

@@ -96,7 +95,7 @@ public void SetServerAuditingPolicy(string resourceGroupName, string serverName,
9695
/// </summary>
9796
public void GetDatabaseAuditingPolicy(string resourceGroupName, string serverName, string databaseName, string clientRequestId, out BlobAuditingPolicy policy)
9897
{
99-
var operations = GetCurrentSqlClient(clientRequestId).BlobAuditing;
98+
var operations = GetCurrentSqlClient().BlobAuditing;
10099
var response = operations.GetDatabaseBlobAuditingPolicy(resourceGroupName, serverName, databaseName);
101100
policy = response.AuditingPolicy;
102101
}
@@ -106,7 +105,7 @@ public void GetDatabaseAuditingPolicy(string resourceGroupName, string serverNam
106105
/// </summary>
107106
public void GetServerAuditingPolicy(string resourceGroupName, string serverName, string clientRequestId, out BlobAuditingPolicy policy)
108107
{
109-
var operations = GetCurrentSqlClient(clientRequestId).BlobAuditing;
108+
var operations = GetCurrentSqlClient().BlobAuditing;
110109
var response = operations.GetServerPolicy(resourceGroupName, serverName);
111110
policy = response.AuditingPolicy;
112111
}
@@ -116,7 +115,7 @@ public void GetServerAuditingPolicy(string resourceGroupName, string serverName,
116115
/// </summary>
117116
public void SetDatabaseAuditingPolicy(string resourceGroupName, string serverName, string databaseName, string clientRequestId, BlobAuditingCreateOrUpdateParameters parameters)
118117
{
119-
var operations = GetCurrentSqlClient(clientRequestId).BlobAuditing;
118+
var operations = GetCurrentSqlClient().BlobAuditing;
120119
operations.CreateOrUpdateDatabasePolicy(resourceGroupName, serverName, databaseName, parameters);
121120
}
122121

@@ -125,7 +124,7 @@ public void SetDatabaseAuditingPolicy(string resourceGroupName, string serverNam
125124
/// </summary>
126125
public void SetServerAuditingPolicy(string resourceGroupName, string serverName, string clientRequestId, BlobAuditingCreateOrUpdateParameters parameters)
127126
{
128-
var operations = GetCurrentSqlClient(clientRequestId).BlobAuditing;
127+
var operations = GetCurrentSqlClient().BlobAuditing;
129128
var statusLink = operations.CreateOrUpdateServerPolicy(resourceGroupName, serverName, parameters).OperationStatusLink;
130129
for (var iterationCount = 0; iterationCount < 1800; iterationCount++) // wait for at most an hour
131130
{
@@ -143,7 +142,7 @@ public void SetServerAuditingPolicy(string resourceGroupName, string serverName,
143142
/// </summary>
144143
public OperationStatus GetServerCreateOrUpdateOperationStatus(string operationStatusLink, string clientRequestId)
145144
{
146-
var operations = GetCurrentSqlClient(clientRequestId).BlobAuditing;
145+
var operations = GetCurrentSqlClient().BlobAuditing;
147146
return operations.GetOperationStatus(operationStatusLink).OperationResult.Properties.State;
148147
}
149148

@@ -152,15 +151,13 @@ public OperationStatus GetServerCreateOrUpdateOperationStatus(string operationSt
152151
/// id tracing headers for the current cmdlet invocation.
153152
/// </summary>
154153
/// <returns>The SQL Management client for the currently selected subscription.</returns>
155-
private SqlManagementClient GetCurrentSqlClient(String clientRequestId)
154+
private SqlManagementClient GetCurrentSqlClient()
156155
{
157156
// Get the SQL management client for the current subscription
158157
if (SqlClient == null)
159158
{
160159
SqlClient = AzureSession.Instance.ClientFactory.CreateClient<SqlManagementClient>(Context, AzureEnvironment.Endpoint.ResourceManager);
161160
}
162-
SqlClient.HttpClient.DefaultRequestHeaders.Remove(Constants.ClientRequestIdHeaderName);
163-
SqlClient.HttpClient.DefaultRequestHeaders.Add(Constants.ClientRequestIdHeaderName, clientRequestId);
164161
return SqlClient;
165162
}
166163
}

src/ResourceManager/Sql/Commands.Sql/Common/AzureEndpointsCommunicator.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public AzureEndpointsCommunicator(IAzureContext context)
8484
/// <returns>A dictionary with two entries, one for each possible key type with the appropriate key</returns>
8585
public async Task<Dictionary<StorageKeyKind, string>> GetStorageKeysAsync(string resourceGroupName, string storageAccountName)
8686
{
87-
SqlManagementClient client = GetCurrentSqlClient("none");
87+
SqlManagementClient client = GetCurrentSqlClient();
8888

8989
string url = Context.Environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ResourceManager).ToString();
9090
if (!url.EndsWith("/"))
@@ -238,15 +238,13 @@ private ResourceManagementClient GetCurrentResourcesClient(IAzureContext context
238238
/// id tracing headers for the current cmdlet invocation.
239239
/// </summary>
240240
/// <returns>The SQL Management client for the currently selected subscription.</returns>
241-
private SqlManagementClient GetCurrentSqlClient(String clientRequestId)
241+
private SqlManagementClient GetCurrentSqlClient()
242242
{
243243
// Get the SQL management client for the current subscription
244244
if (SqlClient == null)
245245
{
246246
SqlClient = AzureSession.Instance.ClientFactory.CreateClient<SqlManagementClient>(Context, AzureEnvironment.Endpoint.ResourceManager);
247247
}
248-
SqlClient.HttpClient.DefaultRequestHeaders.Remove(Constants.ClientRequestIdHeaderName);
249-
SqlClient.HttpClient.DefaultRequestHeaders.Add(Constants.ClientRequestIdHeaderName, clientRequestId);
250248
return SqlClient;
251249
}
252250
}
Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,22 @@
1+
// ----------------------------------------------------------------------------------
2+
//
3+
// Copyright Microsoft Corporation
4+
// Licensed under the Apache License, Version 2.0 (the "License");
5+
// you may not use this file except in compliance with the License.
6+
// You may obtain a copy of the License at
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
// Unless required by applicable law or agreed to in writing, software
9+
// distributed under the License is distributed on an "AS IS" BASIS,
10+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
// See the License for the specific language governing permissions and
12+
// limitations under the License.
13+
// ----------------------------------------------------------------------------------
14+
115
namespace Microsoft.Azure.Commands.Sql.Common
216
{
317
public class Constants
418
{
519
// request headers names
620
public const string ClientSessionIdHeaderName = "x-ms-client-session-id";
7-
public const string ClientRequestIdHeaderName = "x-ms-client-request-id";
821
}
922
}

src/ResourceManager/Sql/Commands.Sql/Data Masking/Services/DataMaskingEndpointsCommunicator.cs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
using Microsoft.Azure.Commands.Sql.Common;
1919
using Microsoft.Azure.Management.Sql.LegacySdk;
2020
using Microsoft.Azure.Management.Sql.LegacySdk.Models;
21-
using System;
2221
using System.Collections.Generic;
2322

2423
namespace Microsoft.Azure.Commands.Sql.DataMasking.Services
@@ -58,7 +57,7 @@ public DataMaskingEndpointsCommunicator(IAzureContext context)
5857
/// </summary>
5958
public DataMaskingPolicy GetDatabaseDataMaskingPolicy(string resourceGroupName, string serverName, string databaseName, string clientRequestId)
6059
{
61-
IDataMaskingOperations operations = GetCurrentSqlClient(clientRequestId).DataMasking;
60+
IDataMaskingOperations operations = GetCurrentSqlClient().DataMasking;
6261
DataMaskingPolicyGetResponse response = operations.GetPolicy(resourceGroupName, serverName, databaseName);
6362
return response.DataMaskingPolicy;
6463
}
@@ -68,7 +67,7 @@ public DataMaskingPolicy GetDatabaseDataMaskingPolicy(string resourceGroupName,
6867
/// </summary>
6968
public void SetDatabaseDataMaskingPolicy(string resourceGroupName, string serverName, string databaseName, string clientRequestId, DataMaskingPolicyCreateOrUpdateParameters parameters)
7069
{
71-
IDataMaskingOperations operations = GetCurrentSqlClient(clientRequestId).DataMasking;
70+
IDataMaskingOperations operations = GetCurrentSqlClient().DataMasking;
7271
operations.CreateOrUpdatePolicy(resourceGroupName, serverName, databaseName, parameters);
7372
}
7473

@@ -77,7 +76,7 @@ public void SetDatabaseDataMaskingPolicy(string resourceGroupName, string server
7776
/// </summary>
7877
public IList<DataMaskingRule> ListDataMaskingRules(string resourceGroupName, string serverName, string databaseName, string clientRequestId)
7978
{
80-
IDataMaskingOperations operations = GetCurrentSqlClient(clientRequestId).DataMasking;
79+
IDataMaskingOperations operations = GetCurrentSqlClient().DataMasking;
8180
DataMaskingRuleListResponse response = operations.List(resourceGroupName, serverName, databaseName);
8281
return response.DataMaskingRules;
8382
}
@@ -87,7 +86,7 @@ public IList<DataMaskingRule> ListDataMaskingRules(string resourceGroupName, str
8786
/// </summary>
8887
public void SetDatabaseDataMaskingRule(string resourceGroupName, string serverName, string databaseName, string ruleId, string clientRequestId, DataMaskingRuleCreateOrUpdateParameters parameters)
8988
{
90-
IDataMaskingOperations operations = GetCurrentSqlClient(clientRequestId).DataMasking;
89+
IDataMaskingOperations operations = GetCurrentSqlClient().DataMasking;
9190
operations.CreateOrUpdateRule(resourceGroupName, serverName, databaseName, ruleId, parameters);
9291
}
9392

@@ -96,7 +95,7 @@ public void SetDatabaseDataMaskingRule(string resourceGroupName, string serverNa
9695
/// </summary>
9796
public void DeleteDataMaskingRule(string resourceGroupName, string serverName, string databaseName, string ruleId, string clientRequestId)
9897
{
99-
IDataMaskingOperations operations = GetCurrentSqlClient(clientRequestId).DataMasking;
98+
IDataMaskingOperations operations = GetCurrentSqlClient().DataMasking;
10099
operations.Delete(resourceGroupName, serverName, databaseName, ruleId);
101100
}
102101

@@ -105,15 +104,13 @@ public void DeleteDataMaskingRule(string resourceGroupName, string serverName, s
105104
/// id tracing headers for the current cmdlet invocation.
106105
/// </summary>
107106
/// <returns>The SQL Management client for the currently selected subscription.</returns>
108-
private SqlManagementClient GetCurrentSqlClient(String clientRequestId)
107+
private SqlManagementClient GetCurrentSqlClient()
109108
{
110109
// Get the SQL management client for the current subscription
111110
if (SqlClient == null)
112111
{
113112
SqlClient = AzureSession.Instance.ClientFactory.CreateClient<SqlManagementClient>(Context, AzureEnvironment.Endpoint.ResourceManager);
114113
}
115-
SqlClient.HttpClient.DefaultRequestHeaders.Remove(Constants.ClientRequestIdHeaderName);
116-
SqlClient.HttpClient.DefaultRequestHeaders.Add(Constants.ClientRequestIdHeaderName, clientRequestId);
117114
return SqlClient;
118115
}
119116
}

src/ResourceManager/Sql/Commands.Sql/Database Activation/Services/SqlAzureDatabaseActivationCommunicator.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
using Microsoft.Azure.Commands.Common.Authentication.Models;
1818
using Microsoft.Azure.Commands.Sql.Common;
1919
using Microsoft.Azure.Management.Sql.LegacySdk;
20-
using System;
2120

2221
namespace Microsoft.Azure.Commands.Sql.DatabaseActivation.Services
2322
{
@@ -61,31 +60,29 @@ public AzureSqlDatabaseActivationCommunicator(IAzureContext context)
6160
/// </summary>
6261
public Management.Sql.LegacySdk.Models.Database Pause(string resourceGroupName, string serverName, string databaseName, string clientRequestId)
6362
{
64-
return GetCurrentSqlClient(clientRequestId).DatabaseActivation.Pause(resourceGroupName, serverName, databaseName).Database;
63+
return GetCurrentSqlClient().DatabaseActivation.Pause(resourceGroupName, serverName, databaseName).Database;
6564
}
6665

6766
/// <summary>
6867
/// Resume a Azure SQL Data Warehouse database.
6968
/// </summary>
7069
public Management.Sql.LegacySdk.Models.Database Resume(string resourceGroupName, string serverName, string databaseName, string clientRequestId)
7170
{
72-
return GetCurrentSqlClient(clientRequestId).DatabaseActivation.Resume(resourceGroupName, serverName, databaseName).Database;
71+
return GetCurrentSqlClient().DatabaseActivation.Resume(resourceGroupName, serverName, databaseName).Database;
7372
}
7473

7574
/// <summary>
7675
/// Retrieve the SQL Management client for the currently selected subscription, adding the session and request
7776
/// id tracing headers for the current cmdlet invocation.
7877
/// </summary>
7978
/// <returns>The SQL Management client for the currently selected subscription.</returns>
80-
private SqlManagementClient GetCurrentSqlClient(String clientRequestId)
79+
private SqlManagementClient GetCurrentSqlClient()
8180
{
8281
// Get the SQL management client for the current subscription
8382
if (SqlClient == null)
8483
{
8584
SqlClient = AzureSession.Instance.ClientFactory.CreateClient<SqlManagementClient>(Context, AzureEnvironment.Endpoint.ResourceManager);
8685
}
87-
SqlClient.HttpClient.DefaultRequestHeaders.Remove(Constants.ClientRequestIdHeaderName);
88-
SqlClient.HttpClient.DefaultRequestHeaders.Add(Constants.ClientRequestIdHeaderName, clientRequestId);
8986
return SqlClient;
9087
}
9188
}

0 commit comments

Comments
 (0)