8000 fix(inkless:retention): require remote copy on consolidating topics [KC-552] by viktorsomogyi · Pull Request #809 · aiven/inkless · GitHub
[go: up one dir, main page]

Skip to content

fix(inkless:retention): require remote copy on consolidating topics [KC-552] - #809

Merged
EelisK merged 1 commit into
mainfrom
svv/KC-552-remote-log-copy-disable
Sep 23, 2026
Merged

EelisK merged 1 commit into
mainfrom
svv/KC-552-remote-log-copy-disable

Conversation

@viktorsomogyi
@viktorsomogyi viktorsomogyi commented Sep 23, 2026 •
Copy link
Copy Markdown
Contributor

ConsolidatedDisklessLogPruner deletes WAL batches only after remote storage confirms them. remote.log.copy.disable=true means that confirmation never arrives, so the pruner deletes nothing. The parent commit skips RetentionEnforcer for every consolidating topic, and a copy-disabled consolidating topic then has no deleter.

LogConfig rejects an update that creates this state: remote copy turned off on a topic that will consolidate, or consolidation turned on while copy is already off. A topic that already stores remote.log.copy.disable=true together with consolidation can change other configs, delete that key, or set it to false.

createTopic writes diskless.enable from the broker default log.diskless.enable after LogConfig runs. A create that sets only remote.log.copy.disable=true would be stored as a consolidating topic. createTopic rejects that create when consolidation is enabled and the topic isn't a system topic. RetentionEnforcer deletes WAL batches for a consolidating topic whose remote copy is disabled.

Test plan

  • LogConfigTest covers deleting remote.log.copy.disable, a retention.ms alter that keeps the stored true, a broker log.diskless.enable default, and a classic-to-diskless switch that drops the key.
  • ReplicationControlManagerInklessTest covers a create that uses log.diskless.enable, an explicit diskless.enable=true, consolidation disabled, and a system topic.
  • RetentionEnforcerTest checks that a consolidating partition with remote copy disabled is sent for WAL retention.

Assisted-by: Grok 4.7
Co-authored-by: Cursor cursoragent@cursor.com

@viktorsomogyi
viktorsomogyi force-pushed the svv/KC-552-retention-guard branch from 65114ee to e489ab5 Compare September 23, 2026 09:44
@viktorsomogyi
viktorsomogyi force-pushed the svv/KC-552-remote-log-copy-disable branch from d7ba5fa to b9b0e39 Compare September 23, 2026 09:45
Base automatically changed from svv/KC-552-retention-guard to main September 23, 2026 11:56
… [KC-552]

`ConsolidatedDisklessLogPruner` deletes WAL batches only after remote storage confirms them. `remote.log.copy.disable=true` means that confirmation never arrives, so the pruner deletes nothing. The parent commit skips `RetentionEnforcer` for every consolidating topic, and a copy-disabled consolidating topic then has no deleter.

`LogConfig` rejects an update that creates this state: remote copy turned off on a topic that will consolidate, or consolidation turned on while copy is already off. A topic that already stores `remote.log.copy.disable=true` together with consolidation can change other configs, delete that key, or set it to `false`.

`createTopic` writes `diskless.enable` from the broker default `log.diskless.enable` after `LogConfig` runs. A create that sets only `remote.log.copy.disable=true` would be stored as a consolidating topic. `createTopic` rejects that create when consolidation is enabled and the topic isn't a system topic. `RetentionEnforcer` deletes WAL batches for a consolidating topic whose remote copy is disabled.

## Test plan
- `LogConfigTest` covers deleting `remote.log.copy.disable`, a `retention.ms` alter that keeps the stored `true`, a broker `log.diskless.enable` default, and a classic-to-diskless switch that drops the key.
- `ReplicationControlManagerInklessTest` covers a create that uses `log.diskless.enable`, an explicit `diskless.enable=true`, consolidation disabled, and a system topic.
- `RetentionEnforcerTest` checks that a consolidating partition with remote copy disabled is sent for WAL retention.

Assisted-by: Grok 4.7
Co-authored-by: Cursor <cursoragent@cursor.com>
@viktorsomogyi
viktorsomogyi force-pushed the svv/KC-552-remote-log-copy-disable branch from b9b0e39 to 0362e4a Compare September 23, 2026 12:48
@viktorsomogyi
viktorsomogyi marked this pull request as ready for review September 23, 2026 12:48
@EelisK
EelisK merged commit c9b88d7 into main Sep 23, 2026
9 checks passed
@EelisK
EelisK deleted the svv/KC-552-remote-log-copy-disable branch September 23, 2026 13:43
giuseppelillo pushed a commit that referenced this pull request Sep 24, 2026
… [KC-552] (#809)

`ConsolidatedDisklessLogPruner` deletes WAL batches only after remote storage confirms them. `remote.log.copy.disable=true` means that confirmation never arrives, so the pruner deletes nothing. The parent commit skips `RetentionEnforcer` for every consolidating topic, and a copy-disabled consolidating topic then has no deleter.

`LogConfig` rejects an update that creates this state: remote copy turned off on a topic that will consolidate, or consolidation turned on while copy is already off. A topic that already stores `remote.log.copy.disable=true` together with consolidation can change other configs, delete that key, or set it to `false`.

`createTopic` writes `diskless.enable` from the broker default `log.diskless.enable` after `LogConfig` runs. A create that sets only `remote.log.copy.disable=true` would be stored as a consolidating topic. `createTopic` rejects that create when consolidation is enabled and the topic isn't a system topic. `RetentionEnforcer` deletes WAL batches for a consolidating topic whose remote copy is disabled.

## Test plan
- `LogConfigTest` covers deleting `remote.log.copy.disable`, a `retention.ms` alter that keeps the stored `true`, a broker `log.diskless.enable` default, and a classic-to-diskless switch that drops the key.
- `ReplicationControlManagerInklessTest` covers a create that uses `log.diskless.enable`, an explicit `diskless.enable=true`, consolidation disabled, and a system topic.
- `RetentionEnforcerTest` checks that a consolidating partition with remote copy disabled is sent for WAL retention.

Assisted-by: Grok 4.7

Co-authored-by: Cursor <cursoragent@cursor.com>
giuseppelillo pushed a commit that referenced this pull request Sep 24, 2026
… [KC-552] (#809)

`ConsolidatedDisklessLogPruner` deletes WAL batches only after remote storage confirms them. `remote.log.copy.disable=true` means that confirmation never arrives, so the pruner deletes nothing. The parent commit skips `RetentionEnforcer` for every consolidating topic, and a copy-disabled consolidating topic then has no deleter.

`LogConfig` rejects an update that creates this state: remote copy turned off on a topic that will consolidate, or consolidation turned on while copy is already off. A topic that already stores `remote.log.copy.disable=true` together with consolidation can change other configs, delete that key, or set it to `false`.

`createTopic` writes `diskless.enable` from the broker default `log.diskless.enable` after `LogConfig` runs. A create that sets only `remote.log.copy.disable=true` would be stored as a consolidating topic. `createTopic` rejects that create when consolidation is enabled and the topic isn't a system topic. `RetentionEnforcer` deletes WAL batches for a consolidating topic whose remote copy is disabled.

## Test plan
- `LogConfigTest` covers deleting `remote.log.copy.disable`, a `retention.ms` alter that keeps the stored `true`, a broker `log.diskless.enable` default, and a classic-to-diskless switch that drops the key.
- `ReplicationControlManagerInklessTest` covers a create that uses `log.diskless.enable`, an explicit `diskless.enable=true`, consolidation disabled, and a system topic.
- `RetentionEnforcerTest` checks that a consolidating partition with remote copy disabled is sent for WAL retention.

Assisted-by: Grok 4.7

Co-authored-by: Cursor <cursoragent@cursor.com>
giuseppelillo pushed a commit that referenced this pull request Sep 24, 2026
… [KC-552] (#809)

`ConsolidatedDisklessLogPruner` deletes WAL batches only after remote storage confirms them. `remote.log.copy.disable=true` means that confirmation never arrives, so the pruner deletes nothing. The parent commit skips `RetentionEnforcer` for every consolidating topic, and a copy-disabled consolidating topic then has no deleter.

`LogConfig` rejects an update that creates this state: remote copy turned off on a topic that will consolidate, or consolidation turned on while copy is already off. A topic that already stores `remote.log.copy.disable=true` together with consolidation can change other configs, delete that key, or set it to `false`.

`createTopic` writes `diskless.enable` from the broker default `log.diskless.enable` after `LogConfig` runs. A create that sets only `remote.log.copy.disable=true` would be stored as a consolidating topic. `createTopic` rejects that create when consolidation is enabled and the topic isn't a system topic. `RetentionEnforcer` deletes WAL batches for a consolidating topic whose remote copy is disabled.

## Test plan
- `LogConfigTest` covers deleting `remote.log.copy.disable`, a `retention.ms` alter that keeps the stored `true`, a broker `log.diskless.enable` default, and a classic-to-diskless switch that drops the key.
- `ReplicationControlManagerInklessTest` covers a create that uses `log.diskless.enable`, an explicit `diskless.enable=true`, consolidation disabled, and a system topic.
- `RetentionEnforcerTest` checks that a consolidating partition with remote copy disabled is sent for WAL retention.

Assisted-by: Grok 4.7

Co-authored-by: Cursor <cursoragent@cursor.com>
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.

2 participants

0