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