summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Cogoluègnes <acogoluegnes@gmail.com>2021-12-03 11:11:09 +0100
committerGitHub <noreply@github.com>2021-12-03 11:11:09 +0100
commited045df05f89ed6c00c9657cf17817a419b4475a (patch)
tree51333f306c0d4ab272ebf13cbf7eff6bb97593bb
parent146552c560f5a74d72ee9b84f9c0808e2a6b83aa (diff)
parent4405df42cce318f8585d229f4ea185ef272b3d09 (diff)
downloadrabbitmq-server-git-ed045df05f89ed6c00c9657cf17817a419b4475a.tar.gz
Merge pull request #3844 from rabbitmq/mergify/bp/v3.9.x/pr-3824
Return "no offset" (19) code when stored offset is undefined (backport #3824)
-rw-r--r--deps/rabbitmq_stream/docs/PROTOCOL.adoc1
-rw-r--r--deps/rabbitmq_stream/src/rabbit_stream_reader.erl16
-rw-r--r--deps/rabbitmq_stream/test/rabbit_stream_SUITE.erl7
-rw-r--r--deps/rabbitmq_stream_common/include/rabbit_stream.hrl2
-rw-r--r--deps/rabbitmq_stream_common/src/rabbit_stream_core.erl3
5 files changed, 16 insertions, 13 deletions
diff --git a/deps/rabbitmq_stream/docs/PROTOCOL.adoc b/deps/rabbitmq_stream/docs/PROTOCOL.adoc
index 60a8e48d3e..ce59d11653 100644
--- a/deps/rabbitmq_stream/docs/PROTOCOL.adoc
+++ b/deps/rabbitmq_stream/docs/PROTOCOL.adoc
@@ -81,6 +81,7 @@ used to make the difference between a request (0) and a response (1). Example fo
|Access refused|0x10
|Precondition failed|0x11
|Publisher does not exist|0x12
+|No offset|0x13
|===
diff --git a/deps/rabbitmq_stream/src/rabbit_stream_reader.erl b/deps/rabbitmq_stream/src/rabbit_stream_reader.erl
index 91c0df8be0..8bc685cffe 100644
--- a/deps/rabbitmq_stream/src/rabbit_stream_reader.erl
+++ b/deps/rabbitmq_stream/src/rabbit_stream_reader.erl
@@ -1991,14 +1991,14 @@ handle_frame_post_auth(Transport,
1),
{?RESPONSE_CODE_STREAM_DOES_NOT_EXIST, 0, Connection0};
{LeaderPid, C} ->
- {?RESPONSE_CODE_OK,
- case osiris:read_tracking(LeaderPid, Reference) of
- undefined ->
- 0;
- {offset, Offt} ->
- Offt
- end,
- C}
+ {RC, O} =
+ case osiris:read_tracking(LeaderPid, Reference) of
+ undefined ->
+ {?RESPONSE_CODE_NO_OFFSET, 0};
+ {offset, Offt} ->
+ {?RESPONSE_CODE_OK, Offt}
+ end,
+ {RC, O, C}
end;
error ->
rabbit_global_counters:increase_protocol_counter(stream,
diff --git a/deps/rabbitmq_stream/test/rabbit_stream_SUITE.erl b/deps/rabbitmq_stream/test/rabbit_stream_SUITE.erl
index 3c2c8fe18e..bb40d7d9bf 100644
--- a/deps/rabbitmq_stream/test/rabbit_stream_SUITE.erl
+++ b/deps/rabbitmq_stream/test/rabbit_stream_SUITE.erl
@@ -30,9 +30,7 @@
-define(WAIT, 5000).
all() ->
- [{group, single_node},
- {group, single_node_1},
- {group, cluster}].
+ [{group, single_node}, {group, single_node_1}, {group, cluster}].
groups() ->
[{single_node, [],
@@ -64,7 +62,8 @@ init_per_suite(Config) ->
end_per_suite(Config) ->
Config.
-init_per_group(Group, Config) when Group == single_node orelse Group == single_node_1 ->
+init_per_group(Group, Config)
+ when Group == single_node orelse Group == single_node_1 ->
Config1 =
rabbit_ct_helpers:set_config(Config, [{rmq_nodes_clustered, false}]),
Config2 =
diff --git a/deps/rabbitmq_stream_common/include/rabbit_stream.hrl b/deps/rabbitmq_stream_common/include/rabbit_stream.hrl
index f946b1ecba..e552cc7a02 100644
--- a/deps/rabbitmq_stream_common/include/rabbit_stream.hrl
+++ b/deps/rabbitmq_stream_common/include/rabbit_stream.hrl
@@ -47,6 +47,8 @@
-define(RESPONSE_CODE_ACCESS_REFUSED, 16).
-define(RESPONSE_CODE_PRECONDITION_FAILED, 17).
-define(RESPONSE_CODE_PUBLISHER_DOES_NOT_EXIST, 18).
+-define(RESPONSE_CODE_NO_OFFSET, 19).
+
-define(OFFSET_TYPE_FIRST, 1).
-define(OFFSET_TYPE_LAST, 2).
diff --git a/deps/rabbitmq_stream_common/src/rabbit_stream_core.erl b/deps/rabbitmq_stream_common/src/rabbit_stream_core.erl
index f61fdea3f3..d16b887df1 100644
--- a/deps/rabbitmq_stream_common/src/rabbit_stream_core.erl
+++ b/deps/rabbitmq_stream_common/src/rabbit_stream_core.erl
@@ -56,7 +56,8 @@
?RESPONSE_CODE_INTERNAL_ERROR |
?RESPONSE_CODE_ACCESS_REFUSED |
?RESPONSE_CODE_PRECONDITION_FAILED |
- ?RESPONSE_CODE_PUBLISHER_DOES_NOT_EXIST.
+ ?RESPONSE_CODE_PUBLISHER_DOES_NOT_EXIST |
+ ?RESPONSE_CODE_NO_OFFSET.
-type error_code() :: response_code().
-type sequence() :: non_neg_integer().
-type credit() :: non_neg_integer().