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)