Patch Changes
-
2d1d268: Ensure shape consumers idempotently handle transactions using log offset comparisons.
-
b71e46c: Fix retry-after header not being exposed via CORS
The server was sending the retry-after header to clients during overload scenarios (503 responses), but the header was not included in the access-control-expose-headers CORS header. This caused browsers to block access to the retry-after value, preventing clients from honoring the server's backoff directive.
As a result, clients would ignore the server's retry-after header and use only exponential backoff with jitter, which could result in very short retry delays (as low as 0-100ms on early retries), leading to intense retry loops during server overload.
-
ff45de1: Replace max LSN recovery from on-disk shapes with direct read from replication slot flushed LSN.
-
68424c3: Reduce replication client working memory by sending individual operations to ShapeLogCollector rather than whole transactions
-
6bb011b: Remove Shapes.Monitor and re-write shape removal for improved performance
-
5c8b559: Propagate shape subset errors correctly to Ecto.
-
b24556b: Reduce memory buildup when calculating least recently used shapes by using
:ets.foldl. -
d3a60f6: Fix shape delete api call function arguments