c824d112de2c92d180a90a1830108d225f45dc23 | Author: Doug Rohrer <682821+JeetKunDoug@users.noreply.github.com>
| 2024-03-21 13:27:31-04:00
CASSANDRASC-106: Add restore task watcher to report long running tasks (#104)
Patch by Doug Rohrer; Reviewed by Yifan Cai, Francisco Guerrero for CASSANDRASC-106
529171b1f6dee277a9087eb9da7242ce17873643 | Author: Francisco Guerrero <frankgh@apache.org>
| 2023-12-11 13:49:36-08:00
CASSANDRASC-87: Add JMX health checks during the periodic health checks
In this commit, we add health checks based on the JMX connectivity to the managed
Cassandra instances. Additionally, we construct the NodeSettings object based on
JMX. This allows the Sidecar process to be able to determine an adapter for the
node even if the node is in joining state, or its binary port has been disabled.
Co-authored-by: Doug Rohrer <doug@therohrers.org>
Co-authored-by: Francisco Guerrero <frankgh@apache.org>
Patch by Doug Rohrer, Francisco Guerrero; Reviewed by Yifan Cai for CASSANDRASC-87
91f31399042a444c2ccfc55d28d64bfe36a72a74 | Author: Doug Rohrer <doug@therohrers.org>
| 2023-10-19 21:10:18-04:00
CASSANDRASC-79: Sidecar should be able to load metadata even if the local instance is unavailable
- Add SidecarLoadBalancingPolicy to connect to additional nodes beyond local
- Enable Gossip by default (the client really needs it on)
- Retry keyspace creation if it fails
- Use shared executor/hashedwheeltimer netty options for all tests.
This restores the previous behavior from when the NettyOptions parameter
was first added, although we're not sure exactly why it's helpful, or if
it is at all.
- Also store test results as artifacts
- Fix multi-threaded access issues with synchronized for now. Also fix an issue where the host couldn't be found if it wasn't using 9042 for the port.
- Prevent spurious reconnects of ignored nodes on onUp events
- Use `QueryOptions#setReprepareOnUp(false)` to prevent an onUp event from reconnecting to a node we don't want a connection with.
- Integration test for the load balancing polilcy + Adds fixes for issues found while testing.
- Use `ClusterUtils.awaitRingStatus` for retries when waiting for a node to shut down
Patch by Doug Rohrer; Reviewed by Francisco Guerrero, Yifan Cai for CASSANDRASC-79
4408b9d3ec32c9243484258135017ce9c4804b2a | Author: Doug Rohrer <doug@therohrers.org>
| 2023-09-22 10:35:54-04:00
CASSANDRASC-75: Shade Jackson completely to prevent incompatibility issues
Before, we we shading almost all of Jackson but left the annotations unshaded/relocated. However, this causes problems
in older Spark environments where the annotations in the class path don’t quite match what the other shaded parts of
Jackson expect (missing classes being the most serious issue). This can cause the library to fail on certain Spark versions.
This commit removes the exclusion of the annotations project from shading in the vertx-client-shaded project.
- Additionally, tweaked CircleCI settings so that we don't run out of virtual memory and see the OS OOM kill the test exexutor.
Patch by Doug Rohrer; Reviewed by Dinesh Joshi, Francisco Guerrero, Yifan Cai for CASSANDRASC-75
a3c14fa5a16bab290ced4b22d861a79b74330e1e | Author: Doug Rohrer <doug@therohrers.org>
| 2023-06-14 18:40:41-04:00
CASSANDRASC-55: Extract the in-jvm dtest template for use in other projects
This also required moving some additional classes to `common` so they
could be used in the new test-framework project.
Patch by Doug Rohrer; Reviewed by Dinesh Joshi, Francisco Guerrero, Yifan Cai for CASSANDRASC-55
792db56e57cb8892aa1dfb50e6124a38f19650de | Author: Doug Rohrer <doug@therohrers.org>
| 2023-06-05 09:18:21-04:00
CASSANDRASC-51: Use in-jvm dtest framework for integration tests
This commit replaces the existing TestContainers-based test template
with one that leverages Cassandra's in-jvm dtest framework now that it
has JMX support. This will allow for more complete testing of endpoints,
especially when those endpoints need to react to cluster changes like
moves, joins, and leaves.
patch by Doug Rohrer; reviewed by Dinesh Joshi, Yifan Cai, Francisco Guerrero, Bernardo Botella Corbi for CASSANDRASC-51
38cdacb2e7418e2aefbcffb1754dcd324c46028d | Author: Dinesh Joshi <djoshi@apache.org>
| 2023-05-19 15:34:05-07:00
CEP-28: Implement Bulk API endpoints and introduce the Sidecar Client to Support Cassandra Analytics
This commit implements the remaining endpoints needed to perform Bulk Analytics operations that allow
reading and writing data from Cassandra in Bulk. The new endpoints include:
- Endpoint to create snapshots
- Endpoint to clear a snapshot
- Endpoint to upload SSTable components
- Endpoint to clean up uploads for SSTable components
- Endpoint to import SSTable components
- Endpoint to retrieve gossip info
- Endpoint to retrieve the time skew for the server
- Endpoint to retrieve the ring information
Sidecar Client
Introduces the fully featured sidecar client to access Cassandra Sidecar endpoints.
It offers support for retries and Sidecar instance selection policies. The client
project itself is technology-agnostic, but we provide a vertx implementation for
the `HttpClient`. The Sidecar vertx-client can be published as a shaded-jar to be
consumed by clients where the dependencies can cause issues, especially in environments
where the dependencies are not always controlled by the consumers (for example Spark).
Patch by Doug, Francisco, Saranya, Yifan, Dinesh; reviewed by Dinesh Joshi and Yifan Cai for CASSANDRA-16222
Co-authored-by: Saranya Krishnakumar <saranya_k@apple.com>
Co-authored-by: Yifan Cai <ycai@apache.org>
Co-authored-by: Francisco Guerrero <francisco.guerrero@apple.com>
Co-authored-by: Doug Rohrer <drohrer@apple.com>
Co-authored-by: Dinesh Joshi <djoshi@apache.org>
02cc6548f291528e9749a51d103463f9552f4b4e | Author: Francisco Guerrero <francisco.guerrero@apple.com>
| 2022-11-02 12:54:54-07:00
CASSANDRASC-47: Introduce JMX foundation in Sidecar
In this commit, we introduce the JMX foundation in Sidecar to enable the ability to communicate
with the Cassandra process. This commit adds new configuration parameters to configure the
a `org.apache.cassandra.sidecar.common.JmxClient`. This client is available as part of the Cassandra
delegate.
A new interface is introduced and exposed through the `org.apache.cassandra.sidecar.common.ICassandraAdapter`.
The new interface `StorageOperations` is intended to interface with the Cassandra StorageService.
This commit provides an example implementation of the `takeSnapshot` method, which is also found
in the Cassandra code base. This should allow us to interact with the Cassandra process to create
snapshots.
A fix is required in the `CassandraSidecarDaemon` class, where the `healthCheck` runs the first time
only after the configured health check frequency (millis) has passed. This causes issues in the unit
tests as well as the actual execution of the service, as the `adapter` will be `null` until the first
health check is performed. To fix this issue, we perform a health check right after the server
successfully starts up.
Additional integration tests are added for testing the JMX integration with Cassandra. In the test,
we spin up a new Cassandra container using `testcontainers` and we perform validation against the
StorageService in Cassandra.
Co-authored-by: Doug Rohrer <drohrer@apple.com>
patch by Francisco Guerrero, Doug Rohrer; reviewed by Yifan Cai, Dinesh Joshi for CASSANDRASC-47