Skip to content

Commit

Permalink
[EventHubs] Use Invariant vs Current culture (Azure#11414)
Browse files Browse the repository at this point in the history
By default, the `.Parse` and `.TryParse` methods, as well as `.ToString`
use the current culture. In some of our uses, we don't want to the
behavior to differ based on the culture of the local machine.
  • Loading branch information
ellismg authored Apr 17, 2020
1 parent fe07743 commit 9b5aad3
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading;
Expand Down Expand Up @@ -288,11 +289,11 @@ public override async Task<IEnumerable<EventProcessorCheckpoint>> ListCheckpoint
var partitionId = blob.Name.Substring(prefix.Length);
var startingPosition = default(EventPosition?);

if (blob.Metadata.TryGetValue(BlobMetadataKey.Offset, out var str) && long.TryParse(str, out var result))
if (blob.Metadata.TryGetValue(BlobMetadataKey.Offset, out var str) && long.TryParse(str, NumberStyles.Integer, CultureInfo.InvariantCulture, out var result))
{
startingPosition = EventPosition.FromOffset(result, false);
}
else if (blob.Metadata.TryGetValue(BlobMetadataKey.SequenceNumber, out str) && long.TryParse(str, out result))
else if (blob.Metadata.TryGetValue(BlobMetadataKey.SequenceNumber, out str) && long.TryParse(str, NumberStyles.Integer, CultureInfo.InvariantCulture, out result))
{
startingPosition = EventPosition.FromSequenceNumber(result, false);
}
Expand Down Expand Up @@ -363,8 +364,8 @@ public override async Task UpdateCheckpointAsync(EventProcessorCheckpoint checkp

var metadata = new Dictionary<string, string>()
{
{ BlobMetadataKey.Offset, eventData.Offset.ToString() },
{ BlobMetadataKey.SequenceNumber, eventData.SequenceNumber.ToString() }
{ BlobMetadataKey.Offset, eventData.Offset.ToString(CultureInfo.InvariantCulture) },
{ BlobMetadataKey.SequenceNumber, eventData.SequenceNumber.ToString(CultureInfo.InvariantCulture) }
};

Func<CancellationToken, Task> updateCheckpointAsync = async updateCheckpointToken =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@ private static (string KeyName, string Resource, DateTimeOffset ExpirationTime)
}
else if (string.Compare(SignedExpiryToken, token, StringComparison.OrdinalIgnoreCase) == 0)
{
if (!long.TryParse(WebUtility.UrlDecode(value), out var unixTime))
if (!long.TryParse(WebUtility.UrlDecode(value), NumberStyles.Integer, CultureInfo.InvariantCulture, out var unixTime))
{
throw new ArgumentException(Resources.InvalidSharedAccessSignature, nameof(sharedAccessSignature));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ public virtual PartitionProperties CreatePartitionPropertiesFromResponse(AmqpMes
(bool)responseData[AmqpManagement.ResponseMap.PartitionRuntimeInfoPartitionIsEmpty],
(long)responseData[AmqpManagement.ResponseMap.PartitionBeginSequenceNumber],
(long)responseData[AmqpManagement.ResponseMap.PartitionLastEnqueuedSequenceNumber],
long.Parse((string)responseData[AmqpManagement.ResponseMap.PartitionLastEnqueuedOffset]),
long.Parse((string)responseData[AmqpManagement.ResponseMap.PartitionLastEnqueuedOffset], NumberStyles.Integer, CultureInfo.InvariantCulture),
new DateTimeOffset((DateTime)responseData[AmqpManagement.ResponseMap.PartitionLastEnqueuedTimeUtc], TimeSpan.Zero));
}

Expand Down Expand Up @@ -422,7 +422,7 @@ private static ParsedAnnotations ParseSystemAnnotations(AmqpMessage source)

if ((annotations.TryGetValue(AmqpProperty.Offset, out amqpValue))
&& (TryCreateEventPropertyForAmqpProperty(amqpValue, out propertyValue))
&& (long.TryParse((string)propertyValue, out var offset)))
&& (long.TryParse((string)propertyValue, NumberStyles.Integer, CultureInfo.InvariantCulture, out var offset)))
{
systemProperties.Offset = offset;
processed.Add(AmqpProperty.Offset.ToString());
Expand Down Expand Up @@ -473,7 +473,7 @@ private static ParsedAnnotations ParseSystemAnnotations(AmqpMessage source)

if ((source.DeliveryAnnotations.Map.TryGetValue(AmqpProperty.PartitionLastEnqueuedOffset, out amqpValue))
&& (TryCreateEventPropertyForAmqpProperty(amqpValue, out propertyValue))
&& (long.TryParse((string)propertyValue, out var offset)))
&& (long.TryParse((string)propertyValue, NumberStyles.Integer, CultureInfo.InvariantCulture, out var offset)))
{
systemProperties.LastOffset = offset;
}
Expand Down

0 comments on commit 9b5aad3

Please sign in to comment.