Skip to content

Conversation

@github-actions
Copy link
Contributor

@github-actions github-actions bot commented Jun 22, 2022

Backport of #71022 to release/6.0

/cc @tarekgh

Customer Impact

Customer reported regression in .NET 6. Sorting with ordinal ignore case results in different behavior compared to .NET 5.0 and .NET Framework. This is limited to the case with non-ASCII strings containing characters support casing. This is difficult for the customer to debug and could surface in many cases like deserialization across frameworks or user app depends on some algorithms like binary trees or sorting.
Example of the broken behavior, when sorting Ѱa and ѰB, ѰB will come before Ѱa

Although there is only one report, as sorting is a fundamental operation it's likely that other customers are hitting this but aren't aware.

Testing

Have done manual testing to ensure we are getting the right behavior. I have added more tests to ensure I catch this problem if it happens again in the future. The change has passed all regression tests.

Risk

It is low as it is scoped to the failing case only and fixing the behavior. I am not expecting this change to cause any harm or affect anything else.

IMPORTANT: If this change touches code that ships in a NuGet package, please make certain that you have added any necessary package authoring and gotten it explicitly reviewed.

@ghost
Copy link

ghost commented Jun 22, 2022

I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label.

@ghost
Copy link

ghost commented Jun 22, 2022

Tagging subscribers to this area: @dotnet/area-system-globalization
See info in area-owners.md if you want to be subscribed.

Issue Details

Backport of #71022 to release/6.0

/cc @tarekgh

Customer Impact

This is a regression that occurred in .NET 6.0. Users who try to sort a list of strings using ordinal ignore casing option, can run into a problem getting unexpected strings order. We have fixed this in .NET 7.0.
.NET 6.0 behavior is broken and different than all .NET Core and .NET Framework too. This makes it likely other users will hit this issue in .NET 6.0. Also, considering 6.0 is LTS release, it is safer to port the fix to 6.0 to avoid having the users run into this issue and could be hard to diagnose when users notice unpleasant symptoms without knowing the root cause.

Testing

Have done manual testing to ensure we are getting the right behavior. I have added more tests to ensure I catch this problem if it happens again in the future. The change has passed all regression tests.

Risk

It is low as it is scoped to the failing case only and fixing the behavior. I am not expecting this change to cause any harm or affect anything else.

IMPORTANT: If this change touches code that ships in a NuGet package, please make certain that you have added any necessary package authoring and gotten it explicitly reviewed.

Author: github-actions[bot]
Assignees: tarekgh
Labels:

area-System.Globalization

Milestone: -

@tarekgh tarekgh added this to the 6.0.x milestone Jun 22, 2022
@tarekgh tarekgh added the Servicing-consider Issue for next servicing release review label Jun 22, 2022
@danmoseley
Copy link
Member

Tactics would like to hold on this backport pending evidence of wider impact. Noted that the customer reporting this has a workaround.

@danmoseley danmoseley closed this Jun 23, 2022
@danmoseley danmoseley deleted the backport/pr-71022-to-release/6.0 branch June 23, 2022 17:36
@leecow leecow removed the Servicing-consider Issue for next servicing release review label Jun 23, 2022
@ghost ghost locked as resolved and limited conversation to collaborators Jul 23, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants