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