<HTML><BODY>Hello, <br><br>sorry for the delayed reply and thank you for the feedback.<br>As Georgy had stated, fixed version was already pushed.<br><br>Regarding the commit message, I'm pretty sure you were wrong <br>about 2 and 4, whereas 3 is debatable. Thanks anyway though.<br><br><br><blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">
        Вторник, 17 сентября 2019, 15:18 +03:00 от Kirill Yukhin <kyukhin@tarantool.org>:<br>
        <br>
        <div id="">






<div class="js-helper js-readmsg-msg">
        <style type="text/css"></style>
        <div>
                
                
            <div id="style_15687227361866847222_BODY">Hello,<br>
<br>
On 17 Sep 11:23, Maria wrote:<br>
                                 > Method fio.mktree used to create given path<br>
      <br>
Nit: is used<br>
<br>
> unconditionally - without checking whether<br>
> it was a directory or something else. This<br>
<br>
Nit: if it was<br>
<br>
> way led to inappropriate error messages or<br>
<br>
Nit: This led<br>
<br>
> even inconsistent behavior. Now we check the<br>
<br>
Nit: Now check<br>
<br>
> type of a given path.<br>
> <br>
> Closes #4439<br>
> <br>
> Issue:<br>
> <a href="https://github.com/tarantool/tarantool/issues/4439" target="_blank">https://github.com/tarantool/tarantool/issues/4439</a><br>
> Branch:<br>
> <a href="https://github.com/tarantool/tarantool/tree/eljashm/gh-4439-error-handling-fio.mktree" target="_blank">https://github.com/tarantool/tarantool/tree/eljashm/gh-4439-error-handling-fio.mktree</a><br>
> ---<br>
>  src/lua/fio.lua       | 8 +++++++-<br>
>  test/app/fio.test.lua | 6 ++++++<br>
>  2 files changed, 13 insertions(+), 1 deletion(-)<br>
> <br>
> diff --git a/src/lua/fio.lua b/src/lua/fio.lua<br>
> index 321ae8b2d..a3a8ddc10 100644<br>
> --- a/src/lua/fio.lua<br>
> +++ b/src/lua/fio.lua<br>
> @@ -360,14 +361,19 @@ fio.mktree = function(path, mode)<br>
>      local current_dir = "/"<br>
>      for i, dir in ipairs(dirs) do<br>
>          current_dir = fio.pathjoin(current_dir, dir)<br>
> -        if not fio.stat(current_dir) then<br>
> +        local stat = fio.stat(current_dir)<br>
> +        if stat == nil then<br>
>              local st, err = fio.mkdir(current_dir, mode)<br>
>              if err ~= nil  then<br>
>                  return false, string.format("Error creating directory %s: %s",<br>
>                      current_dir, tostring(err))<br>
>              end<br>
> +        elseif not stat:is_dir() then<br>
> +            return false, string.format("Error creating directory %s: %s",<br>
> +                current_dir, errno.strerror(errno.EEXIST))<br>
>          end<br>
>      end<br>
> +<br>
>      return true<br>
<br>
This is useless change. Please discard.<br>
<br>
> diff --git a/test/app/fio.test.lua b/test/app/fio.test.lua<br>
> index be735e4f3..56c957d8a 100644<br>
> --- a/test/app/fio.test.lua<br>
> +++ b/test/app/fio.test.lua<br>
> @@ -468,3 +468,9 @@ fio.rmtree(1)<br>
>  fio.copytree(nil, nil)<br>
>  fio.copytree(nil, nil)<br>
>  test_run:cmd("clear filter")<br>
> +<br>
> +--<br>
> +-- gh-4439: mktree error handling fix - creation of existing file/directory<br>
> +--<br>
> +fio.mktree('/dev/null')<br>
> +fio.mktree('/dev/null/dir')<br>
> -- <br>
> 2.20.1 (Apple Git-117)<br>
<br>
Please update .result file as well.<br>
<br>
Otherwise, lgtm.<br>
<br>
--<br>
Regards, Kirill Yukhin<br>
<br>
</div>
            
        
                
        </div>

        
</div>


</div>
</blockquote>
<br>
<br>-- <br>Maria Khaydich<br></BODY></HTML>