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

jlewandowski pushed a commit to branch cep-15-accord
in repository https://gitbox.apache.org/repos/asf/cassandra.git


The following commit(s) were added to refs/heads/cep-15-accord by this push:
     new a7cd114435 CEP-15: Add Accord configuration stub
a7cd114435 is described below

commit a7cd114435704b988c81f47ef53d0bfd6441f38b
Author: Jacek Lewandowski <lewandowski.ja...@gmail.com>
AuthorDate: Mon Oct 9 15:05:57 2023 +0200

    CEP-15: Add Accord configuration stub
    
    Patch by Jacek Lewandowski; reviewed by David Capwell for CASSANDRA-18221
---
 CHANGES.txt                                        |  1 +
 conf/cassandra.yaml                                | 16 +++++++--
 modules/accord                                     |  2 +-
 .../org/apache/cassandra/config/AccordSpec.java    | 30 ++++++++++++++++
 src/java/org/apache/cassandra/config/Config.java   |  8 ++---
 .../cassandra/config/DatabaseDescriptor.java       | 42 +++++++++++-----------
 .../org/apache/cassandra/config/DurationSpec.java  |  6 ++++
 .../cql3/statements/TransactionStatement.java      |  2 +-
 .../service/accord/AccordConfiguration.java        | 40 +++++++++++++++++++++
 .../cassandra/service/accord/AccordService.java    | 12 ++++---
 test/conf/cassandra-mtls.yaml                      |  3 +-
 test/conf/cassandra-murmur.yaml                    |  3 +-
 test/conf/cassandra-old.yaml                       |  3 +-
 test/conf/cassandra-pem-jks-sslcontextfactory.yaml |  3 +-
 ...pem-sslcontextfactory-invalidconfiguration.yaml |  3 +-
 test/conf/cassandra-pem-sslcontextfactory.yaml     |  3 +-
 test/conf/cassandra-seeds.yaml                     |  3 +-
 ...dra-sslcontextfactory-invalidconfiguration.yaml |  3 +-
 test/conf/cassandra-sslcontextfactory.yaml         |  3 +-
 test/conf/cassandra.yaml                           |  8 +++--
 .../cassandra/distributed/impl/InstanceConfig.java | 16 ++++++---
 .../test/accord/AccordBootstrapTest.java           |  2 +-
 .../test/accord/AccordFeatureFlagTest.java         | 11 +++---
 .../config/DatabaseDescriptorRefTest.java          | 25 ++++++-------
 .../config/YamlConfigurationLoaderTest.java        |  6 ++--
 25 files changed, 181 insertions(+), 73 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index 69eb1f833b..dc7de36c99 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 accord
+ * Add Accord configuration stub (CASSANDRA-18221)
  * Improve transaction statement validation (CASSANDRA-18302)
  * Add support for prepared statements for accord transactions 
(CASSANDRA-18299)
  * Fix statement validation against partition range queries (CASSANDRA-18240)
diff --git a/conf/cassandra.yaml b/conf/cassandra.yaml
index 2bd927ecf4..e24672d04c 100644
--- a/conf/cassandra.yaml
+++ b/conf/cassandra.yaml
@@ -1818,9 +1818,6 @@ drop_compact_storage_enabled: false
 # Whether or not USE <keyspace> is allowed. This is enabled by default to 
avoid failure on upgrade.
 #use_statements_enabled: true
 
-# Enables the execution of Accord (multi-key) transactions on this node.
-accord_transactions_enabled: false
-
 # When the client triggers a protocol exception or unknown issue (Cassandra 
bug) we increment
 # a client metric showing this; this logic will exclude specific subnets from 
updating these
 # metrics
@@ -2113,3 +2110,16 @@ accord_transactions_enabled: false
 #   a stable cluster. If a node from a previous version was started by 
accident we won't any longer toggle behaviors as when UPGRADING.
 #
 storage_compatibility_mode: NONE
+
+#accord:
+#  # Enables the execution of Accord (multi-key) transactions on this node.
+#  enabled: false
+#
+#  # Journal directory for Accord
+#  journal_directory:
+#
+#  # The number of Accord shards on this node; -1 means use the number of cores
+#  shard_count: -1
+#
+#  # Progress log scheduling delay
+#  progress_log_schedule_delay: 1s
diff --git a/modules/accord b/modules/accord
index 0419858bd1..5ffe3d504b 160000
--- a/modules/accord
+++ b/modules/accord
@@ -1 +1 @@
-Subproject commit 0419858bd1f6761f08fd1369477f7c142f5bbb4f
+Subproject commit 5ffe3d504bb5aa1ff1c2b96d817791e40f7ced0f
diff --git a/src/java/org/apache/cassandra/config/AccordSpec.java 
b/src/java/org/apache/cassandra/config/AccordSpec.java
new file mode 100644
index 0000000000..b025d561b6
--- /dev/null
+++ b/src/java/org/apache/cassandra/config/AccordSpec.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cassandra.config;
+
+public class AccordSpec
+{
+    public volatile boolean enabled = false;
+
+    public volatile String journal_directory;
+
+    public volatile OptionaldPositiveInt shard_count = 
OptionaldPositiveInt.UNDEFINED;
+
+    public volatile DurationSpec.IntSecondsBound progress_log_schedule_delay = 
new DurationSpec.IntSecondsBound(1);
+}
diff --git a/src/java/org/apache/cassandra/config/Config.java 
b/src/java/org/apache/cassandra/config/Config.java
index eefe0dd43f..fe290d89eb 100644
--- a/src/java/org/apache/cassandra/config/Config.java
+++ b/src/java/org/apache/cassandra/config/Config.java
@@ -390,9 +390,6 @@ public class Config
     public DataStorageSpec.IntMebibytesBound commitlog_total_space;
     public CommitLogSync commitlog_sync;
 
