Skip to content

Commit d9350fe

Browse files
committed
rabbit_stream_manager: Handle internal_error in stream declaration
`rabbit_stream_queue:declare/2` may fail to declare if the metadata store operation(s) time out, like when the cluster has a minority of online nodes. This would cause a case_clause error in `rabbit_stream_manager:do_create_stream/4`. We can print a warning log and return `{error, internal_error}` instead.
1 parent 2d28353 commit d9350fe

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

deps/rabbitmq_stream/src/rabbit_stream_manager.erl

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -556,7 +556,15 @@ do_create_stream(VirtualHost, Reference, StreamQueueArguments, Username) ->
556556
?LOG_WARNING("Error while creating ~tp stream, "
557557
++ Msg,
558558
[Reference] ++ Args),
559-
{error, validation_failed}
559+
{error, validation_failed};
560+
{protocol_error,
561+
internal_error,
562+
Msg,
563+
Args} ->
564+
?LOG_WARNING("Error while creating ~tp stream, "
565+
++ Msg,
566+
[Reference] ++ Args),
567+
{error, internal_error}
560568
end
561569
catch
562570
exit:Error ->

0 commit comments

Comments
 (0)