From 7b6258b8ef35a0b6b94502d028c5d2774739686f Mon Sep 17 00:00:00 2001 From: Jun Nemoto Date: Thu, 24 Jul 2025 17:37:47 +0900 Subject: [PATCH 1/3] Disable the coordinator write omission in ScalarDB --- .../scalar/dl/ledger/config/LedgerConfig.java | 8 +++++ .../dl/ledger/config/LedgerConfigTest.java | 34 +++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/ledger/src/main/java/com/scalar/dl/ledger/config/LedgerConfig.java b/ledger/src/main/java/com/scalar/dl/ledger/config/LedgerConfig.java index a139f300..8da99f7a 100644 --- a/ledger/src/main/java/com/scalar/dl/ledger/config/LedgerConfig.java +++ b/ledger/src/main/java/com/scalar/dl/ledger/config/LedgerConfig.java @@ -519,6 +519,14 @@ private void validateTransactionManager() { LedgerError.CONFIG_GROUP_COMMIT_MUST_BE_DISABLED.buildMessage( ConsensusCommitConfig.COORDINATOR_GROUP_COMMIT_ENABLED)); } + if (consensusCommitConfig.isCoordinatorWriteOmissionOnReadOnlyEnabled()) { + LOGGER.warn( + ConsensusCommitConfig.COORDINATOR_WRITE_OMISSION_ON_READ_ONLY_ENABLED + + " is disabled because the Coordinator write is always necessary for ScalarDL"); + props.setProperty( + ConsensusCommitConfig.COORDINATOR_WRITE_OMISSION_ON_READ_ONLY_ENABLED, + Boolean.toString(false)); + } } } diff --git a/ledger/src/test/java/com/scalar/dl/ledger/config/LedgerConfigTest.java b/ledger/src/test/java/com/scalar/dl/ledger/config/LedgerConfigTest.java index f10df9c1..86a93bff 100644 --- a/ledger/src/test/java/com/scalar/dl/ledger/config/LedgerConfigTest.java +++ b/ledger/src/test/java/com/scalar/dl/ledger/config/LedgerConfigTest.java @@ -581,4 +581,38 @@ public void constructor_HmacEnabledButCipherKeyNotGiven_ShouldThrowIllegalArgume // Assert assertThat(thrown).isExactlyInstanceOf(IllegalArgumentException.class); } + + @Test + public void + constructor_ConsensusCommitWithCoordinatorWriteOmissionDisabledSpecified_ShouldConstructProperly() { + // Arrange + props.setProperty(DatabaseConfig.TRANSACTION_MANAGER, "consensus-commit"); + props.setProperty( + ConsensusCommitConfig.COORDINATOR_WRITE_OMISSION_ON_READ_ONLY_ENABLED, "false"); + + // Act + LedgerConfig config = new LedgerConfig(props); + ConsensusCommitConfig consensusCommitConfig = + new ConsensusCommitConfig(config.getDatabaseConfig()); + + // Assert + assertThat(consensusCommitConfig.isCoordinatorWriteOmissionOnReadOnlyEnabled()).isFalse(); + } + + @Test + public void + constructor_ConsensusCommitWithCoordinatorWriteOmissionEnabledSpecified_ShouldConstructProperlyWithDisablingIt() { + // Arrange + props.setProperty(DatabaseConfig.TRANSACTION_MANAGER, "consensus-commit"); + props.setProperty( + ConsensusCommitConfig.COORDINATOR_WRITE_OMISSION_ON_READ_ONLY_ENABLED, "true"); + + // Act + LedgerConfig config = new LedgerConfig(props); + ConsensusCommitConfig consensusCommitConfig = + new ConsensusCommitConfig(config.getDatabaseConfig()); + + // Assert + assertThat(consensusCommitConfig.isCoordinatorWriteOmissionOnReadOnlyEnabled()).isFalse(); + } } From 4251f0a77c4c9c4d0b1578684a0e9f7584c0ae76 Mon Sep 17 00:00:00 2001 From: Jun Nemoto Date: Thu, 24 Jul 2025 17:51:58 +0900 Subject: [PATCH 2/3] Fix based on feedback from Gemini --- .../main/java/com/scalar/dl/ledger/config/LedgerConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ledger/src/main/java/com/scalar/dl/ledger/config/LedgerConfig.java b/ledger/src/main/java/com/scalar/dl/ledger/config/LedgerConfig.java index 8da99f7a..6d1daea0 100644 --- a/ledger/src/main/java/com/scalar/dl/ledger/config/LedgerConfig.java +++ b/ledger/src/main/java/com/scalar/dl/ledger/config/LedgerConfig.java @@ -521,8 +521,8 @@ private void validateTransactionManager() { } if (consensusCommitConfig.isCoordinatorWriteOmissionOnReadOnlyEnabled()) { LOGGER.warn( - ConsensusCommitConfig.COORDINATOR_WRITE_OMISSION_ON_READ_ONLY_ENABLED - + " is disabled because the Coordinator write is always necessary for ScalarDL"); + "Disabling the unsupported option '{}' because the Coordinator writes are always necessary for ScalarDL", + ConsensusCommitConfig.COORDINATOR_WRITE_OMISSION_ON_READ_ONLY_ENABLED); props.setProperty( ConsensusCommitConfig.COORDINATOR_WRITE_OMISSION_ON_READ_ONLY_ENABLED, Boolean.toString(false)); From 941a42c62d2fdcde348914c5fd66216adbd01318 Mon Sep 17 00:00:00 2001 From: Jun Nemoto <35618893+jnmt@users.noreply.github.com> Date: Thu, 24 Jul 2025 18:06:06 +0900 Subject: [PATCH 3/3] Update ledger/src/main/java/com/scalar/dl/ledger/config/LedgerConfig.java [skip ci] Co-authored-by: Josh Wong --- .../src/main/java/com/scalar/dl/ledger/config/LedgerConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ledger/src/main/java/com/scalar/dl/ledger/config/LedgerConfig.java b/ledger/src/main/java/com/scalar/dl/ledger/config/LedgerConfig.java index 6d1daea0..9c6eede0 100644 --- a/ledger/src/main/java/com/scalar/dl/ledger/config/LedgerConfig.java +++ b/ledger/src/main/java/com/scalar/dl/ledger/config/LedgerConfig.java @@ -521,7 +521,7 @@ private void validateTransactionManager() { } if (consensusCommitConfig.isCoordinatorWriteOmissionOnReadOnlyEnabled()) { LOGGER.warn( - "Disabling the unsupported option '{}' because the Coordinator writes are always necessary for ScalarDL", + "Disabling the unsupported option '{}' because Coordinator writes are always necessary for ScalarDL", ConsensusCommitConfig.COORDINATOR_WRITE_OMISSION_ON_READ_ONLY_ENABLED); props.setProperty( ConsensusCommitConfig.COORDINATOR_WRITE_OMISSION_ON_READ_ONLY_ENABLED,