[ 
https://issues.apache.org/jira/browse/CASSANDRA-15364?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

David Capwell updated CASSANDRA-15364:
--------------------------------------
    Reviewers: David Capwell, David Capwell  (was: David Capwell)
               David Capwell, David Capwell
       Status: Review In Progress  (was: Patch Available)

* As a general comment, almost every case I see where absolutePath.ifPresent is 
called is known to be a ADD or REMOVE so the lambda version could be replaced 
with .get() (style comment, feel free to ignore)

 * 
[https://github.com/apache/cassandra/compare/trunk...krummas:marcuse/15364#diff-d8721a4dd04f4f35b65e7edeb6c883f6R357]
 The makeRecord call above will do a listing (in make(Type, SSTable) method), 
so this change looks to be because deleteRecordFiles(LogRecord) no longer 
exists and was replaced by deleteRecordFiles(List<File>); LGTM

 * 
[https://github.com/apache/cassandra/compare/trunk...krummas:marcuse/15364#diff-d8721a4dd04f4f35b65e7edeb6c883f6R386]
 Is this to handle failure in the middle of the log (while deleting on commit 
we hard-stop in the middle, so recovery may see missing files)? Seems fine, was 
just curious if there was a different reason (there was a comment in the code 
about people copying tx files to different nodes, hence why I wanted to call 
out).

 * 
[https://github.com/apache/cassandra/compare/trunk...krummas:marcuse/15364#diff-2e4c884e6aace427bdb6b0a122164ce4R308-R328]
 Took a while to parse this change, so I am curious what was the motivation? 
Was it just to avoid File::getCanonicalPath? As far as I can tell 
Descriptor::fromFilenameWithComponent is only string parsing with a call to 
File::getCanonicalFile.
 While reading this change, what bothered me was the question "why is the file 
name a prefix" and I missed the comment in the javadoc which expresses that 
expectation ("absoluteFilePaths contains full file parts up to the component 
name", "up to" being the important part); the code before relied on 
Descriptor:fromFilename so didn't really care.

Overall, looks good to me; I want to do one more pass and test this, ETA EOD.

> Avoid over scanning data directories in LogFile.verify()
> --------------------------------------------------------
>
>                 Key: CASSANDRA-15364
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-15364
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Local/Compaction
>            Reporter: Marcus Eriksson
>            Assignee: Marcus Eriksson
>            Priority: Normal
>             Fix For: 3.0.x, 3.11.x, 4.x
>
>
> We currently list the data directory for every {{REMOVE}} record in the file 
> in {{LogFile.verify()}} - this can get very expensive during startup when we 
> call {{LogTransaction.removeUnfinishedLeftovers()}}. In 
> {{LogRecord.getExistingFiles(Set<String> absoluteFilePaths)}} we also fully 
> parse the file name of the sstables found, here we only need to prefix match.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to