Skip to content

Conversation

@millerjp
Copy link
Contributor

@millerjp millerjp commented Dec 26, 2025

Add comprehensive documentation for installing Apache Cassandra using the AxonOps Ansible Collection, including:

  • Production-grade Cassandra deployment (standalone, without AxonOps)
  • Optional AxonOps monitoring integration (SaaS or self-hosted)
  • Multi-environment structure with hierarchical group_vars
  • Secrets management with Ansible Vault
  • SSL/TLS configuration for dev and production
  • Makefile-based workflow for consistent deployments
  • Rolling restart and upgrade procedures
  • Reference to AxonOps Cassandra Lab as ready-to-clone example
  • Pointer to Chef cookbook alternative

Also updates installation methods comparison table to recommend Ansible for production cluster deployments.

Added more examples and information to the getting started section of the drivers

Add comprehensive documentation for installing Apache Cassandra using the
AxonOps Ansible Collection, including:

- Production-grade Cassandra deployment (standalone, without AxonOps)
- Optional AxonOps monitoring integration (SaaS or self-hosted)
- Multi-environment structure with hierarchical group_vars
- Secrets management with Ansible Vault
- SSL/TLS configuration for dev and production
- Makefile-based workflow for consistent deployments
- Rolling restart and upgrade procedures
- Reference to AxonOps Cassandra Lab as ready-to-clone example
- Pointer to Chef cookbook alternative

Also updates installation methods comparison table to recommend Ansible
for production cluster deployments.
@millerjp millerjp requested a review from hshimizu December 26, 2025 06:43
@millerjp millerjp changed the title Add Ansible automation section for Cassandra installation Add Ansible automation section for Cassandra installation and updated Driver docs Dec 26, 2025
Updated C#, C++, Ruby, and PHP driver links to use correct DataStax
GitHub repositories. Also updated Ruby and PHP status to Maintenance.
- Add Java examples to Contact Points, Authentication, SSL/TLS sections
- Add Java examples to all Prepared Statements anti-patterns
- Add Java example to Error Handling section
- Add comprehensive Java Driver Configuration System section covering
  Typesafe Config, HOCON, execution profiles, and programmatic config
- Driver auto-detects local DC from first contact point that responds
- Explicit local DC only needed when using contact points from multiple DCs
- Updated warning to info box explaining this behavior
- Updated code comments to reflect auto-detection
- Updated common mistakes table
(1 connection for thousands of concurrent queries)
```

This means you **don't need large connection pools**. A single connection per host is often sufficient, and the driver manages this automatically.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the language must be kept to scientific, engineering standards - so no "don't" - use "do not".

|---------|---------|----------|
| Multi-DC contact points without explicit local DC | Non-deterministic DC selection based on first responder | Set explicit `local_dc` or use contact points from single DC only |
| Using Round Robin | Ignores data locality, higher latency | Use Token-Aware + DC-Aware |
| Hardcoding contact points from one DC | If that DC is down, can't bootstrap | Include contact points from multiple DCs (with explicit local DC) |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can't -> cannot


**Python and the GIL**: Python's Global Interpreter Lock (GIL) means only one thread can execute Python bytecode at a time. In synchronous code, when your application waits for a Cassandra query to return, that thread is blocked and cannot process other requests. With async/await, the event loop can handle thousands of concurrent requests on a single thread by switching between tasks during I/O waits. This is particularly critical for web frameworks like FastAPI and aiohttp where blocking the event loop freezes your entire application.

**Java and Thread Efficiency**: While Java doesn't have a GIL, creating threads is expensive (typically 1MB of stack memory each). Synchronous drivers require one thread per concurrent query, limiting scalability. Async operations with `CompletionStage` allow a small thread pool to handle many concurrent requests, reducing memory overhead and context-switching costs. This is especially valuable in reactive frameworks like Spring WebFlux and Vert.x.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

doesn't -> does not

- Replace contractions with formal language per style guide:
  - "don't" → "do not"
  - "can't" → "cannot"
  - "doesn't" → "does not"

- Add documentation for LWT/non-LWT mixing issues:
  - New section in lightweight-transactions.md explaining why mixing
    LWT with non-LWT operations is unsafe (Paxos clock conflicts)
  - New troubleshooting page for LWT errors with diagnostics and
    resolution steps
  - Update common-errors index with LWT error category

- Add Common Errors section to Cassandra troubleshooting navigation
@millerjp
Copy link
Contributor Author

millerjp commented Jan 3, 2026

Addressed Feedback

Thanks for the review! I have addressed all the comments:

Style Guide Fixes

Fixed contractions to use formal language:

Location Before After
drivers/index.md:45 don't do not
drivers/index.md:686 can't cannot
drivers/index.md:944 doesn't does not

Additional Updates

Also added new documentation for a LWT edge case (mixing LWT with non-LWT operations):

  1. Updated lightweight-transactions.md - Added "Mixing LWT and Non-LWT Operations" section explaining why this is unsafe (Paxos uses a separate hybrid-logical clock)

  2. Created new troubleshooting page - troubleshooting/common-errors/lightweight-transactions.md with:

    • Symptoms, diagnostics, and resolution for LWT/non-LWT mixing issues
    • Paxos contention error handling
    • LWT timeout behavior guidance
  3. Updated navigation - Added the Common Errors section to Cassandra troubleshooting in mkdocs.yml

@hshimizu hshimizu merged commit c7d2fc7 into master Jan 3, 2026
@millerjp millerjp deleted the feature/ansible branch January 5, 2026 06:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants