Maksim Zhuravkov created IGNITE-24736:
-----------------------------------------

             Summary: IgniteUnsafeData writeUTF / readUTF depends on Java 
version
                 Key: IGNITE-24736
                 URL: https://issues.apache.org/jira/browse/IGNITE-24736
             Project: Ignite
          Issue Type: Improvement
            Reporter: Maksim Zhuravkov


Reproducer run `write` with JDK 11, run `read` against JDK 11 - strings match.
run `read` against JDK 17, strings won't match.

{code:java}
public class RandomStringTest {

    private final Random random = new Random();

    @BeforeEach
    public void before() {
        random.setSeed(111);
    }

    @Test
    public void write() throws IOException {
        // Write JDK 11
        String s = IgniteTestUtils.randomString(random, 512);

        try (IgniteUnsafeDataOutput os = new IgniteUnsafeDataOutput(111)) {
            os.writeUTF(s);

            byte[] array = os.array();
            System.err.println(Arrays.toString(array));

            Path dir = Paths.get(".").toAbsolutePath();
            Files.write(dir.resolve("string.bin"), array);
        }
    }

    @Test
    public void read() throws IOException {
        // Read JDK 17
        String s = IgniteTestUtils.randomString(random, 512);

        Path dir = Paths.get(".").toAbsolutePath();
        byte[] bytes = Files.readAllBytes(dir.resolve("string.bin"));

        try (IgniteUnsafeDataInput os = new IgniteUnsafeDataInput(bytes)) {
            String s1 = os.readUTF();
            assertEquals(s, s1);
        }
    }
}
{code}




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to