[
https://issues.apache.org/jira/browse/CASSANDRA-21540?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Valery Baranov updated CASSANDRA-21540:
---------------------------------------
Description:
With enabled TDE:
{code:java}
transparent_data_encryption_options:
enabled: true {code}
Cassandra failed to start:
{code:java}
Exception (java.lang.AssertionError) encountered during startup: null
java.lang.AssertionError
at
org.apache.cassandra.db.commitlog.AbstractCommitLogSegmentManager.createSegmentBuilder(AbstractCommitLogSegmentManager.java:127)
at
org.apache.cassandra.db.commitlog.AbstractCommitLogSegmentManager.start(AbstractCommitLogSegmentManager.java:156)
at org.apache.cassandra.db.commitlog.CommitLog.start(CommitLog.java:148)
at
org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:273)
at
org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:839)
at
org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:993)
ERROR [main] 2026-07-29T10:02:55,512 CassandraDaemon.java:1020 - Exception
encountered during startup
java.lang.AssertionError: null
at
org.apache.cassandra.db.commitlog.AbstractCommitLogSegmentManager.createSegmentBuilder(AbstractCommitLogSegmentManager.java:127)
at
org.apache.cassandra.db.commitlog.AbstractCommitLogSegmentManager.start(AbstractCommitLogSegmentManager.java:156)
at org.apache.cassandra.db.commitlog.CommitLog.start(CommitLog.java:148)
at
org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:273)
at
org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:839)
at
org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:993)
{code}
commitlog_disk_access_mode not correct in createSegmentBuilder (value is mmap,
but should be standard):
{code:java}
private CommitLogSegment.Builder
createSegmentBuilder(CommitLog.Configuration config)
{
if (config.useEncryption())
{
assert config.diskAccessMode == DiskAccessMode.standard; {code}
Problem is applyEncryptionContext() loaded after resolving
commitlog_disk_access_mode in applySimpleConfig() ->
initializeCommitLogDiskAccessMode() -> resolveCommitLogWriteDiskAccessMode(),
when encryptionContext is not loaded (null).
We need to change methods order: applyEncryptionContext() before
applySimpleConfig().
WA is also uncomment commitlog_compression:
{code:java}
commitlog_compression:
- class_name: LZ4Compressor {code}
but this only hides bug. And compressor is hardcoded in EncryptionContext
(ignored from config):
{code:java}
ompressor = LZ4Compressor.create(Collections.<String, String>emptyMap()); {code}
was:
With enabled TDE:
{code:java}
transparent_data_encryption_options:
enabled: true {code}
Cassandra failed to start:
{code:java}
Exception (java.lang.AssertionError) encountered during startup: null
java.lang.AssertionError
at
org.apache.cassandra.db.commitlog.AbstractCommitLogSegmentManager.createSegmentBuilder(AbstractCommitLogSegmentManager.java:127)
at
org.apache.cassandra.db.commitlog.AbstractCommitLogSegmentManager.start(AbstractCommitLogSegmentManager.java:156)
at org.apache.cassandra.db.commitlog.CommitLog.start(CommitLog.java:148)
at
org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:273)
at
org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:839)
at
org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:993)
ERROR [main] 2026-07-29T10:02:55,512 CassandraDaemon.java:1020 - Exception
encountered during startup
java.lang.AssertionError: null
at
org.apache.cassandra.db.commitlog.AbstractCommitLogSegmentManager.createSegmentBuilder(AbstractCommitLogSegmentManager.java:127)
at
org.apache.cassandra.db.commitlog.AbstractCommitLogSegmentManager.start(AbstractCommitLogSegmentManager.java:156)
at org.apache.cassandra.db.commitlog.CommitLog.start(CommitLog.java:148)
at
org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:273)
at
org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:839)
at
org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:993)
{code}
Failed in not valid detect commitlog_disk_access_mode in createSegmentBuilder:
{code:java}
private CommitLogSegment.Builder
createSegmentBuilder(CommitLog.Configuration config)
{
if (config.useEncryption())
{
assert config.diskAccessMode == DiskAccessMode.standard; {code}
Problem is applyEncryptionContext() loaded after resolving
commitlog_disk_access_mode in applySimpleConfig() ->
initializeCommitLogDiskAccessMode() -> resolveCommitLogWriteDiskAccessMode(),
when encryptionContext is not loaded (null).
> Startup fails when TDE is enabled
> ---------------------------------
>
> Key: CASSANDRA-21540
> URL: https://issues.apache.org/jira/browse/CASSANDRA-21540
> Project: Apache Cassandra
> Issue Type: Bug
> Reporter: Valery Baranov
> Assignee: Valery Baranov
> Priority: Normal
>
> With enabled TDE:
> {code:java}
> transparent_data_encryption_options:
> enabled: true {code}
> Cassandra failed to start:
> {code:java}
> Exception (java.lang.AssertionError) encountered during startup: null
> java.lang.AssertionError
> at
> org.apache.cassandra.db.commitlog.AbstractCommitLogSegmentManager.createSegmentBuilder(AbstractCommitLogSegmentManager.java:127)
> at
> org.apache.cassandra.db.commitlog.AbstractCommitLogSegmentManager.start(AbstractCommitLogSegmentManager.java:156)
> at
> org.apache.cassandra.db.commitlog.CommitLog.start(CommitLog.java:148)
> at
> org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:273)
> at
> org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:839)
> at
> org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:993)
> ERROR [main] 2026-07-29T10:02:55,512 CassandraDaemon.java:1020 - Exception
> encountered during startup
> java.lang.AssertionError: null
> at
> org.apache.cassandra.db.commitlog.AbstractCommitLogSegmentManager.createSegmentBuilder(AbstractCommitLogSegmentManager.java:127)
> at
> org.apache.cassandra.db.commitlog.AbstractCommitLogSegmentManager.start(AbstractCommitLogSegmentManager.java:156)
> at
> org.apache.cassandra.db.commitlog.CommitLog.start(CommitLog.java:148)
> at
> org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:273)
> at
> org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:839)
> at
> org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:993)
> {code}
>
> commitlog_disk_access_mode not correct in createSegmentBuilder (value is
> mmap, but should be standard):
> {code:java}
> private CommitLogSegment.Builder
> createSegmentBuilder(CommitLog.Configuration config)
> {
> if (config.useEncryption())
> {
> assert config.diskAccessMode == DiskAccessMode.standard; {code}
> Problem is applyEncryptionContext() loaded after resolving
> commitlog_disk_access_mode in applySimpleConfig() ->
> initializeCommitLogDiskAccessMode() -> resolveCommitLogWriteDiskAccessMode(),
> when encryptionContext is not loaded (null).
> We need to change methods order: applyEncryptionContext() before
> applySimpleConfig().
> WA is also uncomment commitlog_compression:
> {code:java}
> commitlog_compression:
> - class_name: LZ4Compressor {code}
> but this only hides bug. And compressor is hardcoded in EncryptionContext
> (ignored from config):
> {code:java}
> ompressor = LZ4Compressor.create(Collections.<String, String>emptyMap());
> {code}
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]