Doug Rohrer cassandra-sidecar all time


 9 Collaborator
Francisco Guerrero , Yifan Cai , Dinesh Joshi , Saranya Krishnakumar , Yifan , Saranya , Francisco , Doug , Dinesh

 8 Patch
c824d112de2c92d180a90a1830108d225f45dc23, 529171b1f6dee277a9087eb9da7242ce17873643, 91f31399042a444c2ccfc55d28d64bfe36a72a74, 4408b9d3ec32c9243484258135017ce9c4804b2a, a3c14fa5a16bab290ced4b22d861a79b74330e1e, 792db56e57cb8892aa1dfb50e6124a38f19650de, 38cdacb2e7418e2aefbcffb1754dcd324c46028d, 02cc6548f291528e9749a51d103463f9552f4b4e

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