-
Notifications
You must be signed in to change notification settings - Fork 0
Add Ansible automation section for Cassandra installation and updated Driver docs #89
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
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.
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. |
There was a problem hiding this comment.
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) | |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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
Addressed FeedbackThanks for the review! I have addressed all the comments: Style Guide FixesFixed contractions to use formal language:
Additional UpdatesAlso added new documentation for a LWT edge case (mixing LWT with non-LWT operations):
|
Add comprehensive documentation for installing Apache Cassandra using the AxonOps Ansible Collection, including:
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