[Erlang] Ошибка при работе с RabbitMq
От: -Cheese-  
Дата: 20.01.15 12:18
Оценка:
Всем привет!
Помогите плиз найти причину ошибки в приложении...
Суть проблемы в следующем. Есть самописный велосипед для работы с очередью в режиме rpc.
Сообщения шлются в очередь, указывается для них correlation_id и ответная очередью Ответную очередь я создаю в отдельном потоке и подписываюсь для вычитки ответов с помощью basic.consume.
Иногда появляются ситуации (причину установить пока не могу), когда я вижу сообщения об ошибке следующего вида (см. ниже Ошибка 1). И после этого где-то с 50% запросов начинает творится что-то неясное (см Ошибка 2).
Натолкните плиз на мысль в какую сторону копать.


Ошибка 1


=ERROR REPORT==== 20-Jan-2015::13:56:22 ===
** Generic server <0.83.0> terminating
** Last message in was {consumer_call,
                           {'basic.deliver',
                               <<"amq.ctag-AUQbOnN34dHwt-KDOHhyVQ">>,1,false,
                               <<>>,<<"RespTest">>},
                           {amqp_msg,
                               {'P_basic',undefined,undefined,undefined,
                                   undefined,undefined,
                                   <<"b7d000eb-f446-4ef2-b008-dc9c19e778eb">>,
                                   undefined,undefined,undefined,undefined,
                                   undefined,undefined,undefined,undefined},
                               <<0,101,0,0,0,......,205,205,219,213>>}}
** When Server state == {state,amqp_selective_consumer,
                            {state,
                                {dict,0,16,16,8,80,48,
                                    {[],[],[],[],[],[],[],[],[],[],[],[],[],
                                     [],[],[]},
                                    {{[],[],[],[],[],[],[],[],[],[],[],[],[],
                                      [],[],[]}}},
                                undefined,
                                {dict,0,16,16,8,80,48,
                                    {[],[],[],[],[],[],[],[],[],[],[],[],[],
                                     [],[],[]},
                                    {{[],[],[],[],[],[],[],[],[],[],[],[],[],
                                      [],[],[]}}},
                                none}}
** Reason for termination == 
** unexpected_delivery_and_no_default_consumer

=CRASH REPORT==== 20-Jan-2015::13:56:22 ===
  crasher:
    initial call: gen:init_it/6
    pid: <0.83.0>
    registered_name: []
    exception exit: unexpected_delivery_and_no_default_consumer
      in function  gen_server2:terminate/3 
    ancestors: [<0.82.0>,<0.75.0>,<0.71.0>,<0.70.0>,amqp_sup,<0.68.0>]
    messages: []
    links: [<0.82.0>]
    dictionary: [{process_name,
                      {amqp_gen_consumer,
                          {<<"client 192.0.2.15:50205 -> 192.61.128.43:5672">>,
                           1}}}]
    trap_exit: false
    status: running
    heap_size: 987
    stack_size: 27
    reductions: 525
  neighbours:

=SUPERVISOR REPORT==== 20-Jan-2015::13:56:22 ===
     Supervisor: {<0.82.0>,amqp_channel_sup}
     Context:    child_terminated
     Reason:     unexpected_delivery_and_no_default_consumer
     Offender:   [{pid,<0.83.0>},
                  {name,gen_consumer},
                  {mfargs,
                      {amqp_gen_consumer,start_link,
                          [amqp_selective_consumer,[],
                           {<<"client 192.0.2.15:50205 -> 192.61.128.43:5672">>,
                            1}]}},
                  {restart_type,intrinsic},
                  {shutdown,4294967295},
                  {child_type,worker}]


=SUPERVISOR REPORT==== 20-Jan-2015::13:56:22 ===
     Supervisor: {<0.82.0>,amqp_channel_sup}
     Context:    shutdown
     Reason:     reached_max_restart_intensity
     Offender:   [{pid,<0.83.0>},
                  {name,gen_consumer},
                  {mfargs,
                      {amqp_gen_consumer,start_link,
                          [amqp_selective_consumer,[],
                           {<<"client 192.0.2.15:50205 -> 192.61.128.43:5672">>,
                            1}]}},
                  {restart_type,intrinsic},
                  {shutdown,4294967295},
                  {child_type,worker}]


=ERROR REPORT==== 20-Jan-2015::13:56:22 ===
** Generic server <0.84.0> terminating 
** Last message in was {'$gen_cast',
                           {method,
                               {'basic.deliver',
                                   <<"amq.ctag-AUQbOnN34dHwt-KDOHhyVQ">>,1,
                                   false,<<>>,
                                   <<"RespTest">>},
                               {content,60,none,
                                   <<4,0,36,.......,56,101,98>>,
                                   rabbit_framing_amqp_0_9_1,
                                   [<<0,101,0,0,0,......205,205,219,213>>]},
                               noflow}}
** When Server state == {state,1,<0.72.0>,<0.83.0>,network,
                               {[],[]},
                               false,<0.85.0>,none,none,0,true,none,
                               {0,nil},
                               {0,nil},
                               true,false}
** Reason for termination == 
** shutdown

=SUPERVISOR REPORT==== 20-Jan-2015::13:56:22 ===
     Supervisor: {<0.82.0>,amqp_channel_sup}
     Context:    shutdown_error
     Reason:     shutdown
     Offender:   [{pid,<0.84.0>},
                  {name,channel},
                  {mfargs,
                      {amqp_channel,start_link,
                          [network,<0.72.0>,1,<0.83.0>,
                           {<<"client 192.0.2.15:50205 -> 192.61.128.43:5672">>,
                            1}]}},
                  {restart_type,intrinsic},
                  {shutdown,4294967295},
                  {child_type,worker}]


Ошибка 2


=INFO REPORT==== 20-Jan-2015::13:56:48 ===
Dropping frame {method,'basic.deliver',
                       <<31,97,109,113,......,101,115,116>>} for invalid or closed channel number 1

=INFO REPORT==== 20-Jan-2015::13:56:48 ===
Dropping frame {content_header,60,0,103,
                               <<4,0,36,51,48,......,50,52,54,97>>} for invalid or closed channel number 1

=INFO REPORT==== 20-Jan-2015::13:56:48 ===
Dropping frame {content_body,<<0,101,0,0,0,......,197,216,197,205,205,219,213>>} for invalid or closed channel number 1
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.