Content-Length: 352165 | pFad | http://github.com/electric-sql/electric/pull/2800/commits/9dad905eb26c93a6da1b02b80f5ebfb5faba6a79

4C feat(sync-service): Return 503 from API on snapshot timeout or connection error by robacourt · Pull Request #2800 · electric-sql/electric · GitHub
Skip to content

feat(sync-service): Return 503 from API on snapshot timeout or connection error #2800

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 12 commits into from
Jun 19, 2025
Prev Previous commit
Next Next commit
Add known_error header
  • Loading branch information
robacourt committed Jun 5, 2025
commit 9dad905eb26c93a6da1b02b80f5ebfb5faba6a79
5 changes: 4 additions & 1 deletion packages/sync-service/lib/electric/shapes/api.ex
Original file line number Diff line number Diff line change
Expand Up @@ -532,7 +532,10 @@ defmodule Electric.Shapes.Api do
{:error, %SnapshotError{} = error} ->
Logger.warning("Failed to create snapshot for #{shape_handle}: #{error.message}")

Response.error(request, error.message, status: error.status)
Response.error(request, error.message,
status: error.status,
known_error: error.type != :unknown
)

{:error, error} ->
# Errors will be logged further up the stack
Expand Down
14 changes: 13 additions & 1 deletion packages/sync-service/lib/electric/shapes/api/response.ex
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,23 @@ defmodule Electric.Shapes.Api.Response do
@electric_offset_header "electric-offset"
@electric_schema_header "electric-schema"
@electric_up_to_date_header "electric-up-to-date"
@electric_known_error_header "electric-known-error"

# List of all Electric-specific headers that may be included in API responses
@electric_headers [
@electric_cursor_header,
@electric_handle_header,
@electric_offset_header,
@electric_schema_header,
@electric_up_to_date_header
@electric_up_to_date_header,
@electric_known_error_header
]

defstruct [
:handle,
:offset,
:shape_definition,
:known_error,
api: %Api{},
chunked: false,
up_to_date: false,
Expand Down Expand Up @@ -211,6 +214,7 @@ defmodule Electric.Shapes.Api.Response do
|> put_schema_header(response)
|> put_up_to_date_header(response)
|> put_offset_header(response)
|> put_known_error_header(response)
end

defp put_shape_handle_header(conn, %__MODULE__{handle: nil}) do
Expand Down Expand Up @@ -334,6 +338,14 @@ defmodule Electric.Shapes.Api.Response do
Plug.Conn.put_resp_header(conn, @electric_offset_header, "#{offset}")
end

defp put_known_error_header(conn, %__MODULE__{known_error: nil}) do
conn
end

defp put_known_error_header(conn, %__MODULE__{known_error: known_error}) do
Plug.Conn.put_resp_header(conn, @electric_known_error_header, "#{known_error}")
end

defp validate_response_finalized!(%__MODULE__{finalized?: false} = _response) do
raise "Send of un-finalized response"
end
Expand Down








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/electric-sql/electric/pull/2800/commits/9dad905eb26c93a6da1b02b80f5ebfb5faba6a79

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy