Jose Armando Garcia Sancio created KAFKA-12576:
--------------------------------------------------

             Summary: Renaming log segment should not result in a copy
                 Key: KAFKA-12576
                 URL: https://issues.apache.org/jira/browse/KAFKA-12576
             Project: Kafka
          Issue Type: Bug
          Components: log, log cleaner
            Reporter: Jose Armando Garcia Sancio
            Assignee: Jose Armando Garcia Sancio


{{FileRecords::renameTo}} uses {{Utils::atomicMoveWithFallback}} to rename the 
backing File. The implementation for {{Utils::atomicMoveWithFallback}} will 
perform a non-atomic move if the atomic move fails. This can result in the 
content of the file being copied.

{{Log}} uses {{FileRecords::renameTo}} indirectly through 
{{LogSegment::changeFileSuffixes}} while holding the {{Log}} lock to delete 
segment and to replace clean segments.

This can cause the Kafka process to perform an expensive copy operation while 
holding a highly contended lock.

Given how {{Utils::atomicMoveWithFallback}} works there is also an issue where 
{{File file}} and {{FileChannel channel}} point to different file. Meaning 
writes to {{channel}} are not reflected in the file represented by {{file}}.

{{FileRecors::renameTo}} should be change to use only an atomic move and to 
fail if it cannot.



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

Reply via email to