From d24993b13302b75cdf5bdc1b4cb2e69c6a50141a Mon Sep 17 00:00:00 2001 From: Rob A'Court Date: Wed, 7 Aug 2024 15:04:13 +0100 Subject: [PATCH] fix(sync-server): Fix error that occurs when `/shape` response stream is closed before it is complete (#1489) This closes #1440 --- .changeset/fifty-frogs-warn.md | 6 ++++++ packages/sync-service/lib/electric/plug/serve_shape_plug.ex | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .changeset/fifty-frogs-warn.md diff --git a/.changeset/fifty-frogs-warn.md b/.changeset/fifty-frogs-warn.md new file mode 100644 index 0000000000..aa32849ac2 --- /dev/null +++ b/.changeset/fifty-frogs-warn.md @@ -0,0 +1,6 @@ +--- +"@core/sync-service": patch +--- + +Fix error that occurs when a `/shape` response stream is closed before it is complete, +for example when `curl --head` is used to call the endpoint. diff --git a/packages/sync-service/lib/electric/plug/serve_shape_plug.ex b/packages/sync-service/lib/electric/plug/serve_shape_plug.ex index 63f846a1db..80e0bd9737 100644 --- a/packages/sync-service/lib/electric/plug/serve_shape_plug.ex +++ b/packages/sync-service/lib/electric/plug/serve_shape_plug.ex @@ -330,7 +330,11 @@ defmodule Electric.Plug.ServeShapePlug do {:ok, conn} -> {:cont, conn} - {:error, :closed} -> + {:error, "closed"} -> + {:halt, conn} + + {:error, reason} -> + Logger.error("Error while streaming response: #{inspect(reason)}") {:halt, conn} end end)