nginx-0.8.34

Maxim Dounin mdounin на mdounin.ru
Чт Мар 4 03:43:09 MSK 2010


Hello!

On Wed, Mar 03, 2010 at 11:04:17PM +0300, Igor Sysoev wrote:

> On Wed, Mar 03, 2010 at 10:58:19PM +0300, Maxim Dounin wrote:
> 
> > Hello!
> > 
> > On Wed, Mar 03, 2010 at 10:48:10PM +0300, Igor Sysoev wrote:
> > 
> > > On Wed, Mar 03, 2010 at 10:46:05PM +0300, Igor Sysoev wrote:
> > > 
> > > > On Wed, Mar 03, 2010 at 09:36:56PM +0300, Vladimir Sopot wrote:
> > > > 
> > > > > Приветствую!
> > > > > 
> > > > > А для проблемки c memcached (http://www.lexa.ru/nginx-ru/msg32094.html) снова надо будет накатывать патч?
> > > > 
> > > > Пока да. Мне нужно
> > > > 1) воспроизвести ошибку на 0.6.14
> > > 
> > > Вернее, воспроизвести ту ошибку на 0.6.13, которая была пофикшена в 0.6.14.
> > 
> > Вроде ж я ещё тогда тест нарисовал и вроде даже ссылку на него 
> > давал, нет?
> > 
> > http://mdounin.ru/hg/nginx-tests/rev/25047dc6ae9b
> > 
> > Или ты обязательно хочешь с бесконечным циклом во writer'е?
> 
> Да, мне нужно убедиться, что твой патч фиксит обе баги.

Ну я вроде бы объяснил - это одна и та же бага, только результаты 
на выходе разные.  Бесконечный цикл возникает когда на выход 
отправляется буфер отрицательного размера.  А до кода чтения 
остатков trailer'а там вообще дело не доходит, он в 0.6.13 был 
правильный (почти - выход всё-таки лучше делать).

Но если очень хочется - почему нет?  Только в test suite я это 
включать не буду, он у меня глупый и SIGKILL'ом убежавшие 
процессы бить не умеет. :)

Тест прилагается.

На 0.6.13 даёт цикл:

2010/03/04 03:27:14 [debug] 45924#0: *1 memcached filter bytes:2006 size:4016 length:2015 rest:7
2010/03/04 03:27:14 [error] 45924#0: *1 memcached sent invalid trailer while reading upstream, client: 127.0.0.1, server: loc
alhost, URL: "/", upstream: "memcached://127.0.0.1:8081", host: "localhost"
2010/03/04 03:27:14 [debug] 45924#0: *1 http output filter "/?"
2010/03/04 03:27:14 [debug] 45924#0: *1 copy filter: "/?"
2010/03/04 03:27:14 [debug] 45924#0: *1 http postpone filter "/?" 080F19C8
2010/03/04 03:27:14 [debug] 45924#0: *1 http postpone filter out "/?"
2010/03/04 03:27:14 [debug] 45924#0: *1 write old buf t:0 f:0 00000000, pos 080F6400, size: 986 file: 0, size: 0
2010/03/04 03:27:14 [debug] 45924#0: *1 write new buf t:0 f:0 00000000, pos 080F67DA, size: -2 file: 0, size: 0
...
2010/03/04 03:27:14 [debug] 45924#0: *1 writev: 984 of 984
2010/03/04 03:27:14 [debug] 45924#0: *1 writev: 0 of 0
2010/03/04 03:27:14 [debug] 45924#0: *1 writev: 0 of 0
2010/03/04 03:27:14 [debug] 45924#0: *1 writev: 0 of 0
2010/03/04 03:27:14 [debug] 45924#0: *1 writev: 0 of 0
2010/03/04 03:27:14 [debug] 45924#0: *1 writev: 0 of 0
2010/03/04 03:27:14 [debug] 45924#0: *1 writev: 0 of 0
...

На 0.8.34 без патча - цикла нет, но есть ругань на invalid trailer 
при его дочитывании:

...
2010/03/04 03:31:22 [debug] 45970#0: *1 recv: eof:0, avail:4, err:0
2010/03/04 03:31:22 [debug] 45970#0: *1 recv: fd:8 4 of 7
2010/03/04 03:31:22 [error] 45970#0: *1 memcached sent invalid trailer while reading upstream, client: 127.0.0.1, server: loc
alhost, request: "GET / HTTP/1.0", upstream: "memcached://127.0.0.1:8081", host: "localhost"
...

На 0.8.34 с патчем - ни циклов, ни ругани.

Maxim Dounin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: memcached-fake-big.t
Type: application/x-troff
Size: 1942 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100304/f073856c/attachment.t>


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