Handle Khepri timeouts when attempting to delete crashed classic Qs
This commit is contained in:
		
							parent
							
								
									c37b192beb
								
							
						
					
					
						commit
						4f0da67420
					
				|  | @ -1691,7 +1691,10 @@ delete_crashed(Q) when ?amqqueue_is_classic(Q) -> | |||
| delete_crashed(Q, ActingUser) when ?amqqueue_is_classic(Q) -> | ||||
|     rabbit_classic_queue:delete_crashed(Q, ActingUser). | ||||
| 
 | ||||
| -spec delete_crashed_internal(amqqueue:amqqueue(), rabbit_types:username()) -> 'ok'. | ||||
| -spec delete_crashed_internal(Q, ActingUser) -> Ret when | ||||
|       Q :: amqqueue:amqqueue(), | ||||
|       ActingUser :: rabbit_types:username(), | ||||
|       Ret :: ok | {error, timeout}. | ||||
| delete_crashed_internal(Q, ActingUser) when ?amqqueue_is_classic(Q) -> | ||||
|     rabbit_classic_queue:delete_crashed_internal(Q, ActingUser). | ||||
| 
 | ||||
|  |  | |||
|  | @ -168,8 +168,15 @@ delete(Q0, IfUnused, IfEmpty, ActingUser) when ?amqqueue_is_classic(Q0) -> | |||
|                             rabbit_log:warning("Queue ~ts in vhost ~ts is down. " | ||||
|                                                "Forcing queue deletion.", | ||||
|                                                [Name, Vhost]), | ||||
|                             delete_crashed_internal(Q, ActingUser), | ||||
|                             {ok, 0} | ||||
|                             case delete_crashed_internal(Q, ActingUser) of | ||||
|                                 ok -> | ||||
|                                     {ok, 0}; | ||||
|                                 {error, timeout} -> | ||||
|                                     {error, protocol_error, | ||||
|                                      "The operation to delete ~ts from the " | ||||
|                                      "metadata store timed out", | ||||
|                                      [rabbit_misc:rs(QName)]} | ||||
|                             end | ||||
|                     end | ||||
|             end; | ||||
|         {error, not_found} -> | ||||
|  | @ -551,7 +558,7 @@ delete_crashed(Q, ActingUser) -> | |||
| 
 | ||||
| delete_crashed_internal(Q, ActingUser) -> | ||||
|     delete_crashed_in_backing_queue(Q), | ||||
|     ok = rabbit_amqqueue:internal_delete(Q, ActingUser). | ||||
|     rabbit_amqqueue:internal_delete(Q, ActingUser). | ||||
| 
 | ||||
| delete_crashed_in_backing_queue(Q) -> | ||||
|     {ok, BQ} = application:get_env(rabbit, backing_queue_module), | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue