diff --git a/elixir/apps/api/lib/api/client/channel.ex b/elixir/apps/api/lib/api/client/channel.ex index 618923ccc..668e31240 100644 --- a/elixir/apps/api/lib/api/client/channel.ex +++ b/elixir/apps/api/lib/api/client/channel.ex @@ -21,16 +21,16 @@ defmodule API.Client.Channel do opentelemetry_ctx = OpenTelemetry.Ctx.get_current() opentelemetry_span_ctx = OpenTelemetry.Tracer.current_span_ctx() - gateway_version_requirement = select_gateway_version_requirement(socket.assigns.client) + with {:ok, socket} <- schedule_expiration(socket), + {:ok, gateway_version_requirement} <- + select_gateway_version_requirement(socket.assigns.client) do + socket = + assign(socket, + opentelemetry_ctx: opentelemetry_ctx, + opentelemetry_span_ctx: opentelemetry_span_ctx, + gateway_version_requirement: gateway_version_requirement + ) - socket = - assign(socket, - opentelemetry_ctx: opentelemetry_ctx, - opentelemetry_span_ctx: opentelemetry_span_ctx, - gateway_version_requirement: gateway_version_requirement - ) - - with {:ok, socket} <- schedule_expiration(socket) do send(self(), {:after_join, {opentelemetry_ctx, opentelemetry_span_ctx}}) {:ok, socket} end @@ -640,10 +640,10 @@ defmodule API.Client.Channel do end ) - gateway_version_requirement || "> 0.0.0" + {:ok, gateway_version_requirement || "> 0.0.0"} :error -> - "> 0.0.0" + {:error, %{reason: :invalid_version}} end end diff --git a/elixir/apps/api/test/api/client/channel_test.exs b/elixir/apps/api/test/api/client/channel_test.exs index 0619250c9..8154ff273 100644 --- a/elixir/apps/api/test/api/client/channel_test.exs +++ b/elixir/apps/api/test/api/client/channel_test.exs @@ -192,17 +192,15 @@ defmodule API.Client.ChannelTest do client = %{client | last_seen_version: "development"} - {:ok, _reply, socket} = - API.Client.Socket - |> socket("client:#{client.id}", %{ - opentelemetry_ctx: OpenTelemetry.Ctx.new(), - opentelemetry_span_ctx: OpenTelemetry.Tracer.start_span("test"), - client: client, - subject: subject - }) - |> subscribe_and_join(API.Client.Channel, "client") - - assert socket.assigns.gateway_version_requirement == "> 0.0.0" + assert API.Client.Socket + |> socket("client:#{client.id}", %{ + opentelemetry_ctx: OpenTelemetry.Ctx.new(), + opentelemetry_span_ctx: OpenTelemetry.Tracer.start_span("test"), + client: client, + subject: subject + }) + |> subscribe_and_join(API.Client.Channel, "client") == + {:error, %{reason: :invalid_version}} end test "sends list of resources after join", %{