You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Andrés Beck-Ruiz (Jira)" <ji...@apache.org> on 2025/09/19 15:03:00 UTC
[jira] [Commented] (CASSSIDECAR-266) Add lifecycle APIs for starting and stopping Cassandra
[ https://issues.apache.org/jira/browse/CASSSIDECAR-266?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18021437#comment-18021437 ]
Andrés Beck-Ruiz commented on CASSSIDECAR-266:
----------------------------------------------
CI: https://app.circleci.com/pipelines/github/andresbeckruiz/cassandra-sidecar/4/workflows/0759ceb8-dc20-48e7-8922-3037037129db
> Add lifecycle APIs for starting and stopping Cassandra
> ------------------------------------------------------
>
> Key: CASSSIDECAR-266
> URL: https://issues.apache.org/jira/browse/CASSSIDECAR-266
> Project: Sidecar for Apache Cassandra
> Issue Type: New Feature
> Components: Rest API
> Reporter: Andrés Beck-Ruiz
> Assignee: Andrés Beck-Ruiz
> Priority: Normal
> Time Spent: 1h 10m
> Remaining Estimate: 0h
>
> We would like to implement APIs to safely stop, start, and restart local connected Cassandra instances through Cassandra Sidecar in a generic way. This could lead to future work to implement Cassandra native rolling restarts in Sidecar and automate the Cassandra upgrade process.
> We propose implementing an {{AbstractLifecycleOperationsHandler}} interface that defines start, stop, restart, and status endpoints to allow Sidecar operators to implement their own lifecycle handlers, depending on how they host their Cassandra processes. To provide a default implementation, we would create a {{LocalProcessLifecycleOperationsHandler}} to implement this interface and provide lifecycle operations for OS native Cassandra processes. This could be defined as the default lifecycle manager in {{{}sidecar.yaml{}}}, disabled by default.
> We propose the following APIs, leveraging the {{OperationalJob}} interface to provide support for async non-blocking jobs. We will use the existing implemented {{OperationalJobRoute}} , {{/api/v1/cassandra/operational-jobs/:operationId}} , to track the status of these jobs. These endpoints will live under a {{/node}} path to specify operations on the local connected Cassandra instance, allowing for future development of lifecycle endpoints for an entire Cassandra cluster:
> h5. *GET /api/v1/cassandra/operations/lifecycle/node/status*
> Gets the status of whether the local Cassandra process is running.
> h6. Response
> * 200 Ok
> ** {{cassandra_running :: bool}}
> * 500 Internal Sever Error
> ** {{error :: string}}
> h5. *POST /api/v1/cassandra/operations/lifecycle/node/start*
> Start the connected Cassandra process. This request will succeed if the process is already started to ensure idempotency.
> h6. Parameters
> * {{block :: boolean (default False)}}
> h6. Response
> * 202 Accepted
> ** {{operationId :: string}}
> * 500 Internal Sever Error
> ** {{error :: string}}
> h5. *POST /api/v1/cassandra/operations/lifecycle/node/stop*
> Stop the connected Cassandra process after a pluggable health check passes. This request will succeed if the process is already stopped to ensure idempotency.
> h6. Parameters
> * {{block :: boolean (default False)}}
> * {{skipHealthCheck :: boolean (default False)}}
> h6. Response
> * 202 Accepted
> ** {{operationId :: string}}
> * 412 Precondition Failed
> ** {{error :: string (health check fails)}}
> * 500 Internal Sever Error
> ** {{error :: string}}
> h5. *POST /api/v1/cassandra/operations/lifecycle/node/restart*
> Restart the connected Cassandra process after a pluggable health check passes.
> h6. Parameters
> * {{block :: boolean (default False)}}
> * {{skipHealthCheck :: boolean (default False)}}
> h6. Response
> * 202 Accepted
> ** {{operationId :: string}}
> * 412 Precondition Failed
> ** {{error :: string (health check fails)}}
> * 500 Internal Sever Error
> ** {{error :: string}}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org