-
Notifications
You must be signed in to change notification settings - Fork 576
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
What could happend, If you update ICU in Node #483
Comments
/cc @nodejs/i18n @srl295 |
Some notes:
And:
|
That are all good arguments and facts but as long some major cloud provider aren't switched to full-icu the update of a node minor version should not cause serious trouble. |
@mabels we try hard not to break anyone's code. The |
@mabels yes, and I am sorry to hear things aren't working. That's why I got started with this integration, to make things easier. There are, however, a lot of trade offs. I think the real short answer is that calling The issue is In a way, the root cause is that you have installed it globally once (with a specific nvm directory), and (understandably!) assume that it could continue to be used. This is not a guarantee that was ever made. I'm sorry if
I think it's more like having code expecting a system call to be implemented at a specific memory address, and then with a bugfix the memory address changes. Moving forward
|
It's always been the case that uploading the result of |
I agree with this. First there are good reasons to your software to make use of the full-icu package. But if your are not controlling how the node runtime is build/provided than you need to mitigate between do not use Intl or switch the cloud provider. And a mitigation could be to use your own .dat files but this comes with not obviously backscatter. And to push your cloud provider is like pushing a truck, it takes time and you are not knowning if this is getting to a end. On the other hand you have get your own software to run. |
If the provider isn't going to mitigate this themselves (and again, the best solution I think is for them to start building with For LTS releases past 13, I think updating should be fine because the ICU data will be 'built in'. @richardlau @mabels with that understanding, can we close this issue? |
Closing as suggested. @mabels @richardlau please reopen / leave a comment if there's anything left that should be looked at closer. |
In these two node version of the same major the icu has been updated from
Icu major 62.1 to 64.2.
And this causes no problems in the first place but in a special case the result was very unlikely.
To prevent this I recommend to not update icu major version in the same node release stream. And to check if the icudt64l.dat file is still compatible.
What happened in this very unpleasant special case?
A standard node is compiled and distributed with the small translation set where these dat file is only ~3MB in size. But if you have an application which need the full set you could use this “https://www.npmjs.com/package/full-icu” or compile by your self and extract the “icudt64l.dat”. If you use the right versions to created the “icudt64.dat” everything is working like expected. But if you use the wrong version node not starting at all:
This not starting behavior is ok if you control the node environment, mean you run your application by a node version chosen from you.
But if you run in an “AWS Lambda” you are not in control of the node version, and than if “AWS” updates the node version which is intendent all your existing lambda with a reference to the fullicu stop working and need a redeployment of a unchanged software. This is not what you expect from any software, during the update a minor version of node.
The text was updated successfully, but these errors were encountered: