diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000..357736622f Binary files /dev/null and b/.DS_Store differ diff --git a/.changeset/eleven-boats-march.md b/.changeset/eleven-boats-march.md new file mode 100644 index 0000000000..884e3b2d44 --- /dev/null +++ b/.changeset/eleven-boats-march.md @@ -0,0 +1,5 @@ +--- +'@core/sync-service': patch +--- + +fix: mark one more service-specific error as known diff --git a/packages/sync-service/lib/electric/db_connection_error.ex b/packages/sync-service/lib/electric/db_connection_error.ex index 92c4505319..8aeff88cc0 100644 --- a/packages/sync-service/lib/electric/db_connection_error.ex +++ b/packages/sync-service/lib/electric/db_connection_error.ex @@ -198,6 +198,24 @@ defmodule Electric.DbConnectionError do } end + def from_error( + %Postgrex.Error{ + postgres: %{ + code: :invalid_authorization_specification, + message: "branch " <> _, + severity: "FATAL", + pg_code: "28000" + } + } = error + ) do + %DbConnectionError{ + message: error.postgres.message, + type: :branch_does_not_exist, + original_error: error, + retry_may_fix?: false + } + end + def from_error(%Postgrex.Error{postgres: %{code: :admin_shutdown, severity: "FATAL"}} = error) do %DbConnectionError{ message: error.postgres.message, diff --git a/packages/sync-service/test/electric/db_connection_error_test.exs b/packages/sync-service/test/electric/db_connection_error_test.exs index ec179b98eb..c7ce37b79b 100644 --- a/packages/sync-service/test/electric/db_connection_error_test.exs +++ b/packages/sync-service/test/electric/db_connection_error_test.exs @@ -585,6 +585,28 @@ defmodule Electric.DbConnectionErrorTest do } == DbConnectionError.from_error(error) end + test "with branch does not exist error" do + error = %Postgrex.Error{ + message: nil, + postgres: %{ + code: :invalid_authorization_specification, + message: "branch 3ibd4pbmos9p does not exist", + unknown: "FATAL", + severity: "FATAL", + pg_code: "28000" + }, + connection_id: nil, + query: nil + } + + assert %DbConnectionError{ + message: "branch 3ibd4pbmos9p does not exist", + type: :branch_does_not_exist, + original_error: error, + retry_may_fix?: false + } == DbConnectionError.from_error(error) + end + test "with an unknown error" do error = %DBConnection.ConnectionError{ message: "made-up error",