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

Reply via email to