Skip to content

fix(inkless:migration): bypass diskless/remote-storage mutual exclusion for classic-to-diskless migration#555

Merged
viktorsomogyi merged 1 commit intomainfrom
jeqo/fix-diskless-migration-config
Mar 30, 2026
Merged

fix(inkless:migration): bypass diskless/remote-storage mutual exclusion for classic-to-diskless migration#555
viktorsomogyi merged 1 commit intomainfrom
jeqo/fix-diskless-migration-config

Conversation

@jeqo
Copy link
Copy Markdown
Contributor

@jeqo jeqo commented Mar 27, 2026

When diskless.allow.from.classic.enable is true and a topic is being migrated from classic (remote.storage.enable=true) to diskless, skip the mutual exclusion validation that prevents both configs from being set simultaneously.

The bypass only triggers when all conditions are met:

  • diskless.allow.from.classic.enable is true (broker config)
  • diskless.enable is being explicitly set to true (request)
  • remote.storage.enable was previously set to true (existing topic config)

@jeqo jeqo marked this pull request as ready for review March 27, 2026 17:34
@jeqo jeqo requested review from Copilot and giuseppelillo March 27, 2026 17:34
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts LogConfig validation to allow classic (tiered-storage) topics to enable diskless.enable=true during migration when diskless.allow.from.classic.enable is enabled, bypassing the diskless/remote mutual-exclusion check under specific conditions.

Changes:

  • Add a conditional bypass for diskless.enable vs remote.storage.enable mutual exclusion during classic-to-diskless migration.
  • Update unit tests to cover the intended migration scenario.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
storage/src/main/java/org/apache/kafka/storage/internals/log/LogConfig.java Adds migration-specific bypass for diskless/remote mutual exclusion validation.
core/src/test/scala/unit/kafka/log/LogConfigTest.scala Updates/extends validation tests for disklessAllowFromClassic update behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread core/src/test/scala/unit/kafka/log/LogConfigTest.scala Outdated
…on for classic-to-diskless migration

When diskless.allow.from.classic.enable is true and a topic is being migrated
from classic (remote.storage.enable=true) to diskless, skip the mutual exclusion
validation that prevents both configs from being set simultaneously.

The bypass only triggers when all conditions are met:
- diskless.allow.from.classic.enable is true (broker config)
- diskless.enable is being explicitly set to true (request)
- remote.storage.enable was previously set to true (existing topic config)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jeqo jeqo force-pushed the jeqo/fix-diskless-migration-config branch from e08de83 to 3440b23 Compare March 30, 2026 13:06
@viktorsomogyi viktorsomogyi merged commit a6c253c into main Mar 30, 2026
4 checks passed
@viktorsomogyi viktorsomogyi deleted the jeqo/fix-diskless-migration-config branch March 30, 2026 14:38
jeqo added a commit that referenced this pull request Mar 30, 2026
…on for classic-to-diskless migration (#555)

When diskless.allow.from.classic.enable is true and a topic is being migrated
from classic (remote.storage.enable=true) to diskless, skip the mutual exclusion
validation that prevents both configs from being set simultaneously.

The bypass only triggers when all conditions are met:
- diskless.allow.from.classic.enable is true (broker config)
- diskless.enable is being explicitly set to true (request)
- remote.storage.enable was previously set to true (existing topic config)
jeqo added a commit that referenced this pull request Mar 30, 2026
…on for classic-to-diskless migration (#555)

When diskless.allow.from.classic.enable is true and a topic is being migrated
from classic (remote.storage.enable=true) to diskless, skip the mutual exclusion
validation that prevents both configs from being set simultaneously.

The bypass only triggers when all conditions are met:
- diskless.allow.from.classic.enable is true (broker config)
- diskless.enable is being explicitly set to true (request)
- remote.storage.enable was previously set to true (existing topic config)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants