Khm, maybe a better variant is to enforce all strings to be encoded in UTF-8? AFAIK multi OS cluster is a quite common case.
пн, 13 дек. 2021 г. в 11:36, Mikhail Petrov <[email protected]>: > Igniters, > > Recently we faced the problem that if the cluster consists of nodes > running in the JVM with different encodings, many issues arise. > The root cause of the mentioned issues is components that use > `String#getBytes()` and `new String(<byte array>)`, which relies on the > system default encoding. Thus, if a string is deserialized on a node > with a different encoding from the one that serialized it, the > deserialized string can be different from the original one. > > For example: > > Serialization/deserialization of string in communication messages may be > broken for some strings on nodes running in a JVM with a different > encoding as DirectByteBufferStreamImplV2 uses String#getBytes() to > serialize strings - [1] > > Or the IgniteAuthenticationProcessor can compute different security IDs > for the user on different nodes in this case - [2] > > What do you think, if we solve this problem globally, by rejecting to > join nodes that run on JVMs with different encodings? > > As a result, we will be sure that all cluster nodes have the same > encoding and all related problems will be solved. > > [1] - https://issues.apache.org/jira/browse/IGNITE-16106 > [2] - https://issues.apache.org/jira/browse/IGNITE-16068 > > -- > Mikhail > > -- Sincerely yours, Ivan Daschinskiy
