[ https://issues.apache.org/jira/browse/CASSANDRA-15196?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Josh McKenzie reassigned CASSANDRA-15196: ----------------------------------------- Assignee: Josh McKenzie (was: Joshua McKenzie) > 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.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org