[
https://issues.apache.org/jira/browse/CASSANDRA-15196?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Josh McKenzie updated CASSANDRA-15196:
--------------------------------------
Resolution: Not A Problem
Status: Resolved (was: Open)
Spoken w/Yifan offline; going to take a look at some of this w/the CDC
evolution that's ongoing.
> Refactor inheritance around CommitLogSegment management and allocation
> ----------------------------------------------------------------------
>
> Key: CASSANDRA-15196
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15196
> Project: Cassandra
> Issue Type: Improvement
> Components: Local/Commit Log
> Reporter: Joshua McKenzie
> Assignee: Josh McKenzie
> Priority: Normal
>
> Back when I wrote CASSANDRA-8844 and CASSANDRA-12148, a few things about the
> CommitLog stood out to me that I wasn't in love with. At the time I was much
> more of the mind of "When in Rome..." regarding some of our structures, our
> naming, and specifically regarding our penchant for inheritance vs.
> composition. Turns out I have an itch here I need to scratch.
> This patch refactors the CommitLog in a few key ways:
> * Removes inheritence for CommitLogSegmentManagerX, instead has a single
> CommitLogSegmentManager and a CommitLogSegmentAllocator interface
> ** This interface is implemented by CommitLogSegmentAllocatorStandard and
> CommitLogSegmentAllocatorCDC
> * Renames a few variables and methods within the segment manager to make
> their purpose and role more clear from names alone (hopefully):
> ** allocatingFrom --> activeSegment
> ** allocatingFrom() --> getActiveSegment()
> ** advanceAllocatingFrom() – switchToNewSegment()
> ** activeSegments --> unflushedSegments
> ** getActiveSegments --> getUnflushedSegments()
> ** awaitAvailableSegment(...) --> awaitSegmentAllocation(...)
> ** isStillAllocating() --> hasRoom()
> * Reorders some of the "allocation-and-compare-in-while-loop-decl) to more
> idiomatic style
> * Adds some comments to various under-documented methods, mostly related to
> CDC and timing
> As far as we are in the 4.0 testing, I don't expect this to hit pre 4.0.
> Given it's a relatively minor refactor in well-tested code, doesn't change
> functionality, and doesn't impact any of the publicly exposed APIs in the
> CommitLog ecosystem, I'd be comfortable with it going in a minor release
> after 4.0 is out. But I'm open to alternative viewpoints.
> Have run unit tests locally w/out issue on both regular and cdc-targets; need
> to get CI against the branch internally for full dtest run and I'll post when
> it's done. Just wanted to get visibility to this out there in case anyone was
> curious or thinking of working on the same thing.
> [ Link to branch on
> github|https://github.com/apache/cassandra/compare/trunk...josh-mckenzie:clean_cl_comp]
--
This message was sent by Atlassian Jira
(v8.20.1#820001)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]