-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Fix Time Zone when running with Globalization Invariant Mode #59710
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Tagging subscribers to this area: @tarekgh, @safern Issue DetailsWhen enabling the globalization invariant mode on Linux, we'll always fallback to In .NET 6.0 we have introduced the Globalization Invariant Mode Breaking Change. This breaking change causes throwing exception when enabling the globalization invariant mode and creating any culture other than Invariant culture. The fix is simple and not risky which is avoid creating any culture during time zone initialization when the globalization invariant mode is on.
|
|
Tagging subscribers to this area: @dotnet/area-system-runtime Issue DetailsWhen enabling the globalization invariant mode on Linux, we'll always fallback to In .NET 6.0 we have introduced the Globalization Invariant Mode Breaking Change. This breaking change causes throwing exception when enabling the globalization invariant mode and creating any culture other than Invariant culture. The fix is simple and not risky which is avoid creating any culture during time zone initialization when the globalization invariant mode is on.
|
safern
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Thanks for reminding using it. |
|
I support taking this. Please send tactics mail when ready. |
|
/backport to release/6.0 |
|
Started backporting to release/6.0: https://github.com/dotnet/runtime/actions/runs/1284491644 |
#59636
When enabling the globalization invariant mode on Linux, we'll always fallback to
UTCtime zone which is wrong and a regression from .NET 5.0. We have some docker containers (e.g. Alpine) which enable the globalization invariant mode by default on the whole image; the problem will be obvious there.In .NET 6.0 we have introduced the Globalization Invariant Mode Breaking Change. This breaking change causes throwing exception when enabling the globalization invariant mode and creating any culture other than Invariant culture.
If the globalization invariant mode is enabled and trying to get the local time zone when running on Linux platform, the creation process will try to initialize the display names of the time zone. This initialization tries to reset the UI culture to
en-USif it is set to Invariant culture. When we have the globalization invariant mode is on, the UI culture will always be Invariant and cause the time zone initialization to fallback toen-USwhich will throw exception because it is not allowed to create any other cultures in the Invariant mode. We catch the exception and then fallback to useUTCtime zone instead of the actual time zone set on the running machine.The fix is simple and not risky which is avoid creating any culture during time zone initialization when the globalization invariant mode is on.