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 <pmgheap....@gmail.com>:

> 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

Reply via email to