-    // Accord Journal
-    public String accord_journal_directory;
-
     @Replaces(oldName = "commitlog_sync_group_window_in_ms", converter = 
Converters.MILLIS_DURATION_DOUBLE, deprecated = true)
     public DurationSpec.IntMillisecondsBound commitlog_sync_group_window = new 
DurationSpec.IntMillisecondsBound("0ms");
     @Replaces(oldName = "commitlog_sync_period_in_ms", converter = 
Converters.MILLIS_DURATION_INT, deprecated = true)
@@ -606,9 +603,6 @@ public class Config
 
     public volatile boolean use_statements_enabled = true;
 
-    public boolean accord_transactions_enabled = false;
-    public OptionaldPositiveInt accord_shard_count = 
OptionaldPositiveInt.UNDEFINED;
-
     /**
      * Optionally disable asynchronous UDF execution.
      * Disabling asynchronous UDF execution also implicitly disables the 
security-manager!
@@ -1129,6 +1123,8 @@ public class Config
      */
     public ParameterizedClass default_compaction = null;
 
+    public final AccordSpec accord = new AccordSpec();
+
     public static Supplier<Config> getOverrideLoadConfig()
     {
         return overrideLoadConfig;
diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java 
b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
index 38495e0a10..cf0a0e5573 100644
--- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
+++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
@@ -640,9 +640,9 @@ public class DatabaseDescriptor
             conf.commitlog_directory = storagedirFor("commitlog");
         }
 
-        if (conf.accord_journal_directory == null)
+        if (conf.accord.journal_directory == null)
         {
-            conf.accord_journal_directory = storagedirFor("accord_journal");
+            conf.accord.journal_directory = storagedirFor("accord_journal");
         }
 
         if (conf.hints_directory == null)
@@ -720,8 +720,8 @@ public class DatabaseDescriptor
                 throw new 
ConfigurationException("local_system_data_file_directory must not be the same 
as any data_file_directories", false);
             if (datadir.equals(conf.commitlog_directory))
                 throw new ConfigurationException("commitlog_directory must not 
be the same as any data_file_directories", false);
-            if (datadir.equals(conf.accord_journal_directory))
-                throw new ConfigurationException("accord_journal_directory 
must not be the same as any data_file_directories", false);
+            if (datadir.equals(conf.accord.journal_directory))
+                throw new ConfigurationException("accord.journal_directory 
must not be the same as any data_file_directories", false);
             if (datadir.equals(conf.hints_directory))
                 throw new ConfigurationException("hints_directory must not be 
the same as any data_file_directories", false);
             if (datadir.equals(conf.saved_caches_directory))
@@ -737,8 +737,8 @@ public class DatabaseDescriptor
         {
             if 
(conf.local_system_data_file_directory.equals(conf.commitlog_directory))
                 throw new 
ConfigurationException("local_system_data_file_directory must not be the same 
as the commitlog_directory", false);
-            if 
(conf.local_system_data_file_directory.equals(conf.accord_journal_directory))
-                throw new 
ConfigurationException("local_system_data_file_directory must not be the same 
as the accord_journal_directory", false);
+            if 
(conf.local_system_data_file_directory.equals(conf.accord.journal_directory))
+                throw new 
ConfigurationException("local_system_data_file_directory must not be the same 
as the accord.journal_directory", false);
             if 
(conf.local_system_data_file_directory.equals(conf.saved_caches_directory))
                 throw new 
ConfigurationException("local_system_data_file_directory must not be the same 
as the saved_caches_directory", false);
             if 
(conf.local_system_data_file_directory.equals(conf.hints_directory))
@@ -751,17 +751,17 @@ public class DatabaseDescriptor
                             FBUtilities.prettyPrintMemory(freeBytes));
         }
 
-        if (conf.commitlog_directory.equals(conf.accord_journal_directory))
-            throw new ConfigurationException("accord_journal_directory must 
not be the same as the commitlog_directory", false);
+        if (conf.commitlog_directory.equals(conf.accord.journal_directory))
+            throw new ConfigurationException("accord.journal_directory must 
not be the same as the commitlog_directory", false);
         if (conf.commitlog_directory.equals(conf.hints_directory))
             throw new ConfigurationException("hints_directory must not be the 
same as the commitlog_directory", false);
         if (conf.commitlog_directory.equals(conf.saved_caches_directory))
             throw new ConfigurationException("saved_caches_directory must not 
be the same as the commitlog_directory", false);
 
-        if (conf.accord_journal_directory.equals(conf.hints_directory))
-            throw new ConfigurationException("hints_directory must not be the 
same as the accord_journal_directory", false);
-        if (conf.accord_journal_directory.equals(conf.saved_caches_directory))
-            throw new ConfigurationException("saved_caches_directory must not 
be the same as the accord_journal_directory", false);
+        if (conf.accord.journal_directory.equals(conf.hints_directory))
+            throw new ConfigurationException("hints_directory must not be the 
same as the accord.journal_directory", false);
+        if (conf.accord.journal_directory.equals(conf.saved_caches_directory))
+            throw new ConfigurationException("saved_caches_directory must not 
be the same as the accord.journal_directory", false);
 
         if (conf.hints_directory.equals(conf.saved_caches_directory))
             throw new ConfigurationException("saved_caches_directory must not 
be the same as the hints_directory", false);
@@ -1023,7 +1023,7 @@ public class DatabaseDescriptor
                                                            
conf.progress_barrier_default_consistency_level, progressBarrierCLsArr));
         }
         
-        if (conf.legacy_paxos_strategy == Config.LegacyPaxosStrategy.accord && 
!conf.accord_transactions_enabled)
+        if (conf.legacy_paxos_strategy == Config.LegacyPaxosStrategy.accord && 
!conf.accord.enabled)
             throw new 
ConfigurationException(NO_ACCORD_PAXOS_STRATEGY_WITH_ACCORD_DISABLED_MESSAGE);
     }
 
@@ -1894,9 +1894,9 @@ public class DatabaseDescriptor
                 throw new ConfigurationException("commitlog_directory must be 
specified", false);
             FileUtils.createDirectory(conf.commitlog_directory);
 
-            if (conf.accord_journal_directory == null)
-                throw new ConfigurationException("accord_journal_directory 
must be specified", false);
-            FileUtils.createDirectory(conf.accord_journal_directory);
+            if (conf.accord.journal_directory == null)
+                throw new ConfigurationException("accord.journal_directory 
must be specified", false);
+            FileUtils.createDirectory(conf.accord.journal_directory);
 
             if (conf.hints_directory == null)
                 throw new ConfigurationException("hints_directory must be 
specified", false);
@@ -2649,12 +2649,12 @@ public class DatabaseDescriptor
 
     public static String getAccordJournalDirectory()
     {
-        return conf.accord_journal_directory;
+        return conf.accord.journal_directory;
     }
 
     public static void setAccordJournalDirectory(String path)
     {
-        conf.accord_journal_directory = path;
+        conf.accord.journal_directory = path;
     }
 
     public static Config.FlushCompression getFlushCompression()
@@ -4733,17 +4733,17 @@ public class DatabaseDescriptor
 
     public static boolean getAccordTransactionsEnabled()
     {
-        return conf.accord_transactions_enabled;
+        return conf.accord.enabled;
     }
 
     public static void setAccordTransactionsEnabled(boolean b)
     {
-        conf.accord_transactions_enabled = b;
+        conf.accord.enabled = b;
     }
 
     public static int getAccordShardCount()
     {
-        return 
conf.accord_shard_count.or(DatabaseDescriptor::getAvailableProcessors);
+        return 
conf.accord.shard_count.or(DatabaseDescriptor::getAvailableProcessors);
     }
 
     public static boolean getForceNewPreparedStatementBehaviour()
diff --git a/src/java/org/apache/cassandra/config/DurationSpec.java 
b/src/java/org/apache/cassandra/config/DurationSpec.java
index 2522d86124..2f218f70e0 100644
--- a/src/java/org/apache/cassandra/config/DurationSpec.java
+++ b/src/java/org/apache/cassandra/config/DurationSpec.java
@@ -17,6 +17,7 @@
  */
 package org.apache.cassandra.config;
 
+import java.time.Duration;
 import java.util.Arrays;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
@@ -135,6 +136,11 @@ public abstract class DurationSpec
         return unit;
     }
 
+    public Duration toDuration()
+    {
+        return Duration.of(quantity(), unit().toChronoUnit());
+    }
+
     /**
      * @param symbol the time unit symbol
      * @return the time unit associated to the specified symbol
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java
index e52150abe5..5f90be2f1a 100644
--- a/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java
@@ -98,7 +98,7 @@ public class TransactionStatement implements 
CQLStatement.CompositeCQLStatement,
     public static final String NO_TIMESTAMPS_IN_UPDATES_MESSAGE = "Updates 
within transactions may not specify custom timestamps; %s statement %s";
     public static final String EMPTY_TRANSACTION_MESSAGE = "Transaction 
contains no reads or writes";
     public static final String SELECT_REFS_NEED_COLUMN_MESSAGE = "SELECT 
references must specify a column.";
-    public static final String TRANSACTIONS_DISABLED_MESSAGE = "Accord 
transactions are disabled. (See accord_transactions_enabled in cassandra.yaml)";
+    public static final String TRANSACTIONS_DISABLED_MESSAGE = "Accord 
transactions are disabled. (See accord.enabled in cassandra.yaml)";
     public static final String ILLEGAL_RANGE_QUERY_MESSAGE = "Range queries 
are not allowed for reads within a transaction; %s %s";
 
     static class NamedSelect
diff --git 
a/src/java/org/apache/cassandra/service/accord/AccordConfiguration.java 
b/src/java/org/apache/cassandra/service/accord/AccordConfiguration.java
new file mode 100644
index 0000000000..a17a9fc844
--- /dev/null
+++ b/src/java/org/apache/cassandra/service/accord/AccordConfiguration.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.cassandra.service.accord;
+
+import java.time.Duration;
+
+import accord.config.LocalConfig;
+import org.apache.cassandra.config.Config;
+
+public class AccordConfiguration implements LocalConfig
+{
+    private final Config config;
+
+    public AccordConfiguration(Config config)
+    {
+        this.config = config;
+    }
+
+    @Override
+    public Duration getProgressLogScheduleDelay()
+    {
+        return config.accord.progress_log_schedule_delay.toDuration();
+    }
+}
diff --git a/src/java/org/apache/cassandra/service/accord/AccordService.java 
b/src/java/org/apache/cassandra/service/accord/AccordService.java
index 95ef73f0e7..2a4ed5a2a7 100644
--- a/src/java/org/apache/cassandra/service/accord/AccordService.java
+++ b/src/java/org/apache/cassandra/service/accord/AccordService.java
@@ -31,6 +31,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import accord.api.Result;
+import accord.config.LocalConfig;
 import accord.coordinate.Preempted;
 import accord.coordinate.Timeout;
 import accord.impl.AbstractConfigurationService;
@@ -105,6 +106,7 @@ public class AccordService implements IAccordService, 
Shutdownable
     private final AccordDataStore dataStore;
     private final AccordJournal journal;
     private final AccordVerbHandler<? extends Request> verbHandler;
+    private final LocalConfig configuration;
 
     private static final IAccordService NOOP_SERVICE = new IAccordService()
     {
@@ -117,13 +119,13 @@ public class AccordService implements IAccordService, 
Shutdownable
         @Override
         public TxnData coordinate(Txn txn, ConsistencyLevel consistencyLevel)
         {
-            throw new UnsupportedOperationException("No accord transaction 
should be executed when accord_transactions_enabled = false in cassandra.yaml");
+            throw new UnsupportedOperationException("No accord transaction 
should be executed when accord.enabled = false in cassandra.yaml");
         }
 
         @Override
         public long currentEpoch()
         {
-            throw new UnsupportedOperationException("Cannot return epoch when 
accord_transactions_enabled = false in cassandra.yaml");
+            throw new UnsupportedOperationException("Cannot return epoch when 
accord.enabled = false in cassandra.yaml");
         }
 
         @Override
@@ -132,7 +134,7 @@ public class AccordService implements IAccordService, 
Shutdownable
         @Override
         public TopologyManager topology()
         {
-            throw new UnsupportedOperationException("Cannot return topology 
when accord_transactions_enabled = false in cassandra.yaml");
+            throw new UnsupportedOperationException("Cannot return topology 
when accord.enabled = false in cassandra.yaml");
         }
 
         @Override
@@ -227,6 +229,7 @@ public class AccordService implements IAccordService, 
Shutdownable
         this.scheduler = new AccordScheduler();
         this.dataStore = new AccordDataStore();
         this.journal = new AccordJournal();
+        this.configuration = new 
AccordConfiguration(DatabaseDescriptor.getRawConfig());
         this.node = new Node(localId,
                              messageSink,
                              this::handleLocalMessage,
@@ -240,7 +243,8 @@ public class AccordService implements IAccordService, 
Shutdownable
                              scheduler,
                              SizeOfIntersectionSorter.SUPPLIER,
                              SimpleProgressLog::new,
-                             AccordCommandStores.factory(journal));
+                             AccordCommandStores.factory(journal),
+                             configuration);
         this.nodeShutdown = toShutdownable(node);
         this.verbHandler = new AccordVerbHandler<>(node, configService, 
journal);
     }
diff --git a/test/conf/cassandra-mtls.yaml b/test/conf/cassandra-mtls.yaml
index efa167c10f..daa014566a 100644
--- a/test/conf/cassandra-mtls.yaml
+++ b/test/conf/cassandra-mtls.yaml
@@ -24,7 +24,6 @@ memtable_allocation_type: offheap_objects
 commitlog_sync: batch
 commitlog_segment_size: 5MiB
 commitlog_directory: build/test/cassandra/commitlog
-accord_journal_directory: build/test/cassandra/accord_journal
 cdc_raw_directory: build/test/cassandra/cdc_raw
 cdc_enabled: false
 hints_directory: build/test/cassandra/hints
@@ -87,3 +86,5 @@ authenticator:
   class_name : org.apache.cassandra.auth.MutualTlsAuthenticator
   parameters :
     validator_class_name: org.apache.cassandra.auth.SpiffeCertificateValidator
+accord:
+  journal_directory: build/test/cassandra/accord_journal
diff --git a/test/conf/cassandra-murmur.yaml b/test/conf/cassandra-murmur.yaml
index 7d6af4e40b..fee5d8cf91 100644
--- a/test/conf/cassandra-murmur.yaml
+++ b/test/conf/cassandra-murmur.yaml
@@ -7,7 +7,6 @@ memtable_allocation_type: heap_buffers
 commitlog_sync: batch
 commitlog_segment_size: 5MiB
 commitlog_directory: build/test/cassandra/commitlog
-accord_journal_directory: build/test/cassandra/accord_journal
 cdc_raw_directory: build/test/cassandra/cdc_raw
 cdc_enabled: false
 hints_directory: build/test/cassandra/hints
@@ -42,3 +41,5 @@ user_defined_functions_enabled: true
 scripted_user_defined_functions_enabled: false
 sasi_indexes_enabled: true
 materialized_views_enabled: true
+accord:
+    journal_directory: build/test/cassandra/accord_journal
diff --git a/test/conf/cassandra-old.yaml b/test/conf/cassandra-old.yaml
index 99c7c0d1c7..3acc8eae98 100644
--- a/test/conf/cassandra-old.yaml
+++ b/test/conf/cassandra-old.yaml
@@ -8,7 +8,6 @@ memtable_allocation_type: offheap_objects
 commitlog_sync: batch
 commitlog_segment_size_in_mb: 5
 commitlog_directory: build/test/cassandra/commitlog
-accord_journal_directory: build/test/cassandra/accord_journal
 # commitlog_compression:
 # - class_name: LZ4Compressor
 cdc_raw_directory: build/test/cassandra/cdc_raw
@@ -56,3 +55,5 @@ internode_send_buff_size_in_bytes: 5
 internode_recv_buff_size_in_bytes: 5
 max_hint_window_in_ms: 10800000
 cache_load_timeout_seconds: 35
+accord:
+    journal_directory: build/test/cassandra/accord_journal
diff --git a/test/conf/cassandra-pem-jks-sslcontextfactory.yaml 
b/test/conf/cassandra-pem-jks-sslcontextfactory.yaml
index bcba6fd698..dd16c30ca6 100644
--- a/test/conf/cassandra-pem-jks-sslcontextfactory.yaml
+++ b/test/conf/cassandra-pem-jks-sslcontextfactory.yaml
@@ -26,7 +26,6 @@ memtable_allocation_type: offheap_objects
 commitlog_sync: batch
 commitlog_segment_size: 5MiB
 commitlog_directory: build/test/cassandra/commitlog
-accord_journal_directory: build/test/cassandra/accord_journal
 # commitlog_compression:
 # - class_name: LZ4Compressor
 cdc_raw_directory: build/test/cassandra/cdc_raw
@@ -149,3 +148,5 @@ stream_throughput_outbound: 24MiB/s
 sasi_indexes_enabled: true
 materialized_views_enabled: true
 file_cache_enabled: true
+accord:
+  journal_directory: build/test/cassandra/accord_journal
diff --git 
a/test/conf/cassandra-pem-sslcontextfactory-invalidconfiguration.yaml 
b/test/conf/cassandra-pem-sslcontextfactory-invalidconfiguration.yaml
index d06c99a6ac..751eb64a54 100644
--- a/test/conf/cassandra-pem-sslcontextfactory-invalidconfiguration.yaml
+++ b/test/conf/cassandra-pem-sslcontextfactory-invalidconfiguration.yaml
@@ -26,7 +26,6 @@ memtable_allocation_type: offheap_objects
 commitlog_sync: batch
 commitlog_segment_size: 5MiB
 commitlog_directory: build/test/cassandra/commitlog
-accord_journal_directory: build/test/cassandra/accord_journal
 # commitlog_compression:
 # - class_name: LZ4Compressor
 cdc_raw_directory: build/test/cassandra/cdc_raw
@@ -146,3 +145,5 @@ stream_throughput_outbound: 24MiB/s
 sasi_indexes_enabled: true
 materialized_views_enabled: true
 file_cache_enabled: true
+accord:
+  journal_directory: build/test/cassandra/accord_journal
diff --git a/test/conf/cassandra-pem-sslcontextfactory.yaml 
b/test/conf/cassandra-pem-sslcontextfactory.yaml
index 2d64708a3b..2dc0cfba2c 100644
--- a/test/conf/cassandra-pem-sslcontextfactory.yaml
+++ b/test/conf/cassandra-pem-sslcontextfactory.yaml
@@ -26,7 +26,6 @@ memtable_allocation_type: offheap_objects
 commitlog_sync: batch
 commitlog_segment_size: 5MiB
 commitlog_directory: build/test/cassandra/commitlog
-accord_journal_directory: build/test/cassandra/accord_journal
 # commitlog_compression:
 # - class_name: LZ4Compressor
 cdc_raw_directory: build/test/cassandra/cdc_raw
@@ -150,3 +149,5 @@ stream_throughput_outbound: 24MiB/s
 sasi_indexes_enabled: true
 materialized_views_enabled: true
 file_cache_enabled: true
+accord:
+  journal_directory: build/test/cassandra/accord_journal
diff --git a/test/conf/cassandra-seeds.yaml b/test/conf/cassandra-seeds.yaml
index 2403fa844b..9cbc873bb3 100644
--- a/test/conf/cassandra-seeds.yaml
+++ b/test/conf/cassandra-seeds.yaml
@@ -8,7 +8,6 @@ memtable_allocation_type: offheap_objects
 commitlog_sync: batch
 commitlog_segment_size: 5MiB
 commitlog_directory: build/test/cassandra/commitlog
-accord_journal_directory: build/test/cassandra/accord_journal
 cdc_raw_directory: build/test/cassandra/cdc_raw
 cdc_enabled: false
 hints_directory: build/test/cassandra/hints
@@ -41,3 +40,5 @@ row_cache_class_name: org.apache.cassandra.cache.OHCProvider
 row_cache_size: 16MiB
 user_defined_functions_enabled: true
 scripted_user_defined_functions_enabled: false
+accord:
+    journal_directory: build/test/cassandra/accord_journal
diff --git a/test/conf/cassandra-sslcontextfactory-invalidconfiguration.yaml 
b/test/conf/cassandra-sslcontextfactory-invalidconfiguration.yaml
index 4edea57690..bf8f912fd8 100644
--- a/test/conf/cassandra-sslcontextfactory-invalidconfiguration.yaml
+++ b/test/conf/cassandra-sslcontextfactory-invalidconfiguration.yaml
@@ -26,7 +26,6 @@ memtable_allocation_type: offheap_objects
 commitlog_sync: batch
 commitlog_segment_size: 5MiB
 commitlog_directory: build/test/cassandra/commitlog
-accord_journal_directory: build/test/cassandra/accord_journal
 # commitlog_compression:
 # - class_name: LZ4Compressor
 cdc_raw_directory: build/test/cassandra/cdc_raw
@@ -80,3 +79,5 @@ stream_throughput_outbound: 23841858MiB/s
 sasi_indexes_enabled: true
 materialized_views_enabled: true
 file_cache_enabled: true
+accord:
+    journal_directory: build/test/cassandra/accord_journal
diff --git a/test/conf/cassandra-sslcontextfactory.yaml 
b/test/conf/cassandra-sslcontextfactory.yaml
index 76acf22e85..2e8aaaf18d 100644
--- a/test/conf/cassandra-sslcontextfactory.yaml
+++ b/test/conf/cassandra-sslcontextfactory.yaml
@@ -26,7 +26,6 @@ memtable_allocation_type: offheap_objects
 commitlog_sync: batch
 commitlog_segment_size: 5MiB
 commitlog_directory: build/test/cassandra/commitlog
-accord_journal_directory: build/test/cassandra/accord_journal
 # commitlog_compression:
 # - class_name: LZ4Compressor
 cdc_raw_directory: build/test/cassandra/cdc_raw
@@ -83,3 +82,5 @@ stream_throughput_outbound: 23841858MiB/s
 sasi_indexes_enabled: true
 materialized_views_enabled: true
 file_cache_enabled: true
+accord:
+    journal_directory: build/test/cassandra/accord_journal
diff --git a/test/conf/cassandra.yaml b/test/conf/cassandra.yaml
index 830e38b612..80e0166066 100644
--- a/test/conf/cassandra.yaml
+++ b/test/conf/cassandra.yaml
@@ -8,7 +8,6 @@ memtable_allocation_type: offheap_objects
 commitlog_sync: batch
 commitlog_segment_size: 5MiB
 commitlog_directory: build/test/cassandra/commitlog
-accord_journal_directory: build/test/cassandra/accord_journal
 # commitlog_compression:
 # - class_name: LZ4Compressor
 cdc_raw_directory: build/test/cassandra/cdc_raw
@@ -55,7 +54,6 @@ file_cache_enabled: true
 full_query_logging_options:
   allow_nodetool_archive_command: true
 auto_hints_cleanup_enabled: true
-accord_transactions_enabled: true
 
 heap_dump_path: build/test
 dump_heap_on_uncaught_exception: false
@@ -114,3 +112,9 @@ memtable:
             class_name: TrieMemtable
 # Note: keep the memtable configuration at the end of the file, so that the 
default mapping can be changed without
 # duplicating the whole section above.
+
+accord:
+    enabled: true
+    journal_directory: build/test/cassandra/accord_journal
+    shard_count: 4
+    progress_log_schedule_delay: 1s
diff --git 
a/test/distributed/org/apache/cassandra/distributed/impl/InstanceConfig.java 
b/test/distributed/org/apache/cassandra/distributed/impl/InstanceConfig.java
index 6d1d6c96c1..317b14b44f 100644
--- a/test/distributed/org/apache/cassandra/distributed/impl/InstanceConfig.java
+++ b/test/distributed/org/apache/cassandra/distributed/impl/InstanceConfig.java
@@ -30,6 +30,8 @@ import java.util.UUID;
 import java.util.function.Function;
 
 import com.vdurmont.semver4j.Semver;
+import org.apache.cassandra.config.AccordSpec;
+import org.apache.cassandra.config.OptionaldPositiveInt;
 import org.apache.cassandra.distributed.api.Feature;
 import org.apache.cassandra.distributed.api.IInstanceConfig;
 import org.apache.cassandra.distributed.shared.NetworkTopology;
@@ -70,7 +72,7 @@ public class InstanceConfig implements IInstanceConfig
                            String commitlog_directory,
                            String hints_directory,
                            String cdc_raw_directory,
-                           String accord_journal_directory,
+                           AccordSpec accord,
                            Collection<String> initial_token,
                            int storage_port,
                            int native_transport_port,
@@ -91,7 +93,10 @@ public class InstanceConfig implements IInstanceConfig
                 .set("commitlog_directory", commitlog_directory)
                 .set("hints_directory", hints_directory)
                 .set("cdc_raw_directory", cdc_raw_directory)
-                .set("accord_journal_directory", accord_journal_directory)
+                .set("accord.enabled", accord.enabled)
+                .set("accord.journal_directory", accord.journal_directory)
+                .set("accord.shard_count", accord.shard_count.toString())
+                .set("accord.progress_log_schedule_delay", 
accord.progress_log_schedule_delay.toString())
                 .set("partitioner", 
"org.apache.cassandra.dht.Murmur3Partitioner")
                 .set("start_native_transport", true)
                 .set("concurrent_writes", 2)
@@ -110,7 +115,6 @@ public class InstanceConfig implements IInstanceConfig
                 // required settings for dtest functionality
                 .set("diagnostic_events_enabled", true)
                 .set("auto_bootstrap", false)
-                .set("accord_transactions_enabled", true)
                 // capacities that are based on `totalMemory` that should be 
fixed size
                 .set("index_summary_capacity", "50MiB")
                 .set("counter_cache_size", "50MiB")
@@ -263,6 +267,10 @@ public class InstanceConfig implements IInstanceConfig
                                           Collection<String> tokens,
                                           int datadirCount)
     {
+        AccordSpec accordSpec = new AccordSpec();
+        accordSpec.enabled = true;
+        accordSpec.journal_directory = 
String.format("%s/node%d/accord_journal", root, nodeNum);
+        accordSpec.shard_count = new OptionaldPositiveInt(4);
         return new InstanceConfig(nodeNum,
                                   networkTopology,
                                   provisionStrategy.ipAddress(nodeNum),
@@ -276,7 +284,7 @@ public class InstanceConfig implements IInstanceConfig
                                   String.format("%s/node%d/commitlog", root, 
nodeNum),
                                   String.format("%s/node%d/hints", root, 
nodeNum),
                                   String.format("%s/node%d/cdc", root, 
nodeNum),
-                                  String.format("%s/node%d/accord_journal", 
root, nodeNum),
+                                  accordSpec,
                                   tokens,
                                   provisionStrategy.storagePort(nodeNum),
                                   
provisionStrategy.nativeTransportPort(nodeNum),
diff --git 
a/test/distributed/org/apache/cassandra/distributed/test/accord/AccordBootstrapTest.java
 
b/test/distributed/org/apache/cassandra/distributed/test/accord/AccordBootstrapTest.java
index cd202fc729..377a919940 100644
--- 
a/test/distributed/org/apache/cassandra/distributed/test/accord/AccordBootstrapTest.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/test/accord/AccordBootstrapTest.java
@@ -174,7 +174,7 @@ public class AccordBootstrapTest extends TestBaseImpl
                                       .withoutVNodes()
                                       
.withTokenSupplier(TokenSupplier.evenlyDistributedTokens(expandedNodeCount))
                                       
.withNodeIdTopology(NetworkTopology.singleDcNetworkTopology(expandedNodeCount, 
"dc0", "rack0"))
-                                      .withConfig(config -> 
config.set("accord_shard_count", 2).with(NETWORK, GOSSIP))
+                                      .withConfig(config -> 
config.set("accord.shard_count", 2).with(NETWORK, GOSSIP))
                                       .start())
         {
             long initialMax = maxEpoch(cluster);
diff --git 
a/test/distributed/org/apache/cassandra/distributed/test/accord/AccordFeatureFlagTest.java
 
b/test/distributed/org/apache/cassandra/distributed/test/accord/AccordFeatureFlagTest.java
index e4bf7ccb7c..06b44805b3 100644
--- 
a/test/distributed/org/apache/cassandra/distributed/test/accord/AccordFeatureFlagTest.java
+++ 
b/test/distributed/org/apache/cassandra/distributed/test/accord/AccordFeatureFlagTest.java
@@ -25,8 +25,6 @@ import java.util.Optional;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import org.apache.cassandra.schema.Schema;
-import org.assertj.core.api.Assertions;
 import org.junit.Test;
 
 import org.apache.cassandra.db.virtual.AccordVirtualTables;
@@ -39,14 +37,15 @@ import 
org.apache.cassandra.distributed.api.IIsolatedExecutor;
 import org.apache.cassandra.distributed.test.TestBaseImpl;
 import org.apache.cassandra.exceptions.ConfigurationException;
 import org.apache.cassandra.exceptions.InvalidRequestException;
+import org.apache.cassandra.schema.Schema;
 import org.apache.cassandra.service.accord.AccordService;
 import org.apache.cassandra.utils.AssertionUtils;
-
-import static org.junit.Assert.assertEquals;
+import org.assertj.core.api.Assertions;
 
 import static 
org.apache.cassandra.config.DatabaseDescriptor.NO_ACCORD_PAXOS_STRATEGY_WITH_ACCORD_DISABLED_MESSAGE;
 import static 
org.apache.cassandra.cql3.statements.TransactionStatement.TRANSACTIONS_DISABLED_MESSAGE;
 import static org.apache.cassandra.schema.SchemaConstants.ACCORD_KEYSPACE_NAME;
+import static org.junit.Assert.assertEquals;
 
 public class AccordFeatureFlagTest extends TestBaseImpl
 {
@@ -55,7 +54,7 @@ public class AccordFeatureFlagTest extends TestBaseImpl
     {
         try (Cluster cluster = init(Cluster.build(1)
                                            .withoutVNodes()
-                                           .withConfig(c -> 
c.with(Feature.NETWORK).set("accord_transactions_enabled", "false"))
+                                           .withConfig(c -> 
c.with(Feature.NETWORK).set("accord.enabled", "false"))
                                            .start()))
         {
             cluster.schemaChange("CREATE TABLE " + KEYSPACE + ".tbl (k int, c 
int, v int, primary key (k, c))");
@@ -91,7 +90,7 @@ public class AccordFeatureFlagTest extends TestBaseImpl
         try (Cluster cluster = Cluster.build(1)
                                       .withoutVNodes()
                                       .withConfig(c -> c.with(Feature.NETWORK)
-                                                        
.set("accord_transactions_enabled", "false")
+                                                        .set("accord.enabled", 
"false")
                                                         
.set("legacy_paxos_strategy", "accord")).createWithoutStarting())
         {
 
diff --git 
a/test/unit/org/apache/cassandra/config/DatabaseDescriptorRefTest.java 
b/test/unit/org/apache/cassandra/config/DatabaseDescriptorRefTest.java
index fa28ea4f4c..cee7552146 100644
--- a/test/unit/org/apache/cassandra/config/DatabaseDescriptorRefTest.java
+++ b/test/unit/org/apache/cassandra/config/DatabaseDescriptorRefTest.java
@@ -72,11 +72,12 @@ public class DatabaseDescriptorRefTest
     "org.apache.cassandra.auth.Cacheable",
     "org.apache.cassandra.auth.IAuthenticator",
     "org.apache.cassandra.auth.IAuthorizer",
-    "org.apache.cassandra.auth.IInternodeAuthenticator",
     "org.apache.cassandra.auth.ICIDRAuthorizer",
     "org.apache.cassandra.auth.ICIDRAuthorizer$CIDRAuthorizerMode",
+    "org.apache.cassandra.auth.IInternodeAuthenticator",
     "org.apache.cassandra.auth.INetworkAuthorizer",
     "org.apache.cassandra.auth.IRoleManager",
+    "org.apache.cassandra.config.AccordSpec",
     "org.apache.cassandra.config.CassandraRelevantProperties",
     
"org.apache.cassandra.config.CassandraRelevantProperties$PropertyConverter",
     "org.apache.cassandra.config.Config",
@@ -123,8 +124,8 @@ public class DatabaseDescriptorRefTest
     "org.apache.cassandra.config.DurationSpec$IntMillisecondsBound",
     "org.apache.cassandra.config.DurationSpec$IntMinutesBound",
     "org.apache.cassandra.config.DurationSpec$IntSecondsBound",
-    "org.apache.cassandra.config.DurationSpec$LongMillisecondsBound",
     "org.apache.cassandra.config.DurationSpec$LongMicrosecondsBound",
+    "org.apache.cassandra.config.DurationSpec$LongMillisecondsBound",
     "org.apache.cassandra.config.DurationSpec$LongNanosecondsBound",
     "org.apache.cassandra.config.DurationSpec$LongSecondsBound",
     "org.apache.cassandra.config.EncryptionOptions",
@@ -144,24 +145,24 @@ public class DatabaseDescriptorRefTest
     "org.apache.cassandra.config.ParameterizedClass",
     "org.apache.cassandra.config.RepairConfig",
     "org.apache.cassandra.config.RepairRetrySpec",
+    "org.apache.cassandra.config.ReplicaFilteringProtectionOptions",
     "org.apache.cassandra.config.RetrySpec",
     "org.apache.cassandra.config.RetrySpec$MaxAttempt",
     "org.apache.cassandra.config.RetrySpec$Type",
-    "org.apache.cassandra.config.ReplicaFilteringProtectionOptions",
     "org.apache.cassandra.config.StartupChecksOptions",
+    "org.apache.cassandra.config.StartupChecksOptions",
+    "org.apache.cassandra.config.StorageAttachedIndexOptions",
+    "org.apache.cassandra.config.SubnetGroups",
     "org.apache.cassandra.config.SubnetGroups",
     "org.apache.cassandra.config.TrackWarnings",
+    "org.apache.cassandra.config.TrackWarnings",
+    "org.apache.cassandra.config.TransparentDataEncryptionOptions",
     "org.apache.cassandra.config.TransparentDataEncryptionOptions",
     "org.apache.cassandra.config.YamlConfigurationLoader",
     "org.apache.cassandra.config.YamlConfigurationLoader$CustomConstructor",
+    "org.apache.cassandra.config.YamlConfigurationLoader$CustomConstructor",
     "org.apache.cassandra.config.YamlConfigurationLoader$PropertiesChecker",
     "org.apache.cassandra.config.YamlConfigurationLoader$PropertiesChecker$1",
-    "org.apache.cassandra.config.YamlConfigurationLoader$CustomConstructor",
-    "org.apache.cassandra.config.TransparentDataEncryptionOptions",
-    "org.apache.cassandra.config.StartupChecksOptions",
-    "org.apache.cassandra.config.SubnetGroups",
-    "org.apache.cassandra.config.TrackWarnings",
-    "org.apache.cassandra.config.StorageAttachedIndexOptions",
     "org.apache.cassandra.db.ConsistencyLevel",
     "org.apache.cassandra.db.commitlog.AbstractCommitLogSegmentManager",
     "org.apache.cassandra.db.commitlog.CommitLog",
@@ -227,9 +228,9 @@ public class DatabaseDescriptorRefTest
     "org.apache.cassandra.io.sstable.format.SSTableReaderLoadingBuilder",
     "org.apache.cassandra.io.sstable.format.SSTableReaderWithFilter",
     "org.apache.cassandra.io.sstable.format.SSTableReaderWithFilter$Builder",
-    "org.apache.cassandra.io.sstable.format.SortedTableReaderLoadingBuilder",
     "org.apache.cassandra.io.sstable.format.SSTableWriter",
     "org.apache.cassandra.io.sstable.format.SSTableWriter$Builder",
+    "org.apache.cassandra.io.sstable.format.SortedTableReaderLoadingBuilder",
     "org.apache.cassandra.io.sstable.format.SortedTableWriter",
     "org.apache.cassandra.io.sstable.format.SortedTableWriter$Builder",
     "org.apache.cassandra.io.sstable.format.Version",
@@ -268,23 +269,23 @@ public class DatabaseDescriptorRefTest
     "org.apache.cassandra.locator.ReplicaCollection",
     "org.apache.cassandra.locator.SeedProvider",
     "org.apache.cassandra.locator.SimpleSeedProvider",
+    "org.apache.cassandra.security.AbstractCryptoProvider",
     "org.apache.cassandra.security.EncryptionContext",
     "org.apache.cassandra.security.ISslContextFactory",
     "org.apache.cassandra.security.SSLFactory",
     "org.apache.cassandra.service.CacheService$CacheType",
-    "org.apache.cassandra.security.AbstractCryptoProvider",
     "org.apache.cassandra.transport.ProtocolException",
     "org.apache.cassandra.utils.Closeable",
     "org.apache.cassandra.utils.CloseableIterator",
     "org.apache.cassandra.utils.FBUtilities",
     "org.apache.cassandra.utils.FBUtilities$1",
     "org.apache.cassandra.utils.Pair",
+    "org.apache.cassandra.utils.StorageCompatibilityMode",
     "org.apache.cassandra.utils.binlog.BinLogOptions",
     "org.apache.cassandra.utils.concurrent.RefCounted",
     "org.apache.cassandra.utils.concurrent.SelfRefCounted",
     "org.apache.cassandra.utils.concurrent.Transactional",
     "org.apache.cassandra.utils.concurrent.UncheckedInterruptedException",
-    "org.apache.cassandra.utils.StorageCompatibilityMode"
     };
 
     static final Set<String> checkedClasses = new 
HashSet<>(Arrays.asList(validClasses));
diff --git 
a/test/unit/org/apache/cassandra/config/YamlConfigurationLoaderTest.java 
b/test/unit/org/apache/cassandra/config/YamlConfigurationLoaderTest.java
index bbc7bf2c82..372619d145 100644
--- a/test/unit/org/apache/cassandra/config/YamlConfigurationLoaderTest.java
+++ b/test/unit/org/apache/cassandra/config/YamlConfigurationLoaderTest.java
@@ -436,11 +436,11 @@ public class YamlConfigurationLoaderTest
         {
             Config c = fromType(type, "available_processors", 4);
             assertThat(c.available_processors).isEqualTo(new 
OptionaldPositiveInt(4));
-            
assertThat(c.accord_shard_count).isEqualTo(OptionaldPositiveInt.UNDEFINED);
+            
assertThat(c.accord.shard_count).isEqualTo(OptionaldPositiveInt.UNDEFINED);
 
-            c = fromType(type, "available_processors", 3, 
"accord_shard_count", 1);
+            c = fromType(type, "available_processors", 3, 
"accord.shard_count", 1);
             assertThat(c.available_processors).isEqualTo(new 
OptionaldPositiveInt(3));
-            assertThat(c.accord_shard_count).isEqualTo(new 
OptionaldPositiveInt(1));
+            assertThat(c.accord.shard_count).isEqualTo(new 
OptionaldPositiveInt(1));
         }
     }
 


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


Reply via email to