You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jl...@apache.org on 2023/12/21 15:57:55 UTC

(cassandra) branch trunk updated (f76f328622 -> 5321f88c40)

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

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


    from f76f328622 Merge branch 'cassandra-5.0' into trunk
     add f0ea12c6d7 Add a startup check to fail startup when using invalid configuration with certain Kernel and FS type
     new 5321f88c40 Merge branch 'cassandra-5.0' into trunk

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .build/cassandra-deps-template.xml                 |   4 +
 .build/parent-pom-template.xml                     |   5 +
 CHANGES.txt                                        |   1 +
 .../config/CassandraRelevantProperties.java        |   4 +-
 src/java/org/apache/cassandra/config/Config.java   |   7 +-
 .../apache/cassandra/io/util/DataOutputBuffer.java |  15 +++
 .../apache/cassandra/service/StartupChecks.java    |  64 ++++++++-
 .../org/apache/cassandra/utils/FBUtilities.java    | 124 ++++++++++++++++-
 .../cassandra/service/StartupChecksTest.java       | 147 ++++++++++++++++++++-
 .../apache/cassandra/utils/FBUtilitiesTest.java    |  49 +++++--
 10 files changed, 401 insertions(+), 19 deletions(-)


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


(cassandra) 01/01: Merge branch 'cassandra-5.0' into trunk

Posted by jl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 5321f88c40cc9ad280a7fb7472194b93e93334c0
Merge: f76f328622 f0ea12c6d7
Author: Jacek Lewandowski <le...@gmail.com>
AuthorDate: Thu Dec 21 16:42:32 2023 +0100

    Merge branch 'cassandra-5.0' into trunk
    
    * cassandra-5.0:
      Add a startup check to fail startup when using invalid configuration with certain Kernel and FS type

 .build/cassandra-deps-template.xml                 |   4 +
 .build/parent-pom-template.xml                     |   5 +
 CHANGES.txt                                        |   1 +
 .../config/CassandraRelevantProperties.java        |   4 +-
 src/java/org/apache/cassandra/config/Config.java   |   7 +-
 .../apache/cassandra/io/util/DataOutputBuffer.java |  15 +++
 .../apache/cassandra/service/StartupChecks.java    |  64 ++++++++-
 .../org/apache/cassandra/utils/FBUtilities.java    | 124 ++++++++++++++++-
 .../cassandra/service/StartupChecksTest.java       | 147 ++++++++++++++++++++-
 .../apache/cassandra/utils/FBUtilitiesTest.java    |  49 +++++--
 10 files changed, 401 insertions(+), 19 deletions(-)

diff --cc CHANGES.txt
index 08a630ca18,d90ee5de25..8956d8fabf
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,11 -1,5 +1,12 @@@
 -5.0-beta2
 +5.1
 + * Make nodetool tablestats use number of significant digits for time and average values consistently (CASSANDRA-19015)
 + * Upgrade jackson to 2.15.3 and snakeyaml to 2.1 (CASSANDRA-18875)
 + * Transactional Cluster Metadata [CEP-21] (CASSANDRA-18330)
 + * Add ELAPSED command to cqlsh (CASSANDRA-18861)
 + * Add the ability to disable bulk loading of SSTables (CASSANDRA-18781)
 + * Clean up obsolete functions and simplify cql_version handling in cqlsh (CASSANDRA-18787)
 +Merged from 5.0:
+  * Add a startup check to fail startup when using invalid configuration with certain Kernel and FS type (CASSANDRA-19196)
   * UCS min_sstable_size should not be lower than target_sstable_size lower bound (CASSANDRA-19112)
   * Fix the correspondingMessagingVersion of SSTable format and improve TTL overflow tests coverage (CASSANDRA-19197)
   * Fix resource cleanup after SAI query timeouts (CASSANDRA-19177)
diff --cc src/java/org/apache/cassandra/config/CassandraRelevantProperties.java
index b28bf2c4f6,16a24fd2f0..db18c45eb8
--- a/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java
+++ b/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java
@@@ -616,10 -592,8 +619,9 @@@ public enum CassandraRelevantPropertie
      USE_NIX_RECURSIVE_DELETE("cassandra.use_nix_recursive_delete"),
      /** Gossiper compute expiration timeout. Default value 3 days. */
      VERY_LONG_TIME_MS("cassandra.very_long_time_ms", "259200000"),
 -    WAIT_FOR_TRACING_EVENTS_TIMEOUT_SECS("cassandra.wait_for_tracing_events_timeout_secs", "0");
 +    WAIT_FOR_TRACING_EVENTS_TIMEOUT_SECS("cassandra.wait_for_tracing_events_timeout_secs", "0"),
 +    ;
  
- 
      static
      {
          CassandraRelevantProperties[] values = CassandraRelevantProperties.values();
diff --cc test/unit/org/apache/cassandra/service/StartupChecksTest.java
index 6a26899beb,6fb063987a..6916f35424
--- a/test/unit/org/apache/cassandra/service/StartupChecksTest.java
+++ b/test/unit/org/apache/cassandra/service/StartupChecksTest.java
@@@ -21,20 -23,39 +23,40 @@@ import java.nio.file.FileSystem
  import java.nio.file.Files;
  import java.nio.file.Path;
  import java.nio.file.Paths;
+ import java.nio.file.spi.FileSystemProvider;
  import java.time.Instant;
  import java.util.List;
- 
- import org.apache.cassandra.config.StartupChecksOptions;
- import org.apache.cassandra.io.util.File;
- import org.junit.*;
- 
+ import java.util.Map;
+ import java.util.Set;
+ import java.util.concurrent.Callable;
+ import java.util.stream.Collectors;
+ 
+ import org.junit.After;
+ import org.junit.AfterClass;
+ import org.junit.Assert;
+ import org.junit.Assume;
+ import org.junit.Before;
+ import org.junit.BeforeClass;
+ import org.junit.Test;
+ 
+ import com.vdurmont.semver4j.Semver;
  import org.apache.cassandra.SchemaLoader;
++import org.apache.cassandra.config.CassandraRelevantProperties;
+ import org.apache.cassandra.config.Config.DiskAccessMode;
  import org.apache.cassandra.config.DatabaseDescriptor;
- import org.apache.cassandra.schema.SchemaConstants;
- import org.apache.cassandra.db.*;
+ import org.apache.cassandra.config.StartupChecksOptions;
+ import org.apache.cassandra.db.ColumnFamilyStore;
+ import org.apache.cassandra.db.Directories;
+ import org.apache.cassandra.db.Keyspace;
  import org.apache.cassandra.exceptions.StartupException;
+ import org.apache.cassandra.io.filesystem.ForwardingFileSystem;
+ import org.apache.cassandra.io.filesystem.ForwardingFileSystemProvider;
+ import org.apache.cassandra.io.filesystem.ForwardingPath;
+ import org.apache.cassandra.io.util.File;
+ import org.apache.cassandra.schema.SchemaConstants;
  import org.apache.cassandra.service.DataResurrectionCheck.Heartbeat;
  import org.apache.cassandra.utils.Clock;
+ import org.apache.cassandra.utils.FBUtilities;
  
  import static java.util.Collections.singletonList;
  import static org.apache.cassandra.config.CassandraRelevantProperties.TEST_INVALID_LEGACY_SSTABLE_ROOT;
@@@ -47,6 -72,6 +73,15 @@@ import static org.mockito.Mockito.when
  
  public class StartupChecksTest
  {
++    static
++    {
++        // This test was failing because in the middle of file deletions in @Before hook, it happened that some
++        // thread modified system.local table. Each change to system.local is immediately flushed to disk. Creation
++        // of those new files when the directory was being deleted caused the test to fail occasionally.
++        // The property below disables flushing system.local after each change.
++        CassandraRelevantProperties.UNSAFE_SYSTEM.setBoolean(true);
++    }
++
      StartupChecks startupChecks;
      Path sstableDir;
      static File heartbeatFile;
diff --cc test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
index dc89c3ed95,7b2bd88afd..28059f5784
--- a/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
+++ b/test/unit/org/apache/cassandra/utils/FBUtilitiesTest.java
@@@ -364,38 -374,26 +374,61 @@@ public class FBUtilitiesTes
          }
      }
  
 +    @Test
 +    public void testPrettyPrintLatency()
 +    {
 +        Assert.assertEquals("5000.000 ms", FBUtilities.prettyPrintLatency(5000));
 +        Assert.assertEquals("100.000 ms", FBUtilities.prettyPrintLatency(100));
 +        Assert.assertEquals("0.050 ms", FBUtilities.prettyPrintLatency(0.05));
 +        Assert.assertEquals("0.001 ms", FBUtilities.prettyPrintLatency(0.0005));
 +        Assert.assertEquals("0.000 ms", FBUtilities.prettyPrintLatency(0.0004));
 +        Assert.assertEquals("NaN ms", FBUtilities.prettyPrintLatency(Double.NaN));
 +        Assert.assertEquals("Infinity ms", FBUtilities.prettyPrintLatency(Double.POSITIVE_INFINITY));
 +    }
 +
 +    @Test
 +    public void testPrettyPrintRatio()
 +    {
 +        Assert.assertEquals("10.000", FBUtilities.prettyPrintRatio(10));
 +        Assert.assertEquals("1.000", FBUtilities.prettyPrintRatio(1));
 +        Assert.assertEquals("0.050", FBUtilities.prettyPrintRatio(0.05));
 +        Assert.assertEquals("0.001", FBUtilities.prettyPrintRatio(0.0005));
 +        Assert.assertEquals("0.000", FBUtilities.prettyPrintRatio(0.0004));
 +        Assert.assertEquals("NaN", FBUtilities.prettyPrintRatio(Double.NaN));
 +        Assert.assertEquals("Infinity", FBUtilities.prettyPrintRatio(Double.POSITIVE_INFINITY));
 +    }
 +
 +    @Test
 +    public void testPrettyPrintAverage()
 +    {
 +        Assert.assertEquals("100500.00", FBUtilities.prettyPrintAverage(100500));
 +        Assert.assertEquals("1.50", FBUtilities.prettyPrintAverage(1.5));
 +        Assert.assertEquals("0.05", FBUtilities.prettyPrintAverage(0.05));
 +        Assert.assertEquals("0.00", FBUtilities.prettyPrintAverage(0.00));
 +        Assert.assertEquals("NaN", FBUtilities.prettyPrintAverage(Double.NaN));
 +        Assert.assertEquals("Infinity", FBUtilities.prettyPrintAverage(Double.POSITIVE_INFINITY));
 +    }
++
+     @Test
+     public void testParseKernelVersion()
+     {
+         assertThat(parseKernelVersion("4.4.0-21-generic").toString()).isEqualTo("4.4.0-21-generic");
+         assertThat(parseKernelVersion("4.4.0-pre21-generic").toString()).isEqualTo("4.4.0-pre21-generic");
+         assertThat(parseKernelVersion("4.4-pre21-generic").toString()).isEqualTo("4.4-pre21-generic");
+         assertThat(parseKernelVersion("4.4.0-21-generic\n").toString()).isEqualTo("4.4.0-21-generic");
+         assertThat(parseKernelVersion("\n4.4.0-21-generic\n").toString()).isEqualTo("4.4.0-21-generic");
+         assertThat(parseKernelVersion("\n 4.4.0-21-generic \n").toString()).isEqualTo("4.4.0-21-generic");
+ 
+         assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> parseKernelVersion("\n \n"))
+                                                                  .withMessageContaining("no version found");
+     }
+ 
+     @Test
+     public void testGetKernelVersion()
+     {
+         Assume.assumeTrue(FBUtilities.isLinux);
+         Semver kernelVersion = FBUtilities.getKernelVersion();
+         assertThat(kernelVersion).isGreaterThan(new Semver("0.0.0", Semver.SemverType.LOOSE));
+         assertThat(kernelVersion).isLessThan(new Semver("100.0.0", Semver.SemverType.LOOSE));
+     }
  }


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