Spanner Cassandra ITs - Fix non-idempotent Cassandra schema creation#3409
Spanner Cassandra ITs - Fix non-idempotent Cassandra schema creation#3409darshan-sj merged 1 commit intoGoogleCloudPlatform:mainfrom
Conversation
Summary of ChangesHello @darshan-sj, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request enhances the robustness of Cassandra-based integration tests by preventing Highlights
Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
This PR addresses intermittent AlreadyExistsException failures in Cassandra-based integration tests (specifically CassandraAllDataTypesIT).
Example: https://github.com/GoogleCloudPlatform/DataflowTemplates/actions/runs/22293136720/job/64485274459?pr=3380 https://github.com/GoogleCloudPlatform/DataflowTemplates/actions/runs/22366068580/job/64734193159
The issue stems from the interaction between the CassandraResourceManager's retry policy (via dev.failsafe) and non-idempotent CSQL statements. When Cassandra is under load, a CREATE TABLE statement may succeed on the server but fail to return a response to the client within the timeout window. Failsafe then triggers a retry, which fails immediately because the table was successfully created in the first attempt.
Changes
Updated the CSQL resource files to use IF NOT EXISTS for all CREATE TABLE statements. Ensures that schema setup is idempotent, allowing the CassandraResourceManager to safely retry without failing the test suite.
Unlike CREATE TABLE statements, INSERT statements in Casandra are natively upserts and doesn't cause errors on retry.