av9ash/GitBugs huggingface dataset:
Bug: Add guardrail to disallow DROP or TRUNCATE TABLE commands for non superuser accounts
Status: Resolved
Priority: Normal
Resolution: Fixed
Created: 18/Apr/22 16:15
Resolved: 27/Apr/22 15:53

While this can also be accomplished via roles, there's value in having a cluster-wide "all role ban" on specific operations that operators can configure for clusters that have need of those settings.

In this case, we want the ability to completely disallow DROP or TRUNCATE TABLE commands so users cannot inadvertently throw away data and operators don't have to runbook managing roles to ensure that this functionality doesn't leak through.
Bug: ReadRepairQueryTypesTest.testUnrestrictedQueryOnSkinnyTable[8: strategy=NONE coordinator=1 flush=false paging=false] times out sporadically
Status: Resolved
Priority: Normal
Resolution: Fixed
Created: 11/Apr/22 16:45
Resolved: 22/Apr/22 16:34

org.apache.cassandra.distributed.test.ReadRepairQueryTypesTest.testUnrestrictedQueryOnSkinnyTable[8: strategy=NONE coordinator=1 flush=false paging=false]

{noformat}
Error Message
Timeout occurred. Please note the time in the report does not reflect the time until the timeout.
Stacktrace
junit.framework.AssertionFailedError: Timeout occurred. Please note the time in the report does not reflect the time until the timeout.
	at jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.util.Vector.forEach(Vector.java:1388)
	at jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.util.Vector.forEach(Vector.java:1388)
	at jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.util.Vector.forEach(Vector.java:1388)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at org.apache.cassandra.anttasks.TestHelper.execute(TestHelper.java:53)
	at jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.util.Vector.forEach(Vector.java:1388)
	at jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
{noformat}

See https://ci-cassandra.apache.org/job/Cassandra-trunk/1075/testReport/org.apache.cassandra.distributed.test/ReadRepairQueryTypesTest/testUnrestrictedQueryOnSkinnyTable_8__strategy_NONE_coordinator_1_flush_false_paging_false_/
Bug: Official Cassandra packages are missing runtime dependency procps-ng
Status: Resolved
Priority: Normal
Resolution: Fixed
Created: 02/Apr/22 16:16
Resolved: 13/Apr/22 12:13

Nodetool depends on the free command-line utility, but the official Cassandra RPM does not explicitly install it. free comes from procps-ng, so this package should be made an explicit dependency in the RPM's spec file.

Here's what you get when invoking nodetool without free installed:

bash-5.1# nodetool status
/etc/cassandra/conf/cassandra-env.sh: line 21: free: command not found
expr: syntax error: unexpected argument '2'
expr: syntax error: unexpected argument '2'
/etc/cassandra/conf/cassandra-env.sh: line 59: [: : integer expression expected
/etc/cassandra/conf/cassandra-env.sh: line 63: [: : integer expression expected
/etc/cassandra/conf/cassandra-env.sh: line 67: [: : integer expression expected
expr: syntax error: unexpected argument '4'
/etc/cassandra/conf/cassandra-env.sh: line 81: [: : integer expression expected

I have attached a patch that should fix this issue.
Bug: WEBSITE - May 2022 blog "Apache Cassandra 4.1 Features: Client-side Password Hashing"
Status: Resolved
Priority: Normal
Resolution: Fixed
Created: 24/May/22 15:42
Resolved: 25/May/22 10:16

This ticket is to capture the work associated with publishing the May 2022 blog "Apache Cassandra 4.1 Features: Client-side Password Hashing"

If this blog cannot be published by the *May 26, 2022 publish date*, please contact me, suggest changes, or correct the date when possible in the pull request for the appropriate time that the blog will go live (on both the blog.adoc and the blog post's file).
Bug: meet error when build the cassandra
Status: Resolved
Priority: Normal
Resolution: Invalid
Created: 20/May/22 07:29
Resolved: 20/May/22 09:53

I meet the following messages when building using the command ant
{code:java}
resolver-retrieve-build:
[resolver:resolve] The POM for org.perfkit.sjk.parsers:sjk-jfr5:jar:0.5 is invalid, transitive dependencies (if any) will not be available: 2 problems were encountered while building the effective model for org.perfkit.sjk.parsers:sjk-jfr5:0.5
[resolver:resolve] [ERROR] 'dependencies.dependency.systemPath' for com.jrockit.mc:com.jrockit.mc.common:jar must specify an absolute path but is ${jmc5.path}/plugins/com.jrockit.mc.common_${jmc5.version}.jar @ 
[resolver:resolve] [ERROR] 'dependencies.dependency.systemPath' for com.jrockit.mc:com.jrockit.mc.flightrecorder:jar must specify an absolute path but is ${jmc5.path}/plugins/com.jrockit.mc.flightrecorder_${jmc5.version}.jar @ 
[resolver:resolve] The POM for org.perfkit.sjk.parsers:sjk-jfr6:jar:0.7 is invalid, transitive dependencies (if any) will not be available: 2 problems were encountered while building the effective model for org.perfkit.sjk.parsers:sjk-jfr6:0.7
[resolver:resolve] [ERROR] 'dependencies.dependency.systemPath' for com.oracle.jmc:com.oracle.jmc.common:jar must specify an absolute path but is ${jmc6.path}/plugins/com.oracle.jmc.common_${jmc6.version}.jar @ 
[resolver:resolve] [ERROR] 'dependencies.dependency.systemPath' for com.oracle.jmc:com.oracle.jmc.flightrecorder:jar must specify an absolute path but is ${jmc6.path}/plugins/com.oracle.jmc.flightrecorder_${jmc6.version}.jar @ 
[resolver:resolve] The POM for org.perfkit.sjk.parsers:sjk-nps:jar:0.5 is invalid, transitive dependencies (if any) will not be available: 3 problems were encountered while building the effective model for org.perfkit.sjk.parsers:sjk-nps:0.5
[resolver:resolve] [ERROR] 'dependencies.dependency.systemPath' for jdk.org.netbeans:profiler:jar must specify an absolute path but is ${visualvm.path}/profiler/modules/org-netbeans-modules-profiler.jar @ 
[resolver:resolve] [ERROR] 'dependencies.dependency.systemPath' for jdk.org.netbeans:lib-profiler:jar must specify an absolute path but is ${visualvm.path}/profiler/modules/org-netbeans-lib-profiler.jar @ 
[resolver:resolve] [ERROR] 'dependencies.dependency.systemPath' for jdk.org.netbeans:lib-profiler-common:jar must specify an absolute path but is ${visualvm.path}/profiler/modules/org-netbeans-lib-profiler-common.jar @ 
[resolver:resolve] Resolving artifacts
[resolver:resolve] Resolving artifacts
 {code}
Bug: Cassandra latest (3.0.26) image fails to start with health check
Status: Resolved
Priority: Normal
Resolution: Duplicate
Created: 06/May/22 10:54
Resolved: 06/May/22 12:07

Today our CI images at Apache Airflow started to fail , and when we investigated, the root cause seems to be that Cassandra 3.0 image in our CI jobs failed to start (and pass health checks). Usually we have one of our tests bring up a number of images via docker compose and we used "cassandra:3.0" image for that. We noticed 3.0.26 was released 15 hours ago so this is almost for sure some 3.0.25 -> 3.0.26 difference.

The whole tests fails because cassandra container is unhealthy:

[https://github.com/apache/airflow/runs/6320170343?check_suite_focus=true#step:10:6651]
[https://github.com/apache/airflow/runs/6319805534?check_suite_focus=true#step:10:12629]
[https://github.com/apache/airflow/runs/6319710486?check_suite_focus=true#step:10:6759]

{{ERROR: for airflow Container "3bd115315ba7" is unhealthy.}}
{{Encountered errors while bringing up the project.}}
{{3bd115315ba7 cassandra:3.0 "docker-entrypoint.s…" 5 minutes ago Up 5 minutes (unhealthy) 7000-7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp airflow-integration-postgres_cassandra_1}}

 

The errors from the cassandra container do not show anything suspicious:

{{INFO  08:45:22 Using Netty Version: [netty-buffer=netty-buffer-4.0.44.Final.452812a, netty-codec=netty-codec-4.0.44.Final.452812a, netty-codec-haproxy=netty-codec-haproxy-4.0.44.Final.452812a, netty-codec-http=netty-codec-http-4.0.44.Final.452812a, netty-codec-socks=netty-codec-socks-4.0.44.Final.452812a, netty-common=netty-common-4.0.44.Final.452812a, netty-handler=netty-handler-4.0.44.Final.452812a, netty-tcnative=netty-tcnative-1.1.33.Fork26.142ecbb, netty-transport=netty-transport-4.0.44.Final.452812a, netty-transport-native-epoll=netty-transport-native-epoll-4.0.44.Final.452812a, netty-transport-rxtx=netty-transport-rxtx-4.0.44.Final.452812a, netty-transport-sctp=netty-transport-sctp-4.0.44.Final.452812a, netty-transport-udt=netty-transport-udt-4.0.44.Final.452812a]}}
{{INFO  08:45:22 Starting listening for CQL clients on /0.0.0.0:9042 (unencrypted)...}}
{{INFO  08:45:23 Not starting RPC server as requested. Use JMX (StorageService->startRPCServer()) or nodetool (enablethrift) to start it}}
{{INFO  08:45:23 Startup complete}}
{{INFO  08:45:24 Created default superuser role ‘cassandra’}}

 

Our docker-compose entry is here:

[https://github.com/apache/airflow/blob/main/scripts/ci/docker-compose/integration-cassandra.yml]

Basically - we run healthcheck that checks if cassandra is up and this health check worked fine before, but seems to fail now. It's either we are using wrong healthcheck or there is some bug in the command ?:

{{    healthcheck:}}
{{      test: "[ $$(nodetool statusgossip) = running ]"}}
{{      interval: 5s}}
{{      timeout: 30s}}
{{      retries: 50}}
{{    restart: always}}

We mitigated it by switching to 3.0.25 temporarily [https://github.com/apache/airflow/pull/23522]

Is this an error in cassandra? Or should we maybe change our health-check command?
Bug: Found Third Party Software vulnerabilities/security issue in 3.11.13
Status: Resolved
Priority: Normal
Resolution: Not A Problem
Created: 17/May/22 08:29
Resolved: 17/May/22 11:18

we have found the below vulnerabilities in Cassandra 3.11.13.zip during the security scan.

Could you please help us to resolve those?

 

[7.5] [CVE-2020-7238] [netty-all] [4.0.44.Final]
[9.1] [CVE-2019-20444] [netty-all] [4.0.44.Final]
[9.1] [CVE-2019-20445] [netty-all] [4.0.44.Final]
[7.5] [CVE-2019-16869] [netty-all] [4.0.44.Final]
[7.5] [CVE-2018-1320] [libthrift] [0.9.2] [0.9.2]

[7.5] [CVE-2019-0205] [thrift] [0.9.3]
Bug: Fix repair_tests/repair_test.py::TestRepair::test_non_replicated_ks_repair
Status: Resolved
Priority: Normal
Resolution: Fixed
Created: 09/May/22 15:47
Resolved: 10/May/22 13:38

Seems we need to ignore non-related keyspaces after CASSANDRA-17594

https://ci-cassandra.apache.org/job/Cassandra-4.0/389/testReport/dtest.repair_tests.repair_test/TestRepair/test_non_replicated_ks_repair/
{code}
Unexpected error found in node logs (see stdout for full details). Errors: [[node3] 'ERROR [Repair-Task:1] 2022-05-05 15:07:53,951 RepairRunnable.java:178 - Repair 237883a0-cc85-11ec-8760-0b7eabc00dbb failed:\njava.lang.RuntimeException: Nothing to repair for (0,1] in system_traces - aborting\n\tat org.apache.cassandra.repair.RepairRunnable.getNeighborsAndRanges(RepairRunnable.java:338)\n\tat org.apache.cassandra.repair.RepairRunnable.runMayThrow(RepairRunnable.java:265)\n\tat org.apache.cassandra.repair.RepairRunnable.run(RepairRunnable.java:241)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:266)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n\tat io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)\n\tat java.lang.Thread.run(Thread.java:748)']
{code}
Bug: WEBSITE - April 2022 blog "Inside Cassandra: An Interview with Project Contributor, Aleksandr Sorokoumov"
Status: Resolved
Priority: Normal
Resolution: Fixed
Created: 13/Apr/22 17:37
Resolved: 21/Apr/22 00:26

This ticket is to capture the work associated with publishing the April 2022 blog "Inside Cassandra: An Interview with Project Contributor, Aleksandr Sorokoumov"

If this blog cannot be published by the *April 14, 2022 publish date*, please contact me, suggest changes, or correct the date when possible in the pull request for the appropriate time that the blog will go live (on both the blog.adoc and the blog post's file).
Bug: WEBSITE - April 2022 blog "Apache Cassandra Changelog #14"
Status: Resolved
Priority: Normal
Resolution: Fixed
Created: 05/Apr/22 15:34
Resolved: 06/Apr/22 14:31

This ticket is to capture the work associated with publishing the April 2022 blog "Apache Cassandra Changelog #14"

If this blog cannot be published by the *April 7, 2022 publish date*, please contact me, suggest changes, or correct the date when possible in the pull request for the appropriate time that the blog will go live (on both the blog.adoc and the blog post's file).
Bug: Move class RoleName into package org.apache.cassandra.cql3.statements
Status: Resolved
Priority: Normal
Resolution: Not A Problem
Created: 02/May/22 04:29
Resolved: 02/May/22 10:54

*Issue Description*

 

Package _*org.apache.cassandra.cql3*_ is a promiscuous package, and groups together miscellaneous functionalities that might be useful to different subsystems. The package structure violates the “high cohesion and low coupling” design rules. I found that class _*RoleName*_ is not used by classes in their package{_}.{_} The project has grown larger, leading to becoming increasingly hard to maintain. For example, if one modifies package _*org.apache.cassandra.cql3*_ (i.e., package rename), resulting in multiple classes of package _*org.apache.cassandra.cql3.statements*_ to be changed.

 

Location: The source file can be found at path File  src/java/org/apache/cassandra/cql3/RoleName.java ** 

 

*Refactoring suggestions*

 

I suggest to move class _*RoleName*_ into package {_}*org.apache.cassandra.cql3.statements*{_}.
Bug: Align and confirm what Python upgrade tests we run in 3.0 and 3.11 in CircleCI and Jenkins
Status: Open
Priority: Normal
Created: 13/Apr/22 16:48

While working on CASSANDRA-14752, I ran into the following issues with 3.0 and 3.11. 4.0 and trunk don't have a lot of failing tests at the moment so it is not obvious to me whether there is something similar there:

[3.0 run|https://app.circleci.com/pipelines/github/ekaterinadimitrova2/cassandra/1534/workflows/9ceb0797-e623-4b1e-b3f6-f8ef9fa29f6d],  [3.11 run|https://app.circleci.com/pipelines/github/ekaterinadimitrova2/cassandra/1525/workflows/86e5bb0d-2e14-472e-a9f3-312b24ac1a38/jobs/9836/tests]

Immediate issues I see:
 * udf upgrade tests, all of them running when only some of them should run depending on versions; they are all skipped in Jenkins
 * I can see tests for upgrades 4.0 to trunk running with 3.0 and 3.11?
Bug: Fix Travis CI for Python DTests
Status: Resolved
Priority: Normal
Resolution: Fixed
Created: 11/Apr/22 22:39
Resolved: 12/Apr/22 22:14

Seems like in the past month Travis CI is failing with the following issue:

 
{code:java}
fatal: remote error: 
  The unauthenticated git protocol on port 9418 is no longer supported.
Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information.
{code}
Bug: The logic of strip_comment_blocks function in cqlsh.py is reversed
Status: Triage Needed
Priority: Normal
Created: 08/Apr/22 19:44

I believe the logic is reversed. The strip_comment_blocks is meant to remove comments in "..." so it should not go into the _if_ section if re.search('["].{_}[/][{_}].{_}[{_}][/].*["]', statementtext) return None.
[https://github.com/jeffwidman/cqlsh/blob/master/cqlsh/cqlsh.py#L905]

example:
INSERT INTO DB (abc) VALUES ('/*');
Bug: Does logback delayed shutdown hook do anything?
Status: Triage Needed
Priority: Normal
Created: 08/Apr/22 10:38

It seems like the delayed shutdown hook from logback is used for both production (programmatically in StorageService) and declaratively in the configuration of logback for tests.

Though, the default delay is zero, and we do not configure the delay anywhere - so it because both useless and actually wrong if we expect a time for appenders flush the outputs (or I missed something).

I propose a different approach - a shutdown hook which would just go through all the appenders and first enable immediate flushing, and then flush the output streams. This way we would not have to wait and we will be sure that everything is properly flushed. 

Does that make sense?
Bug: Remove cassandra-stressd from docs
Status: Resolved
Priority: Normal
Resolution: Implemented
Created: 07/Apr/22 10:56
Resolved: 07/Apr/22 11:30

Here: https://cassandra.apache.org/doc/latest/cassandra/tools/cassandra_stress.html shows the 'sendto' option for stressd.  This no longer exists after CASSANDRA-17535.
Bug: BLOG - ApacheCon NA 2022 Call For Papers
Status: Resolved
Priority: Normal
Resolution: Fixed
Created: 05/Apr/22 21:24
Resolved: 06/Apr/22 15:22

Publish blog post – [CFP Open for ApacheCon NA 2022|https://docs.google.com/document/d/1Mrdk4q70dzC0KBpG4th9DT3j0tP5L3zQPjFCLVOgzRc/edit?usp=sharing].
Bug: WEBSITE - Logging in run.sh appears broken post CASSANDRA-17374
Status: Open
Priority: Normal
Created: 06/Apr/22 09:45

After CASSANDRA-17374, attempts to build/preview the website with {{run.sh}} returns:

{noformat}
environment: line 3: log_message: command not found
{noformat}

Note that I am able to stage the site locally but this may cause issues when the Jenkins builds the site for staging.

Steps to replicate:

{noformat}
$ git clone https://github.com/apache/cassandra-website.git
$ cd cassandra-website/
$ ./run.sh website preview
...
environment: line 3: log_message: command not found
{noformat}
Bug: CommitLog and SSTable entry structures/specs?
Status: Resolved
Priority: Normal
Resolution: Invalid
Created: 04/Apr/22 09:07
Resolved: 04/Apr/22 10:37

Hi! Is there a document or spec file that describes the format for reading/writing entries in the commitlog and in the sstables? I was thinking of something like a [Kaitai|https://kaitai.io/] struct or a spec file (like the [CQL Binary Protocol spec|https://github.com/apache/cassandra/blob/trunk/doc/native_protocol_v5.spec]). For example, it would say "each commitlog entry starts with a byte for write type, then 1 byte for the size of the keyspace name string ... etc."

If not, which serializers/deserialiers in the source code should I look into? So far, it looks like instances of the [Mutation class|https://sourcegraph.com/github.com/apache/cassandra/-/blob/src/java/org/apache/cassandra/db/Mutation.java] are what is being serialized, however, I still don't have a clear picture how they are serialized/deserialized to the extend to which I would be able to parse/write the byte arrays to and from the files.

I was also wondering if it be correct to say that each one entry in SSTables and CommitLogs are serialized and deserialized the same way?

This is just a challenge I am setting for myself to inspect/read/write commitlog and sstable entries. Thank you :)
Bug: Documentation needs updating in regards to EACH_QUORUM reads
Status: Resolved
Priority: Normal
Resolution: Invalid
Created: 01/Apr/22 16:29
Resolved: 01/Apr/22 16:33

According to https://issues.apache.org/jira/browse/CASSANDRA-9602 each quorum reads should be supported. However, the documentation here says that reads are not supported with each quorum:

[https://docs.datastax.com/en/cassandra-oss/3.x/cassandra/dml/dmlConfigConsistency.html|https://secureweb.jpmchase.net/readonly/https:/docs.datastax.com/en/cassandra-oss/3.x/cassandra/dml/dmlConfigConsistency.html]
Bug: Add EnableFlag to guardrails API
Status: Resolved
Priority: Low
Resolution: Fixed
Created: 11/Apr/22 18:05
Resolved: 06/May/22 20:11

Currently we only have a DisableFlag which, for guardrails where we're enabling or disabling a feature, leads to some pretty odd ergonomics in the code. For example:

 
{code:java}
public static final DisableFlag compactTablesEnabled =
new DisableFlag("compact_tables",
                state -> !CONFIG_PROVIDER.getOrCreate(state).getCompactTablesEnabled(),
                "Creation of new COMPACT STORAGE tables"); {code}
So far, the usage of these toggle flags appears to be skewed heavily towards the inverse, or an EnableFlag that'd look something like this:
{code:java}
public static final EnableFlag featureEnabled = new EnableFlag("feature_name", state -> CONFIG_PROVIDER.getOrCreate(state).getCompactTablesEnabled(), "Text for feature"); {code}
While it's a relatively small change it'll help tidy up some of the guardrails framework and make the logic clearer.
Bug: Check startup and setter validations for batch_size_fail_threshold
Status: Resolved
Priority: Low
Resolution: Fixed
Created: 20/May/22 21:18
Resolved: 28/Jun/22 22:28

During manual inspection it was noticed that batch_size_warn_threshold goes through checkValidForByteConversion, but this is not the case for batch_size_fail_threshold.

This ticket is opened to check whether this is a bug or not. 

If it is confirmed it is a bug it needs to be fixed and the ticket can be changed to type bug. It seems that this validation was added as part of CASSANDRA-15470 to 4.0+. Maybe we also need it in 3.0 and 3.11? 

CC [~adelapena]
Bug: Avoid Unnecessary Chunk Cache Usage During Compaction
Status: Open
Priority: Normal
Created: 01/Oct/20 22:09

We have at least some evidence from CASSANDRA-16036 that compaction can cause significant churn in the chunk cache for a mixed workloads. Conceptually, this makes sense, as the files compaction is scanning are destined for deletion. It seems like we could avoid most of the cache churn mess by having the {{ISSTableScanner}} implementations returned by {{SSTableReader}} during compaction use file handles that don't use {{CachingRebufferer}}. {{FileHandle.Builder#complete()}} already seems to roughly have the logic we would need to produce the correct (uncached) {{RebuffererFactory}}.

(NOTE: {{SSTableReader#getScanner(ColumnFilter, DataRange, SSTableReadsListener)}} is used on the read path, and we likely don't want to touch it here.)

Given that CASSANDRA-16036 settled on disabling the chunk cache by default in 4.0, CASSANDRA-15229 further segregates the negative effects of this, and it isn't entirely clear that the decompression/decryption cache is actually adding measurable value for any workload, this may not be a critical priority for 4.0.