Re: COPY и несуществующая директория = 500 Internal Server Error

Maxim Dounin mdounin at mdounin.ru
Mon Dec 30 22:52:06 UTC 2013


Hello!

On Tue, Dec 31, 2013 at 12:57:06AM +0400, Михаил Монашёв wrote:

> Здравствуйте, Maxim.
> 
> >> > То, что у тебя сломался open(), намекает на то, что в процессе
> >> > выполнения этого запроса кто-то удалил каталог.
> >> 
> >> Каталоги там никто не удаляет точно. Вся работа идёт через nginx, а он
> >> удалять  каталоги  не  умеет  и  на  встроенном перле у меня ничего не
> >> написано. И ошибка эта воспроизводится не всегда.
> 
> > Вообще-то, nginx удалять каталоги умеет, нужно просто правильно 
> > попросить.  Но это не твой случай, см. ниже.
> 
> Даже не пустые? ;-)

Легко, если не запрещено, см. 
http://nginx.org/r/min_delete_depth.

> >> 2013/12/29 14:00:55 [debug] 78336#0: *10484311 http copy from:
> >> "/opt2/beon/i41//43/96/1009643/avatars/9.gif"
> >> 2013/12/29 14:00:55 [debug] 78336#0: *10484311 http copy to:
> >> "/opt2/beon/i41/43/96/1009643/43/avatars/9.gif.tmp"
> >> 2013/12/29 14:00:55 [debug] 78336#0: *10484311 malloc: 0000000806E68000:65536
> >> 2013/12/29 14:00:55 [crit] 78336#0: *10484311 open()
> >> "/opt2/beon/i41/43/96/1009643/43/avatars/9.gif.tmp" failed (2: No
> >> such file or directory), client: 89.208.146.210, server:
> >> i41.beon.ru, request: "COPY
> >> http://b.i41.beon.ru/43/96/1009643/43/avatars/9.gif HTTP/1.1",
> >> host: "b.i41.beon.ru"
> 
> > Из вышепроцитированного более или менее очевидно, что копируют 
> > существующий файл, однако в несуществующий каталог.
> 
> Таки разглядел этот несуществующий каталог. Спасибо.
> 
> > Возврат  500 в подобной ситуации - не то чтобы лучшее из возможного,
> > но как минимум объясним.
> 
> Ну  раз  ошибки  нет  и  500 - правильный ответ, то тему можно считать
> закрытой.

Возможно, имеет смысл это место допилить, чтобы нужный каталог 
создавался.  E.g., так сейчас делает MOVE, и PUT при 
create_full_put_path.

Но в твоём случае это бы скорее усложнило поиск проблемы, чем 
наоборот.

> > IMHO, это классическая иллюстрация к соседнему треду про 
> > rewrite'ы.  :)
> 
> Эх,  если  б  всё  было  просто... :-) Да, сложность конфигов со всеми
> этими  заменами растёт экспоненциально и уже думаешь не как сделать, а
> как сделать, чтобы не вводить ещё один уровень сложности.

Ну ты, насколько я понимаю, извращаешься с целью не добавлять 
динамический бекенд.  Но когда сразу за rewrite'ами - динамический 
бекенд, то смысла портить себе жизнь - ну совсем мало.

-- 
Maxim Dounin
http://nginx.org/



Подробная информация о списке рассылки nginx-ru