Skip to content

Conversation

belliottsmith
Copy link
Contributor

Thanks for sending a pull request! Here are some tips if you're new here:

  • Ensure you have added or run the appropriate tests for your PR.
  • Be sure to keep the PR description updated to reflect all changes.
  • Write your PR title to summarize what this PR proposes.
  • If possible, provide a concise example to reproduce the issue for a faster review.
  • Read our contributor guidelines
  • If you're making a documentation change, see our guide to documentation contribution

Commit messages should follow the following format:

<One sentence description, usually Jira title or CHANGES.txt summary>

<Optional lengthier description (context on patch)>

patch by <Authors>; reviewed by <Reviewers> for CASSANDRA-#####

Co-authored-by: Name1 <email1>
Co-authored-by: Name2 <email2>

The Cassandra Jira

ifesdjeen and others added 4 commits September 18, 2025 15:49
To support recovering a node that has lost some of its local transaction log, introduce rebootstrap and unsafe bootstrap modes, where Accord ensures no responses are produced for transactions the node cannot be certain it had not previously answered.

patch by Benedict and Alex Petrov for CASSANDRA-20908
Also Improve:
 - Searchable system_accord_debug.txn

patch by Benedict; reviewed by Aleksey Yeschenko for CASSANDRA-20899
 - Integrate txn_blocked_by deadline and depth filter with execution logic, to ensure we terminate promptly and get a best effort reply
…irtual tables from any node in the cluster

patch by Benedict; reviewed by Alex Petrov for CASSANDRA-20900
/**
* Rebinds matching columns into a new filter; ignores any missing but fails if any are a different type
*/
public abstract ColumnFilter rebind(TableMetadata newTable);
Copy link
Contributor

Choose a reason for hiding this comment

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

Seems like a dangerous feature to generally expose. Could we add an assert that this is for virtual tables only, and add a comment that this is not for general use?

RegularAndStaticColumns fetched = this.queried == this.fetched ? queried : ColumnFilter.rebind(newTable, this.fetched);
SortedSetMultimap<ColumnIdentifier, ColumnSubselection> subSelections = this.subSelections;
if (subSelections != null)
subSelections = TreeMultimap.create(subSelections);
Copy link
Contributor

Choose a reason for hiding this comment

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

Could you elaborate, why we need to re-wrap this? I thought this should be effectively immutable.

// we don't add static columns as they can't be modelled correctly with the insertion of a prefix partition column
for (ColumnMetadata cm : local.regularColumns())
{
if (!cm.isComplex())
Copy link
Contributor

Choose a reason for hiding this comment

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

Should e maybe throw in case of complex columns? I know we're not using them anywhere, but maybe worth to throw in case we have intention for this to be used elsewhere.

@ifesdjeen
Copy link
Contributor

I've also pushed a test; please feel free to remove on commit.

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.

2 participants