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

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


The following commit(s) were added to refs/heads/trunk by this push:
     new fc97fd1037 Upgrade logback version to 1.5.18 and slf4j dependencies to 
2.0.17
fc97fd1037 is described below

commit fc97fd1037843ddb320011c52faa5a3896368731
Author: Nikolay Izhikov <nizhi...@apache.org>
AuthorDate: Wed Apr 9 13:36:32 2025 +0300

    Upgrade logback version to 1.5.18 and slf4j dependencies to 2.0.17
    
    patch by Nikolay Izhikov; reviewed by Stefan Miklosovic, Maxim Muzafarov, 
Brandon Williams for CASSANDRA-20429
---
 .build/parent-pom-template.xml                     |  10 +-
 CHANGES.txt                                        |   1 +
 conf/logback.xml                                   |  10 +-
 .../configuration/cass_logback_xml_file.adoc       |  11 +-
 .../pages/managing/operating/audit_logging.adoc    |   2 +-
 ide/nbproject/project.xml                          |   2 +-
 .../cassandra/service/StorageServiceMBean.java     |   1 -
 src/java/org/apache/cassandra/tools/NodeProbe.java |   2 +-
 .../utils/logging/LogbackLoggingSupport.java       |  22 ++--
 test/conf/logback-burntest.xml                     |   6 +-
 test/conf/logback-dtest-quiet.xml                  |   6 +-
 test/conf/logback-dtest.xml                        |   8 +-
 .../logback-dtest_with_slow_query_appender.xml     |   8 +-
 ...back-dtest_with_slow_query_appender_invalid.xml |   8 +-
 test/conf/logback-dtest_with_vtable_appender.xml   |   8 +-
 .../logback-dtest_with_vtable_appender_invalid.xml |   8 +-
 test/conf/logback-jmh.xml                          |   7 +-
 test/conf/logback-simulator.xml                    |   6 +-
 test/conf/logback-test.xml                         |   6 +-
 .../validation/operations/AggregationTest.java     | 127 ++++++---------------
 20 files changed, 98 insertions(+), 161 deletions(-)

diff --git a/.build/parent-pom-template.xml b/.build/parent-pom-template.xml
index 2bb3c26927..714f18b8e5 100644
--- a/.build/parent-pom-template.xml
+++ b/.build/parent-pom-template.xml
@@ -403,27 +403,27 @@
       <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
-        <version>1.7.36</version>
+        <version>2.0.17</version>
       </dependency>
       <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>log4j-over-slf4j</artifactId>
-        <version>1.7.36</version>
+        <version>2.0.17</version>
       </dependency>
       <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>jcl-over-slf4j</artifactId>
-        <version>1.7.36</version>
+        <version>2.0.17</version>
       </dependency>
       <dependency>
         <groupId>ch.qos.logback</groupId>
         <artifactId>logback-core</artifactId>
-        <version>1.2.12</version>
+        <version>1.5.18</version>
       </dependency>
       <dependency>
         <groupId>ch.qos.logback</groupId>
         <artifactId>logback-classic</artifactId>
-        <version>1.2.12</version>
+        <version>1.5.18</version>
       </dependency>
       <dependency>
         <groupId>com.fasterxml.jackson.core</groupId>
diff --git a/CHANGES.txt b/CHANGES.txt
index f076f8a5d1..4fa6658839 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 5.1
+ * Upgrade logback version to 1.5.18 and slf4j dependencies to 2.0.17 
(CASSANDRA-20429)
  * Switch memtable-related off-heap objects to Native Endian and Memory to 
Little Endian (CASSANDRA-20190)
  * Change SSTableSimpleScanner to use SSTableReader#openDataReaderForScan 
(CASSANDRA-20538)
  * Automated Repair Inside Cassandra [CEP-37] (CASSANDRA-19918)
diff --git a/conf/logback.xml b/conf/logback.xml
index a8dabf6564..4855433b99 100644
--- a/conf/logback.xml
+++ b/conf/logback.xml
@@ -23,8 +23,6 @@ appender reference in the root level section below.
 -->
 
 <configuration scan="true" scanPeriod="60 seconds">
-  <jmxConfigurator />
-
   <!-- No shutdown hook; we run it ourselves in StorageService after shutdown 
-->
 
   <!-- SYSTEMLOG rolling file appender to system.log (INFO level) -->
@@ -43,7 +41,7 @@ appender reference in the root level section below.
       <totalSizeCap>5GB</totalSizeCap>
     </rollingPolicy>
     <encoder>
-      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
+      <pattern>%-5level [%thread] %date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} 
%F:%L - %msg%n</pattern>
     </encoder>
   </appender>
 
@@ -60,7 +58,7 @@ appender reference in the root level section below.
       <totalSizeCap>5GB</totalSizeCap>
     </rollingPolicy>
     <encoder>
-      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
+      <pattern>%-5level [%thread] %date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} 
%F:%L - %msg%n</pattern>
     </encoder>
   </appender>
 
@@ -80,7 +78,7 @@ appender reference in the root level section below.
       <level>INFO</level>
     </filter>
     <encoder>
-      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
+      <pattern>%-5level [%thread] %date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} 
%F:%L - %msg%n</pattern>
     </encoder>
   </appender>
 
@@ -98,7 +96,7 @@ appender reference in the root level section below.
       <totalSizeCap>5GB</totalSizeCap>
     </rollingPolicy>
     <encoder>
-      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
+      <pattern>%-5level [%thread] %date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} 
%F:%L - %msg%n</pattern>
     </encoder>
   </appender> -->
 
diff --git 
a/doc/modules/cassandra/pages/managing/configuration/cass_logback_xml_file.adoc 
b/doc/modules/cassandra/pages/managing/configuration/cass_logback_xml_file.adoc
index b6e4d5f545..73cae5b545 100644
--- 
a/doc/modules/cassandra/pages/managing/configuration/cass_logback_xml_file.adoc
+++ 
b/doc/modules/cassandra/pages/managing/configuration/cass_logback_xml_file.adoc
@@ -76,8 +76,8 @@ the rolling policy.
 
 Specify the format of the message. Part of the rolling policy.
 
-*Example:* <maxHistory>7</maxHistory> *Example:* <encoder>
-<pattern>%-5level [%thread] %date\{ISO8601} %F:%L - %msg%n</pattern>
+*Example:* <encoder>
+<pattern>%-5level [%thread] %date\{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %F:%L - 
%msg%n</pattern>
 </encoder>
 
 === Logging system logs to Cassandra virtual table
@@ -172,7 +172,6 @@ A reader noticed that by placing custom appender 
implementation of `SLOW_QUERIES
 [source,XML]
 ----
 <configuration scan="true" scanPeriod="60 seconds">
-  <jmxConfigurator />
 
   <!-- No shutdown hook; we run it ourselves in StorageService after shutdown 
-->
 
@@ -192,7 +191,7 @@ A reader noticed that by placing custom appender 
implementation of `SLOW_QUERIES
       <totalSizeCap>5GB</totalSizeCap>
     </rollingPolicy>
     <encoder>
-      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
+      <pattern>%-5level [%thread] %date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} 
%F:%L - %msg%n</pattern>
     </encoder>
   </appender>
 
@@ -209,7 +208,7 @@ A reader noticed that by placing custom appender 
implementation of `SLOW_QUERIES
       <totalSizeCap>5GB</totalSizeCap>
     </rollingPolicy>
     <encoder>
-      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
+      <pattern>%-5level [%thread] %date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} 
%F:%L - %msg%n</pattern>
     </encoder>
   </appender>
 
@@ -229,7 +228,7 @@ A reader noticed that by placing custom appender 
implementation of `SLOW_QUERIES
       <level>INFO</level>
     </filter>
     <encoder>
-      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
+      <pattern>%-5level [%thread] %date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} 
%F:%L - %msg%n</pattern>
     </encoder>
   </appender>
 
diff --git a/doc/modules/cassandra/pages/managing/operating/audit_logging.adoc 
b/doc/modules/cassandra/pages/managing/operating/audit_logging.adoc
index 63f4ba1a11..c50c9785dc 100644
--- a/doc/modules/cassandra/pages/managing/operating/audit_logging.adoc
+++ b/doc/modules/cassandra/pages/managing/operating/audit_logging.adoc
@@ -213,7 +213,7 @@ the audit log events to flow through separate log file 
instead of system.log.
     <totalSizeCap>5GB</totalSizeCap>
   </rollingPolicy>
   <encoder>
-    <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
+    <pattern>%-5level [%thread] %date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %F:%L 
- %msg%n</pattern>
   </encoder>
 </appender>
 
diff --git a/ide/nbproject/project.xml b/ide/nbproject/project.xml
index 0a000a9ab6..f770d1e68d 100644
--- a/ide/nbproject/project.xml
+++ b/ide/nbproject/project.xml
@@ -8,7 +8,7 @@
                 <property name="project.dir">..</property>
                 <!-- the compile classpaths should be distinct per compilation 
unit… but it is kept simple and the build will catch errors -->
                 <!-- DO NOT EDIT THE FOLLOWING LINE DIRECTLY: Use the 
update-netbeans-classpath.sh script -->
-                <property 
name="cassandra.classpath.jars">${project.dir}/build/lib/jars/AmazonCorrettoCryptoProvider-2.2.0-linux-aarch_64.jar:${project.dir}/build/lib/jars/HdrHistogram-2.1.12.jar:${project.dir}/build/lib/jars/ST4-4.0.8.jar:${project.dir}/build/lib/jars/affinity-3.23.3.jar:${project.dir}/build/lib/jars/agrona-1.17.1.jar:${project.dir}/build/lib/jars/airline-0.8.jar:${project.dir}/build/lib/jars/antlr-3.5.2.jar:${project.dir}/build/lib/jars/antlr-runtime-3.5.2.jar:${projec
 [...]
+                <property 
name="cassandra.classpath.jars">${project.dir}/build/lib/jars/AmazonCorrettoCryptoProvider-2.2.0-linux-aarch_64.jar:${project.dir}/build/lib/jars/HdrHistogram-2.1.12.jar:${project.dir}/build/lib/jars/ST4-4.0.8.jar:${project.dir}/build/lib/jars/affinity-3.23.3.jar:${project.dir}/build/lib/jars/agrona-1.17.1.jar:${project.dir}/build/lib/jars/airline-0.8.jar:${project.dir}/build/lib/jars/antlr-3.5.2.jar:${project.dir}/build/lib/jars/antlr-runtime-3.5.2.jar:${projec
 [...]
             </properties>
             <folders>
                 <source-folder>
diff --git a/src/java/org/apache/cassandra/service/StorageServiceMBean.java 
b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
index e188595aa3..5d4781c546 100644
--- a/src/java/org/apache/cassandra/service/StorageServiceMBean.java
+++ b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
@@ -586,7 +586,6 @@ public interface StorageServiceMBean extends 
NotificationEmitter
      * If classQualifer is not empty but level is empty/null, it will set the 
level to null for the defined classQualifer<br>
      * If level cannot be parsed, then the level will be defaulted to DEBUG<br>
      * <br>
-     * The logback configuration should have {@code < jmxConfigurator />} set
      *
      * @param classQualifier The logger's classQualifer
      * @param level The log level
diff --git a/src/java/org/apache/cassandra/tools/NodeProbe.java 
b/src/java/org/apache/cassandra/tools/NodeProbe.java
index 478fc0e55a..62d2d164c6 100644
--- a/src/java/org/apache/cassandra/tools/NodeProbe.java
+++ b/src/java/org/apache/cassandra/tools/NodeProbe.java
@@ -2363,7 +2363,7 @@ public class NodeProbe implements AutoCloseable
         }
         catch (Exception e)
         {
-            throw new RuntimeException("Error setting log for " + 
classQualifier + " on level " + level + ". Please check logback configuration 
and ensure to have <jmxConfigurator /> set", e);
+            throw new RuntimeException("Error setting log for " + 
classQualifier + " on level " + level + ". Please check logback 
configuration.", e);
         }
     }
 
diff --git 
a/src/java/org/apache/cassandra/utils/logging/LogbackLoggingSupport.java 
b/src/java/org/apache/cassandra/utils/logging/LogbackLoggingSupport.java
index f32963b73a..d8f83116bb 100644
--- a/src/java/org/apache/cassandra/utils/logging/LogbackLoggingSupport.java
+++ b/src/java/org/apache/cassandra/utils/logging/LogbackLoggingSupport.java
@@ -18,7 +18,6 @@
 
 package org.apache.cassandra.utils.logging;
 
-import java.lang.management.ManagementFactory;
 import java.security.AccessControlException;
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -26,25 +25,21 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 
-import javax.management.JMX;
-import javax.management.ObjectName;
-
-import org.apache.cassandra.security.ThreadAwareSecurityManager;
+import com.google.common.collect.Maps;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.collect.Maps;
-
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.jmx.JMXConfiguratorMBean;
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.classic.spi.TurboFilterList;
 import ch.qos.logback.classic.turbo.ReconfigureOnChangeFilter;
 import ch.qos.logback.classic.turbo.TurboFilter;
+import ch.qos.logback.classic.util.ContextInitializer;
 import ch.qos.logback.core.Appender;
-import ch.qos.logback.core.hook.DelayingShutdownHook;
+import ch.qos.logback.core.hook.DefaultShutdownHook;
+import org.apache.cassandra.security.ThreadAwareSecurityManager;
 
 /**
  * Encapsulates all logback-specific implementations in a central place.
@@ -93,7 +88,7 @@ public class LogbackLoggingSupport implements LoggingSupport
     @Override
     public void onShutdown()
     {
-        DelayingShutdownHook logbackHook = new DelayingShutdownHook();
+        DefaultShutdownHook logbackHook = new DefaultShutdownHook();
         logbackHook.setContext((LoggerContext) 
LoggerFactory.getILoggerFactory());
         logbackHook.run();
     }
@@ -106,10 +101,9 @@ public class LogbackLoggingSupport implements 
LoggingSupport
         // if both classQualifier and rawLevel are empty, reload from 
configuration
         if (StringUtils.isBlank(classQualifier) && 
StringUtils.isBlank(rawLevel))
         {
-            JMXConfiguratorMBean jmxConfiguratorMBean = 
JMX.newMBeanProxy(ManagementFactory.getPlatformMBeanServer(),
-                                                                          new 
ObjectName("ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator"),
-                                                                          
JMXConfiguratorMBean.class);
-            jmxConfiguratorMBean.reloadDefaultConfiguration();
+            LoggerContext lc = (LoggerContext) 
LoggerFactory.getILoggerFactory();
+            lc.reset();
+            new ContextInitializer(lc).autoConfig();
             return;
         }
         // classQualifier is set, but blank level given
diff --git a/test/conf/logback-burntest.xml b/test/conf/logback-burntest.xml
index 3aada72e8f..f2ade83f2e 100644
--- a/test/conf/logback-burntest.xml
+++ b/test/conf/logback-burntest.xml
@@ -20,7 +20,7 @@
   <define name="instance_id" 
class="org.apache.cassandra.distributed.impl.InstanceIDDefiner" />
 
   <!-- Shutdown hook ensures that async appender flushes -->
-  <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
+  <shutdownHook class="ch.qos.logback.core.hook.DefaultShutdownHook"/>
 
   <appender name="FILE" 
class="ch.qos.logback.core.rolling.RollingFileAppender">
 
@@ -36,7 +36,7 @@
     </triggeringPolicy>
 
     <encoder>
-      <pattern>%-5level [%thread] ${instance_id} %date{ISO8601} 
%msg%n</pattern>
+      <pattern>%-5level [%thread] ${instance_id} 
%date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %msg%n</pattern>
     </encoder>
     <immediateFlush>false</immediateFlush>
   </appender>
@@ -51,7 +51,7 @@
 
   <appender name="STDOUT" target="System.out" 
class="ch.qos.logback.core.ConsoleAppender">
     <encoder>
-      <pattern>%-5level [%thread] ${instance_id} %date{ISO8601} %F:%L - 
%msg%n</pattern>
+      <pattern>%-5level [%thread] ${instance_id} 
%date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %F:%L - %msg%n</pattern>
     </encoder>
     <filter class="org.apache.cassandra.net.LogbackFilter"/>
   </appender>
diff --git a/test/conf/logback-dtest-quiet.xml 
b/test/conf/logback-dtest-quiet.xml
index bb9f983177..8f1f1f15fd 100644
--- a/test/conf/logback-dtest-quiet.xml
+++ b/test/conf/logback-dtest-quiet.xml
@@ -22,12 +22,12 @@
   <define name="instance_id" 
class="org.apache.cassandra.distributed.impl.InstanceIDDefiner" />
 
   <!-- Shutdown hook ensures that async appender flushes -->
-  <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
+  <shutdownHook class="ch.qos.logback.core.hook.DefaultShutdownHook"/>
 
   <appender name="INSTANCEFILE" class="ch.qos.logback.core.FileAppender">
     
<file>./build/test/logs/${cassandra.testtag}/${suitename}/${cluster_id}/${instance_id}/system.log</file>
     <encoder>
-      <pattern>%-5level [%thread] ${instance_id} %date{ISO8601} %F:%L - 
%msg%n</pattern>
+      <pattern>%-5level [%thread] ${instance_id} 
%date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %F:%L - %msg%n</pattern>
     </encoder>
     <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
       <level>INFO</level>
@@ -37,7 +37,7 @@
 
   <appender name="INSTANCESTDERR" target="System.err" 
class="ch.qos.logback.core.ConsoleAppender">
     <encoder>
-      <pattern>%-5level %date{HH:mm:ss,SSS} %msg%n</pattern>
+      <pattern>%-5level %date{"HH:mm:ss,SSS"} %msg%n</pattern>
     </encoder>
     <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
       <level>ERROR</level>
diff --git a/test/conf/logback-dtest.xml b/test/conf/logback-dtest.xml
index d854f8c771..22d2e9faa4 100644
--- a/test/conf/logback-dtest.xml
+++ b/test/conf/logback-dtest.xml
@@ -22,19 +22,19 @@
   <define name="instance_id" 
class="org.apache.cassandra.distributed.impl.InstanceIDDefiner" />
 
   <!-- Shutdown hook ensures that async appender flushes -->
-  <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
+  <shutdownHook class="ch.qos.logback.core.hook.DefaultShutdownHook"/>
 
   <appender name="INSTANCEFILE" class="ch.qos.logback.core.FileAppender">
     
<file>./build/test/logs/${cassandra.testtag}/${suitename}/${cluster_id}/${instance_id}/system.log</file>
     <encoder>
-      <pattern>%-5level [%thread] ${instance_id} %date{ISO8601} %F:%L - 
%msg%n</pattern>
+      <pattern>%-5level [%thread] ${instance_id} 
%date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %F:%L - %msg%n</pattern>
     </encoder>
     <immediateFlush>true</immediateFlush>
   </appender>
 
   <appender name="INSTANCESTDERR" target="System.err" 
class="ch.qos.logback.core.ConsoleAppender">
     <encoder>
-      <pattern>%-5level %date{HH:mm:ss,SSS} %msg%n</pattern>
+      <pattern>%-5level %date{"HH:mm:ss,SSS"} %msg%n</pattern>
     </encoder>
     <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
       <level>WARN</level>
@@ -43,7 +43,7 @@
 
   <appender name="INSTANCESTDOUT" target="System.out" 
class="ch.qos.logback.core.ConsoleAppender">
     <encoder>
-      <pattern>%-5level [%thread] ${instance_id} %date{ISO8601} %F:%L - 
%msg%n</pattern>
+      <pattern>%-5level [%thread] ${instance_id} 
%date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %F:%L - %msg%n</pattern>
     </encoder>
     <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
       <level>DEBUG</level>
diff --git a/test/conf/logback-dtest_with_slow_query_appender.xml 
b/test/conf/logback-dtest_with_slow_query_appender.xml
index 1b6ed7511f..62d112d800 100644
--- a/test/conf/logback-dtest_with_slow_query_appender.xml
+++ b/test/conf/logback-dtest_with_slow_query_appender.xml
@@ -21,19 +21,19 @@
     <define name="instance_id" 
class="org.apache.cassandra.distributed.impl.InstanceIDDefiner" />
 
     <!-- Shutdown hook ensures that async appender flushes -->
-    <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
+    <shutdownHook class="ch.qos.logback.core.hook.DefaultShutdownHook"/>
 
     <appender name="INSTANCEFILE" class="ch.qos.logback.core.FileAppender">
         
<file>./build/test/logs/${cassandra.testtag}/${suitename}/${cluster_id}/${instance_id}/system.log</file>
         <encoder>
-            <pattern>%-5level [%thread] ${instance_id} %date{ISO8601} 
%msg%n</pattern>
+            <pattern>%-5level [%thread] ${instance_id} 
%date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %msg%n</pattern>
         </encoder>
         <immediateFlush>true</immediateFlush>
     </appender>
 
     <appender name="INSTANCESTDERR" target="System.err" 
class="ch.qos.logback.core.ConsoleAppender">
         <encoder>
-            <pattern>%-5level %date{HH:mm:ss,SSS} %msg%n</pattern>
+            <pattern>%-5level %date{"HH:mm:ss,SSS"} %msg%n</pattern>
         </encoder>
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>WARN</level>
@@ -42,7 +42,7 @@
 
     <appender name="INSTANCESTDOUT" target="System.out" 
class="ch.qos.logback.core.ConsoleAppender">
         <encoder>
-            <pattern>%-5level [%thread] ${instance_id} %date{ISO8601} %F:%L - 
%msg%n</pattern>
+            <pattern>%-5level [%thread] ${instance_id} 
%date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %F:%L - %msg%n</pattern>
         </encoder>
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>DEBUG</level>
diff --git a/test/conf/logback-dtest_with_slow_query_appender_invalid.xml 
b/test/conf/logback-dtest_with_slow_query_appender_invalid.xml
index a2252dd23a..1f7f58e861 100644
--- a/test/conf/logback-dtest_with_slow_query_appender_invalid.xml
+++ b/test/conf/logback-dtest_with_slow_query_appender_invalid.xml
@@ -21,19 +21,19 @@
     <define name="instance_id" 
class="org.apache.cassandra.distributed.impl.InstanceIDDefiner" />
 
     <!-- Shutdown hook ensures that async appender flushes -->
-    <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
+    <shutdownHook class="ch.qos.logback.core.hook.DefaultShutdownHook"/>
 
     <appender name="INSTANCEFILE" class="ch.qos.logback.core.FileAppender">
         
<file>./build/test/logs/${cassandra.testtag}/${suitename}/${cluster_id}/${instance_id}/system.log</file>
         <encoder>
-            <pattern>%-5level [%thread] ${instance_id} %date{ISO8601} 
%msg%n</pattern>
+            <pattern>%-5level [%thread] ${instance_id} 
%date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %msg%n</pattern>
         </encoder>
         <immediateFlush>true</immediateFlush>
     </appender>
 
     <appender name="INSTANCESTDERR" target="System.err" 
class="ch.qos.logback.core.ConsoleAppender">
         <encoder>
-            <pattern>%-5level %date{HH:mm:ss,SSS} %msg%n</pattern>
+            <pattern>%-5level %date{"HH:mm:ss,SSS"} %msg%n</pattern>
         </encoder>
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>WARN</level>
@@ -42,7 +42,7 @@
 
     <appender name="INSTANCESTDOUT" target="System.out" 
class="ch.qos.logback.core.ConsoleAppender">
         <encoder>
-            <pattern>%-5level [%thread] ${instance_id} %date{ISO8601} %F:%L - 
%msg%n</pattern>
+            <pattern>%-5level [%thread] ${instance_id} 
%date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %F:%L - %msg%n</pattern>
         </encoder>
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>DEBUG</level>
diff --git a/test/conf/logback-dtest_with_vtable_appender.xml 
b/test/conf/logback-dtest_with_vtable_appender.xml
index c9fd108c77..726c46d524 100644
--- a/test/conf/logback-dtest_with_vtable_appender.xml
+++ b/test/conf/logback-dtest_with_vtable_appender.xml
@@ -21,19 +21,19 @@
     <define name="instance_id" 
class="org.apache.cassandra.distributed.impl.InstanceIDDefiner" />
 
     <!-- Shutdown hook ensures that async appender flushes -->
-    <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
+    <shutdownHook class="ch.qos.logback.core.hook.DefaultShutdownHook"/>
 
     <appender name="INSTANCEFILE" class="ch.qos.logback.core.FileAppender">
         
<file>./build/test/logs/${cassandra.testtag}/${suitename}/${cluster_id}/${instance_id}/system.log</file>
         <encoder>
-            <pattern>%-5level [%thread] ${instance_id} %date{ISO8601} 
%msg%n</pattern>
+            <pattern>%-5level [%thread] ${instance_id} 
%date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %msg%n</pattern>
         </encoder>
         <immediateFlush>true</immediateFlush>
     </appender>
 
     <appender name="INSTANCESTDERR" target="System.err" 
class="ch.qos.logback.core.ConsoleAppender">
         <encoder>
-            <pattern>%-5level %date{HH:mm:ss,SSS} %msg%n</pattern>
+            <pattern>%-5level %date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} 
%msg%n</pattern>
         </encoder>
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>WARN</level>
@@ -42,7 +42,7 @@
 
     <appender name="INSTANCESTDOUT" target="System.out" 
class="ch.qos.logback.core.ConsoleAppender">
         <encoder>
-            <pattern>%-5level [%thread] ${instance_id} %date{ISO8601} %F:%L - 
%msg%n</pattern>
+            <pattern>%-5level [%thread] ${instance_id} 
%date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %F:%L - %msg%n</pattern>
         </encoder>
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>DEBUG</level>
diff --git a/test/conf/logback-dtest_with_vtable_appender_invalid.xml 
b/test/conf/logback-dtest_with_vtable_appender_invalid.xml
index 1b30c141c2..257f857534 100644
--- a/test/conf/logback-dtest_with_vtable_appender_invalid.xml
+++ b/test/conf/logback-dtest_with_vtable_appender_invalid.xml
@@ -21,19 +21,19 @@
     <define name="instance_id" 
class="org.apache.cassandra.distributed.impl.InstanceIDDefiner" />
 
     <!-- Shutdown hook ensures that async appender flushes -->
-    <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
+    <shutdownHook class="ch.qos.logback.core.hook.DefaultShutdownHook"/>
 
     <appender name="INSTANCEFILE" class="ch.qos.logback.core.FileAppender">
         
<file>./build/test/logs/${cassandra.testtag}/${suitename}/${cluster_id}/${instance_id}/system.log</file>
         <encoder>
-            <pattern>%-5level [%thread] ${instance_id} %date{ISO8601} 
%msg%n</pattern>
+            <pattern>%-5level [%thread] ${instance_id} 
%date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %msg%n</pattern>
         </encoder>
         <immediateFlush>true</immediateFlush>
     </appender>
 
     <appender name="INSTANCESTDERR" target="System.err" 
class="ch.qos.logback.core.ConsoleAppender">
         <encoder>
-            <pattern>%-5level %date{HH:mm:ss,SSS} %msg%n</pattern>
+            <pattern>%-5level %date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} 
%msg%n</pattern>
         </encoder>
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>WARN</level>
@@ -42,7 +42,7 @@
 
     <appender name="INSTANCESTDOUT" target="System.out" 
class="ch.qos.logback.core.ConsoleAppender">
         <encoder>
-            <pattern>%-5level [%thread] ${instance_id} %date{ISO8601} %F:%L - 
%msg%n</pattern>
+            <pattern>%-5level [%thread] ${instance_id} 
%date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %F:%L - %msg%n</pattern>
         </encoder>
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>DEBUG</level>
diff --git a/test/conf/logback-jmh.xml b/test/conf/logback-jmh.xml
index 4138f19c72..1f9bb3fd1b 100644
--- a/test/conf/logback-jmh.xml
+++ b/test/conf/logback-jmh.xml
@@ -23,7 +23,6 @@ appender reference in the root level section below.
 -->
 
 <configuration scan="false" scanPeriod="60 seconds">
-  <jmxConfigurator />
   <!-- No shutdown hook; we run it ourselves in StorageService after shutdown 
-->
 
   <!-- SYSTEMLOG rolling file appender to system.log (INFO level) -->
@@ -42,7 +41,7 @@ appender reference in the root level section below.
       <totalSizeCap>5GB</totalSizeCap>
     </rollingPolicy>
     <encoder>
-      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
+      <pattern>%-5level [%thread] %date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} 
%F:%L - %msg%n</pattern>
     </encoder>
   </appender>
 
@@ -59,7 +58,7 @@ appender reference in the root level section below.
       <totalSizeCap>5GB</totalSizeCap>
     </rollingPolicy>
     <encoder>
-      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
+      <pattern>%-5level [%thread] %date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} 
%F:%L - %msg%n</pattern>
     </encoder>
   </appender>
 
@@ -79,7 +78,7 @@ appender reference in the root level section below.
       <level>INFO</level>
     </filter>
     <encoder>
-      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
+      <pattern>%-5level [%thread] %date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} 
%F:%L - %msg%n</pattern>
     </encoder>
   </appender-->
 
diff --git a/test/conf/logback-simulator.xml b/test/conf/logback-simulator.xml
index fe823383ee..87d2ae327b 100644
--- a/test/conf/logback-simulator.xml
+++ b/test/conf/logback-simulator.xml
@@ -23,7 +23,7 @@
   <define name="instance_id" 
class="org.apache.cassandra.distributed.impl.InstanceIDDefiner"/>
 
   <!-- Shutdown hook ensures that async appender flushes -->
-  <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
+  <shutdownHook class="ch.qos.logback.core.hook.DefaultShutdownHook"/>
 
   <appender name="HISTORYLOG" class="ch.qos.logback.core.FileAppender">
     
<file>./build/test/logs/simulator/${run_start}-${run_seed}/history.log</file>
@@ -41,14 +41,14 @@
   <appender name="INSTANCEFILE" class="ch.qos.logback.core.FileAppender">
     
<file>./build/test/logs/simulator/${run_start}-${run_seed}/cluster-${cluster_id}/${instance_id}/system.log</file>
     <encoder>
-      <pattern>%-5level [%thread] ${instance_id} %replace(CS:%X{command_store} 
){'CS\:\s+', ''}%replace(OP:%X{async_op} ){'OP\:\s+', ''}%date{ISO8601} 
%msg%n</pattern>
+      <pattern>%-5level [%thread] ${instance_id} %replace(CS:%X{command_store} 
){'CS\:\s+', ''}%replace(OP:%X{async_op} ){'OP\:\s+', 
''}%date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %msg%n</pattern>
     </encoder>
     <immediateFlush>true</immediateFlush>
   </appender>
 
   <appender name="STDOUT" target="System.out" 
class="ch.qos.logback.core.ConsoleAppender">
     <encoder>
-      <pattern>%-5level [%thread] ${instance_id} %replace(CS:%X{command_store} 
){'CS\:\s+', ''}%replace(OP:%X{async_op} ){'OP\:\s+', ''}%date{ISO8601} %F:%L - 
%msg%n</pattern>
+      <pattern>%-5level [%thread] ${instance_id} %replace(CS:%X{command_store} 
){'CS\:\s+', ''}%replace(OP:%X{async_op} ){'OP\:\s+', 
''}%date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} %F:%L - %msg%n</pattern>
     </encoder>
     <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
       <level>WARN</level>
diff --git a/test/conf/logback-test.xml b/test/conf/logback-test.xml
index 3e3349fd82..757806e35f 100644
--- a/test/conf/logback-test.xml
+++ b/test/conf/logback-test.xml
@@ -19,7 +19,7 @@
 
 <configuration debug="false" scan="true" scanPeriod="60 seconds">
   <!-- Shutdown hook ensures that async appender flushes -->
-  <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
+  <shutdownHook class="ch.qos.logback.core.hook.DefaultShutdownHook"/>
 
   <!-- Status listener is used to wrap stdout/stderr and tee to log file -->
   <statusListener class="org.apache.cassandra.LogbackStatusListener" />
@@ -38,14 +38,14 @@
     </triggeringPolicy>
 
     <encoder>
-      <pattern>%-5level [%thread] %date{ISO8601} %msg%n</pattern>
+      <pattern>%-5level [%thread] %date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} 
%msg%n</pattern>
     </encoder>
     <immediateFlush>false</immediateFlush>
   </appender>
 
   <appender name="STDOUT" target="System.out" 
class="org.apache.cassandra.ConsoleAppender">
     <encoder>
-      <pattern>%-5level [%thread] %date{ISO8601} %F:%L - %msg%n</pattern>
+      <pattern>%-5level [%thread] %date{"yyyy-MM-dd'T'HH:mm:ss,SSS", UTC} 
%F:%L - %msg%n</pattern>
     </encoder>
     <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
       <level>DEBUG</level>
diff --git 
a/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
 
b/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
index 24afbb7e80..72bbc53b76 100644
--- 
a/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
+++ 
b/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java
@@ -31,18 +31,8 @@ import java.util.TimeZone;
 import java.util.concurrent.ThreadLocalRandom;
 
 import org.apache.commons.lang3.time.DateUtils;
-
 import org.junit.Test;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import ch.qos.logback.classic.LoggerContext;
-import ch.qos.logback.classic.joran.ReconfigureOnChangeTask;
-import ch.qos.logback.classic.spi.TurboFilterList;
-import ch.qos.logback.classic.turbo.ReconfigureOnChangeFilter;
-import ch.qos.logback.classic.turbo.TurboFilter;
-import org.apache.cassandra.schema.SchemaConstants;
 import org.apache.cassandra.cql3.CQLTester;
 import org.apache.cassandra.cql3.QueryProcessor;
 import org.apache.cassandra.cql3.UntypedResultSet;
@@ -51,13 +41,13 @@ import org.apache.cassandra.db.marshal.AbstractType;
 import org.apache.cassandra.db.marshal.TypeParser;
 import org.apache.cassandra.exceptions.FunctionExecutionException;
 import org.apache.cassandra.exceptions.InvalidRequestException;
+import org.apache.cassandra.schema.SchemaConstants;
 import org.apache.cassandra.service.ClientState;
 import org.apache.cassandra.transport.Event.SchemaChange.Change;
 import org.apache.cassandra.transport.Event.SchemaChange.Target;
 import org.apache.cassandra.transport.ProtocolVersion;
 import org.apache.cassandra.transport.messages.ResultMessage;
 
-import static ch.qos.logback.core.CoreConstants.RECONFIGURE_ON_CHANGE_TASK;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -1893,91 +1883,48 @@ public class AggregationTest extends CQLTester
     {
         // see https://issues.apache.org/jira/browse/CASSANDRA-11033
 
-        // make logback's scan interval 1ms - boilerplate, but necessary for 
this test
-        configureLogbackScanPeriod(1L);
-        try
-        {
-
-            createTable("CREATE TABLE %s (" +
-                        "   year int PRIMARY KEY," +
-                        "   country text," +
-                        "   title text)");
-
-            String[] countries = Locale.getISOCountries();
-            ThreadLocalRandom rand = ThreadLocalRandom.current();
-            for (int i = 0; i < 10000; i++)
-            {
-                execute("INSERT INTO %s (year, country, title) VALUES 
(1980,?,?)",
-                        countries[rand.nextInt(countries.length)],
-                        "title-" + i);
-            }
-
-            String albumCountByCountry = createFunction(KEYSPACE,
-                                                        
"map<text,bigint>,text,text",
-                                                        "CREATE FUNCTION IF 
NOT EXISTS %s(state map<text,bigint>,country text, album_title text)\n" +
-                                                        " RETURNS NULL ON NULL 
INPUT\n" +
-                                                        " RETURNS 
map<text,bigint>\n" +
-                                                        " LANGUAGE java\n" +
-                                                        " AS $$\n" +
-                                                        "   
if(state.containsKey(country)) {\n" +
-                                                        "       Long newCount 
= (Long)state.get(country) + 1;\n" +
-                                                        "       
state.put(country, newCount);\n" +
-                                                        "   } else {\n" +
-                                                        "       
state.put(country, 1L);\n" +
-                                                        "   }\n" +
-                                                        "   return state;\n" +
-                                                        " $$;");
-
-            String releasesByCountry = createAggregate(KEYSPACE,
-                                                       "text, text",
-                                                       " CREATE AGGREGATE IF 
NOT EXISTS %s(text, text)\n" +
-                                                       " SFUNC " + 
shortFunctionName(albumCountByCountry) + '\n' +
-                                                       " STYPE 
map<text,bigint>\n" +
-                                                       " INITCOND { };");
-
-            long tEnd = System.currentTimeMillis() + 150;
-            while (System.currentTimeMillis() < tEnd)
-            {
-                execute("SELECT " + releasesByCountry + "(country,title) FROM 
%s WHERE year=1980");
-            }
-        }
-        finally
-        {
-            configureLogbackScanPeriod(60000L);
-        }
-    }
+        createTable("CREATE TABLE %s (" +
+                    "   year int PRIMARY KEY," +
+                    "   country text," +
+                    "   title text)");
 
-    private static void configureLogbackScanPeriod(long millis)
-    {
-        Logger l = LoggerFactory.getLogger(AggregationTest.class);
-        ch.qos.logback.classic.Logger logbackLogger = 
(ch.qos.logback.classic.Logger) l;
-        LoggerContext ctx = logbackLogger.getLoggerContext();
-        TurboFilterList turboFilterList = ctx.getTurboFilterList();
-        boolean done = false;
-        for (TurboFilter turboFilter : turboFilterList)
+        String[] countries = Locale.getISOCountries();
+        ThreadLocalRandom rand = ThreadLocalRandom.current();
+        for (int i = 0; i < 10000; i++)
         {
-            if (turboFilter instanceof ReconfigureOnChangeFilter)
-            {
-                ReconfigureOnChangeFilter reconfigureFilter = 
(ReconfigureOnChangeFilter) turboFilter;
-                reconfigureFilter.setContext(ctx);
-                reconfigureFilter.setRefreshPeriod(millis);
-                reconfigureFilter.stop();
-                reconfigureFilter.start(); // start() sets the next check 
timestammp
-                done = true;
-                break;
-            }
+            execute("INSERT INTO %s (year, country, title) VALUES (1980,?,?)",
+                    countries[rand.nextInt(countries.length)],
+                    "title-" + i);
         }
 
-        ReconfigureOnChangeTask roct = (ReconfigureOnChangeTask) 
ctx.getObject(RECONFIGURE_ON_CHANGE_TASK);
-        if (roct != null)
+        String albumCountByCountry = createFunction(KEYSPACE,
+                                                    
"map<text,bigint>,text,text",
+                                                    "CREATE FUNCTION IF NOT 
EXISTS %s(state map<text,bigint>,country text, album_title text)\n" +
+                                                    " RETURNS NULL ON NULL 
INPUT\n" +
+                                                    " RETURNS 
map<text,bigint>\n" +
+                                                    " LANGUAGE java\n" +
+                                                    " AS $$\n" +
+                                                    "   
if(state.containsKey(country)) {\n" +
+                                                    "       Long newCount = 
(Long)state.get(country) + 1;\n" +
+                                                    "       state.put(country, 
newCount);\n" +
+                                                    "   } else {\n" +
+                                                    "       state.put(country, 
1L);\n" +
+                                                    "   }\n" +
+                                                    "   return state;\n" +
+                                                    " $$;");
+
+        String releasesByCountry = createAggregate(KEYSPACE,
+                                                   "text, text",
+                                                   " CREATE AGGREGATE IF NOT 
EXISTS %s(text, text)\n" +
+                                                   " SFUNC " + 
shortFunctionName(albumCountByCountry) + '\n' +
+                                                   " STYPE map<text,bigint>\n" 
+
+                                                   " INITCOND { };");
+
+        long tEnd = System.currentTimeMillis() + 150;
+        while (System.currentTimeMillis() < tEnd)
         {
-            // New functionality in logback - they replaced 
ReconfigureOnChangeFilter (which runs in the logging code)
-            // with an async ReconfigureOnChangeTask - i.e. in a thread that 
does not become sandboxed.
-            // Let the test run anyway, just we cannot reconfigure it (and it 
is pointless to reconfigure).
-            return;
+            execute("SELECT " + releasesByCountry + "(country,title) FROM %s 
WHERE year=1980");
         }
-
-        assertTrue("ReconfigureOnChangeFilter not in logback's turbo-filter 
list - do that by adding scan=\"true\" to logback-test.xml's configuration 
element", done);
     }
 
     @Test


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


Reply via email to