[ https://issues.apache.org/jira/browse/CASSANDRA-14752?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ekaterina Dimitrova updated CASSANDRA-14752: -------------------------------------------- Test and Documentation Plan: [3.11 CircleCI|https://app.circleci.com/pipelines/github/ekaterinadimitrova2/cassandra/1525/workflows/86e5bb0d-2e14-472e-a9f3-312b24ac1a38] 4.0 [j8|https://app.circleci.com/pipelines/github/ekaterinadimitrova2/cassandra/1526/workflows/9855f9f5-4543-4fa6-a2a9-11ec0718f1e4], [j11|https://app.circleci.com/pipelines/github/ekaterinadimitrova2/cassandra/1526/workflows/e4dbf043-aaf3-471a-bae6-931676df893c] trunk [j8|https://app.circleci.com/pipelines/github/ekaterinadimitrova2/cassandra/1527/workflows/81685d1c-5349-4f44-b39b-d655ccb00cee], [j11|https://app.circleci.com/pipelines/github/ekaterinadimitrova2/cassandra/1527/workflows/efbb02f0-f6fd-4d8f-92d1-404f1699d7b0] New test from Marcus also added was: https://issues.apache.org/jira/browse/CASSANDRA-14752?focusedCommentId=17425118&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17425118 Unit test testBooleanCompositeKey added plus full CI run Status: Patch Available (was: In Progress) > serializers/BooleanSerializer.java is using static bytebuffers which may > cause problem for subsequent operations > ---------------------------------------------------------------------------------------------------------------- > > Key: CASSANDRA-14752 > URL: https://issues.apache.org/jira/browse/CASSANDRA-14752 > Project: Cassandra > Issue Type: Bug > Components: Legacy/Core > Reporter: Varun Barala > Assignee: Ekaterina Dimitrova > Priority: Normal > Fix For: 3.11.x, 4.0.x, 4.x > > Attachments: patch, patch-modified > > > [https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/serializers/BooleanSerializer.java#L26] > It has two static Bytebuffer variables:- > {code:java} > private static final ByteBuffer TRUE = ByteBuffer.wrap(new byte[]{1}); > private static final ByteBuffer FALSE = ByteBuffer.wrap(new byte[]{0});{code} > What will happen if the position of these Bytebuffers is being changed by > some other operations? It'll affect other subsequent operations. -IMO Using > static is not a good idea here.- > A potential place where it can become problematic: > [https://github.com/apache/cassandra/blob/cassandra-2.1.13/src/java/org/apache/cassandra/db/marshal/AbstractCompositeType.java#L243] > Since we are calling *`.remaining()`* It may give wrong results _i.e 0_ if > these Bytebuffers have been used previously. > Solution: > > [https://github.com/apache/cassandra/blob/trunk/src/java/org/apache/cassandra/serializers/BooleanSerializer.java#L42] > Every time we return new bytebuffer object. Please do let me know If there > is a better way. I'd like to contribute. Thanks!! > {code:java} > public ByteBuffer serialize(Boolean value) > { > return (value == null) ? ByteBufferUtil.EMPTY_BYTE_BUFFER > : value ? ByteBuffer.wrap(new byte[] {1}) : ByteBuffer.wrap(new byte[] {0}); > // false > } > {code} -- This message was sent by Atlassian Jira (v8.20.1#820001) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org