This is an automated email from the ASF dual-hosted git repository.

jwest pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit b3a1c159ac49ad375331856b12f3641585eddb30
Merge: dd1c811 9519eb3
Author: Jordan West <jw...@apache.org>
AuthorDate: Wed May 20 13:42:58 2020 -0700

    Merge branch 'cassandra-3.11' into trunk

 CHANGES.txt                                        |  1 +
 .../org/apache/cassandra/db/marshal/EmptyType.java | 76 +++++++++++++++++++-
 .../cassandra/serializers/EmptySerializer.java     |  1 +
 .../apache/cassandra/db/marshal/EmptyTypeTest.java | 83 ++++++++++++++++++++++
 4 files changed, 159 insertions(+), 2 deletions(-)

diff --cc CHANGES.txt
index b0e7224,a72fed9..c6c2358
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,37 -1,8 +1,38 @@@
 -3.11.7
 +4.0-alpha5
 + * Provide ability to configure IAuditLogger (CASSANDRA-15748)
 + * Fix nodetool enablefullquerylog blocking param parsing (CASSANDRA-15819)
 + * Add isTransient to SSTableMetadataView (CASSANDRA-15806)
 + * Fix tools/bin/fqltool for all shells (CASSANDRA-15820)
 + * Fix clearing of legacy size_estimates (CASSANDRA-15776)
 + * Update port when reconnecting to pre-4.0 SSL storage (CASSANDRA-15727)
 + * Only calculate dynamicBadnessThreshold once per loop in 
DynamicEndpointSnitch (CASSANDRA-15798)
 + * Cleanup redundant nodetool commands added in 4.0 (CASSANDRA-15256)
 + * Update to Python driver 3.23 for cqlsh (CASSANDRA-15793)
 + * Add tunable initial size and growth factor to RangeTombstoneList 
(CASSANDRA-15763)
 + * Improve debug logging in SSTableReader for index summary (CASSANDRA-15755)
 + * bin/sstableverify should support user provided token ranges 
(CASSANDRA-15753)
 + * Improve logging when mutation passed to commit log is too large 
(CASSANDRA-14781)
 + * replace LZ4FastDecompressor with LZ4SafeDecompressor (CASSANDRA-15560)
 + * Fix buffer pool NPE with concurrent release due to in-progress tiny pool 
eviction (CASSANDRA-15726)
 + * Avoid race condition when completing stream sessions (CASSANDRA-15666)
 + * Flush with fast compressors by default (CASSANDRA-15379)
 + * Fix CqlInputFormat regression from the switch to system.size_estimates 
(CASSANDRA-15637)
 + * Allow sending Entire SSTables over SSL (CASSANDRA-15740)
 + * Fix CQLSH UTF-8 encoding issue for Python 2/3 compatibility 
(CASSANDRA-15739)
 + * Fix batch statement preparation when multiple tables and parameters are 
used (CASSANDRA-15730)
 + * Fix regression with traceOutgoingMessage printing message size 
(CASSANDRA-15687)
 + * Ensure repaired data tracking reads a consistent amount of data across 
replicas (CASSANDRA-15601)
 + * Fix CQLSH to avoid arguments being evaluated (CASSANDRA-15660)
 + * Correct Visibility and Improve Safety of Methods in LatencyMetrics 
(CASSANDRA-15597)
 + * Allow cqlsh to run with Python2.7/Python3.6+ 
(CASSANDRA-15659,CASSANDRA-15573)
 + * Improve logging around incremental repair (CASSANDRA-15599)
 + * Do not check cdc_raw_directory filesystem space if CDC disabled 
(CASSANDRA-15688)
 + * Replace array iterators with get by index (CASSANDRA-15394)
 + * Minimize BTree iterator allocations (CASSANDRA-15389)
 +Merged from 3.11:
   * Fix CQL formatting of read command restrictions for slow query log 
(CASSANDRA-15503)
 - * Allow sstableloader to use SSL on the native port (CASSANDRA-14904)
  Merged from 3.0:
+  * EmptyType doesn't override writeValue so could attempt to write bytes when 
expected not to (CASSANDRA-15790)
   * Fix index queries on partition key columns when some partitions contains 
only static data (CASSANDRA-13666)
   * Avoid creating duplicate rows during major upgrades (CASSANDRA-15789)
   * liveDiskSpaceUsed and totalDiskSpaceUsed get corrupted if 
IndexSummaryRedistribution gets interrupted (CASSANDRA-15674)
diff --cc src/java/org/apache/cassandra/db/marshal/EmptyType.java
index d3dd4c2,00c919d..88d62c4
--- a/src/java/org/apache/cassandra/db/marshal/EmptyType.java
+++ b/src/java/org/apache/cassandra/db/marshal/EmptyType.java
@@@ -22,11 -26,14 +26,14 @@@ import org.slf4j.LoggerFactory
  import org.apache.cassandra.cql3.CQL3Type;
  import org.apache.cassandra.cql3.Constants;
  import org.apache.cassandra.cql3.Term;
