[ 
https://issues.apache.org/jira/browse/LOG4J2-3452?focusedWorklogId=894744&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-894744
 ]

ASF GitHub Bot logged work on LOG4J2-3452:
------------------------------------------

                Author: ASF GitHub Bot
            Created on: 08/Dec/23 15:47
            Start Date: 08/Dec/23 15:47
    Worklog Time Spent: 10m 
      Work Description: stefanvodita commented on PR #809:
URL: https://github.com/apache/logging-log4j2/pull/809#issuecomment-1847413956

   Just to check that I understand the problem - is there an exception you are 
encountering, which we could have caught when calling 
`Files.createDirectories(dir.toPath());`? If you have a test that reproduces 
the issue, that would be very helpful.




Issue Time Tracking
-------------------

    Worklog Id:     (was: 894744)
    Time Spent: 20m  (was: 10m)

> Race condition in FileUtils.mkdir()
> -----------------------------------
>
>                 Key: LOG4J2-3452
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-3452
>             Project: Log4j 2
>          Issue Type: Bug
>    Affects Versions: 2.13.0
>            Reporter: Stefan Vodita
>            Priority: Major
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> I noticed an error like:
> {{ERROR Unable to create file ...}}
> {{at org.apache.logging.log4j.core.util.FileUtils.mkdir(FileUtils.java:118)}}
>  
> The error could be due to a race condition:
> {{Thread A: dir.exists() -> false}}
> {{Thread B: dir.exists() -> false}}
> {{Thread B: dir.mkdirs() -> succeeds}}
> {{Thread A: dir.mkdirs() -> throws exception}}
>  
> I wrote a unit test which reproduces the error:
> {{public void testMkdirConcurrent() throws IOException {}}
> {{        final File file = new File("target/test/test");}}
> {{        for (int i = 0; i < 1000; i++) {}}
> {{            new Thread(() -> assertDoesNotThrow(() -> FileUtils.mkdir(file, 
> true))).start();}}
> {{        org.apache.commons.io.FileUtils.deleteDirectory(file);}}
> {{}}}
>  
> As a fix, we can use {{{}Files.createDirectories(){}}}, since this does the 
> existence check and creation as one atomic operation.
>  
> I will create a PR with the unit test and a fix.
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to