Thanks, Paulo - I think I'm still trying to form a mental model of where
Sidecar's responsibilities start and end. It sounds like for this
proposal, it's scope is basically applying the "current" configuration
to the node(s), but the configuration management itself needs to be done
above Sidecar. Makes sense.
A couple questions below for my own learning, and a response as well...
On 3/18/2026 3:14 PM, Paulo Motta wrote:
Thanks for the feedback Joel! See follow-up below:
> * Authorization - What are the authorization controls.
Good call! This will use Sidecar's existing authorization mechanism
per HTTP endpoint. Two new permissions will be added:
CONFIGURATION:READ and CONFIGURATION:MODIFY to control reading or
updating configs. I've updated the doc with a new section about
authorization.
Is there a write-up somewhere of how Sidecar auth works end-to-end?
> * Integrity - I see you're using hashes for conflict detection. Have you
considered using them as integrity checks as well: e.g., to guarantee
the configuration deployed for the node/instance to load at runtime is
the same configuration computed by the configuration manager (I think
that's the right component)?
The deployed configuration is guaranteed to be the same configuration
computed by the configuration manager, since the runtime configuration
is always refreshed during instance startup. If the runtime
configuration is corrupted it would be overwritten by the recomputed
config. Let me know if this cover the scenario you have in mind or if
I missed something.
I guess I was thinking a little beyond the scope of this change, to: how
does the node know that the configuration hasn't been altered from what
it's intended to be, regardless of whether that's through cosmic ray
flipping a bit, or a misbehaving file system corrupting bytes, or manual
modification? With the introduction of hashes, you may have a path
towards hardening this by enabling the node to validate the integrity of
its configuration at runtime, which will be more useful as Sidecar makes
automated deployments of configuration easier. Color me paranoid.
But, I acknowledge this is outside the scope of this CEP.
> * Rollback/forward - If I push a bad configuration change, how do I as
the the administrator respond to that?
Change tracking is explicitly not a goal of this CEP to keep the scope
limited. When a bad configuration is pushed, the operator would need
to manually revert by submitting another PATCH request undoing the bad
configuration. An external RCS would need to be used to keep track of
config history if needed. I've added a new future work entry to
support change tracking natively. I've also added an Operational Guide
section with an overview of how this is expected to be used. Let me
know if this makes sense.
Thanks so much for doing that: it's really helpful to talk about how the
user will work with the feature up-front.
Not directly related: in that section it says "Sidecar does not depend
on Cassandra being running", but in the auth section it says
"Permissions are resolved from Sidecar's
|sidecar_internal.role_permissions_v1| tables". Can Sidecar access
tables on the node directly, without going through the main Cassandra
process?
Thanks again -- Joel.
On Tue, 17 Mar 2026 at 17:04 Joel Shepherd <[email protected]> wrote:
Hi Paulo - Interesting CEP, and potentially very useful: thanks!
I was wondering about several things as I was reading through it:
* Authorization - Particularly for operations that mutate
configuration (either in the store or at run-time for the node).
What are the authorization controls.
* Integrity - I see you're using hashes for conflict detection.
Have you considered using them as integrity checks as well: e.g.,
to guarantee the configuration deployed for the node/instance to
load at runtime is the same configuration computed by the
configuration manager (I think that's the right component)? This
would be a guard against bugs, network gremlins, file system
gremlins, etc., quietly corrupting the configuration that the node
will eventually read.
* Visibility - As an 'administrator' how do I determine how much
of my cluster is running on the latest configuration, and which
nodes specifically aren't? Is it up to me to implement that
monitoring?
* Rollback/forward - If I push a bad configuration change, how do
I as the the administrator respond to that? For example, is there
an assumption that I'll be managing my configuration in a RCS
somewhere and will be expected to quickly retrieve a known-good
older revision from it and push it through sidecar? It might be
helpful to have a "user experience" section in the CEP to describe
how you envision users managing their cluster's configuration
through this tool: what they're responsible for, what the tool is
responsible for.
Thanks -- Joel.
On 3/17/2026 9:32 AM, Paulo Motta wrote:
Hi everyone,
I'd like to propose CEP-62: Cassandra Configuration Management
via Sidecar for discussion by the community.
CASSSIDECAR-266[1] introduced Cassandra process lifecycle
management capabilities to Sidecar, giving operators the ability
to start and stop Cassandra instances programmatically. However,
Sidecar currently has no way to manipulate the configuration
files that those instances consume at startup.
Many Cassandra settings (memtable configuration, SSTable
settings, storage_compatibility_mode) cannot be modified at
runtime via JMX/CQL and must be set in cassandra.yaml or JVM
options files, requiring a restart to take effect. Managing these
files manually or through custom tooling is cumbersome and lacks
a stable API.
This CEP extends Sidecar's lifecycle management by adding
configuration management capabilities for persisted configuration
artifacts. It introduces a REST API for reading and updating
cassandra.yaml and JVM options, a pluggable ConfigurationProvider
abstraction for integration with centralized configuration
systems (etcd, Consul, or custom backends), and version-aware
validation to prevent startup failures.
This CEP also serves as a prerequisite for future Cassandra
upgrades via Sidecar. For example, upgrading from Cassandra 4 to
Cassandra 5 requires updating storage_compatibility_mode in
cassandra.yaml. The configuration management capabilities
introduced here will enable Sidecar to orchestrate such upgrades
by updating configuration artifacts alongside binary version changes.
The CEP is linked here:
https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-62%3A+Cassandra+Configuration+Management+via+Sidecar
Looking forward to your feedback!
Thanks,
Paulo
[1] - https://issues.apache.org/jira/browse/CASSSIDECAR-266