- import org.apache.cassandra.serializers.TypeSerializer;
- import org.apache.cassandra.transport.ProtocolVersion;
+ import org.apache.cassandra.io.util.DataInputPlus;
+ import org.apache.cassandra.io.util.DataOutputPlus;
 -import org.apache.cassandra.serializers.TypeSerializer;
 -import org.apache.cassandra.transport.ProtocolVersion;
  import org.apache.cassandra.serializers.EmptySerializer;
  import org.apache.cassandra.serializers.MarshalException;
++import org.apache.cassandra.serializers.TypeSerializer;
++import org.apache.cassandra.transport.ProtocolVersion;
  import org.apache.cassandra.utils.ByteBufferUtil;
+ import org.apache.cassandra.utils.NoSpamLogger;
  
  /**
   * A type that only accept empty data.
diff --cc test/unit/org/apache/cassandra/db/marshal/EmptyTypeTest.java
index 0000000,30f63b3..b362666
mode 000000,100644..100644
--- a/test/unit/org/apache/cassandra/db/marshal/EmptyTypeTest.java
+++ b/test/unit/org/apache/cassandra/db/marshal/EmptyTypeTest.java
@@@ -1,0 -1,94 +1,83 @@@
+ package org.apache.cassandra.db.marshal;
+ 
+ import java.nio.ByteBuffer;
+ 
 -import org.junit.Assert;
+ import org.junit.Test;
+ 
+ import org.apache.cassandra.io.util.DataInputPlus;
+ import org.apache.cassandra.io.util.DataOutputPlus;
+ import org.apache.cassandra.serializers.MarshalException;
+ import org.apache.cassandra.utils.ByteBufferUtil;
+ import org.mockito.Mockito;
+ 
++import static org.assertj.core.api.Assertions.assertThat;
++import static org.assertj.core.api.Assertions.assertThatThrownBy;
+ 
+ public class EmptyTypeTest
+ {
+     @Test
+     public void isFixed()
+     {
 -        Assert.assertEquals(0, EmptyType.instance.valueLengthIfFixed());
++        assertThat(EmptyType.instance.valueLengthIfFixed()).isEqualTo(0);
+     }
+ 
+     @Test
+     public void writeEmptyAllowed()
+     {
+         DataOutputPlus output = Mockito.mock(DataOutputPlus.class);
+         EmptyType.instance.writeValue(ByteBufferUtil.EMPTY_BYTE_BUFFER, 
output);
+ 
+         Mockito.verifyNoInteractions(output);
+     }
+ 
+     @Test
+     public void writeNonEmpty()
+     {
+         DataOutputPlus output = Mockito.mock(DataOutputPlus.class);
+         ByteBuffer rejected = ByteBuffer.wrap("this better fail".getBytes());
+ 
 -        boolean thrown = false;
 -        try
 -        {
 -            EmptyType.instance.writeValue(rejected, output);
 -        }
 -        catch (AssertionError e)
 -        {
 -            thrown = true;
 -        }
 -        Assert.assertTrue("writeValue did not reject non-empty input", 
thrown);
 -
++        assertThatThrownBy(() -> EmptyType.instance.writeValue(rejected, 
output))
++                  .isInstanceOf(AssertionError.class);
+         Mockito.verifyNoInteractions(output);
+     }
+ 
+     @Test
+     public void read()
+     {
+         DataInputPlus input = Mockito.mock(DataInputPlus.class);
+ 
+         ByteBuffer buffer = EmptyType.instance.readValue(input);
 -        Assert.assertNotNull(buffer);
 -        Assert.assertFalse("empty type returned back non-empty data", 
buffer.hasRemaining());
++        assertThat(buffer)
++                  .isNotNull()
++                  .matches(b -> !b.hasRemaining());
+ 
+         buffer = EmptyType.instance.readValue(input, 42);
 -        Assert.assertNotNull(buffer);
 -        Assert.assertFalse("empty type returned back non-empty data", 
buffer.hasRemaining());
++        assertThat(buffer)
++                  .isNotNull()
++                  .matches(b -> !b.hasRemaining());
+ 
+         Mockito.verifyNoInteractions(input);
+     }
+ 
+     @Test
+     public void decompose()
+     {
+         ByteBuffer buffer = EmptyType.instance.decompose(null);
 -        Assert.assertEquals(0, buffer.remaining());
++        assertThat(buffer.remaining()).isEqualTo(0);
+     }
+ 
+     @Test
+     public void composeEmptyInput()
+     {
+         Void result = 
EmptyType.instance.compose(ByteBufferUtil.EMPTY_BYTE_BUFFER);
 -        Assert.assertNull(result);
++        assertThat(result).isNull();
+     }
+ 
+     @Test
+     public void composeNonEmptyInput()
+     {
 -        try
 -        {
 -            EmptyType.instance.compose(ByteBufferUtil.bytes("should fail"));
 -            Assert.fail("compose is expected to reject non-empty values, but 
did not");
 -        }
 -        catch (MarshalException e) {
 -            Assert.assertEquals("EmptyType only accept empty values", 
e.getMessage());
 -        }
++        assertThatThrownBy(() -> 
EmptyType.instance.compose(ByteBufferUtil.bytes("should fail")))
++                  .isInstanceOf(MarshalException.class)
++                  .hasMessage("EmptyType only accept empty values");
+     }
+ }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to