c1600a99e2
In order to control routing dynamically, we need to expose some Beamer information to the proxy. The `beamer_writer` value is used by the proxy to keep track of which node should receive write requests. When it changes due to a failover, the proxy will update after seeing a new value in this header. We provide this to the proxy in the `X-Writer` response header. The `beamer_last_txn` value will be used to control writer pinning. Setting it in the cookie here is the first stage of this. The second stage will be to catch situations where a reader gets a request where this header value is set to a large value than the reader has seen; when that happens if means there's a risk of reading stale data, so rather than serve the request we should request the proxy to reproxy it back to the writer. We also set `X-Kamal-Target` in the response to match the `X-Kamal-Target` that was set in the request; this lets us see which proxy target served each request, which is useful for diagnostics.
8 lines
342 B
Ruby
8 lines
342 B
Ruby
class ApplicationController < ActionController::Base
|
|
include Authentication, Authorization, CurrentRequest, CurrentTimezone, LoadBalancerRouting,
|
|
SetPlatform, TurboFlash, ViewTransitions, WriterAffinity
|
|
|
|
stale_when_importmap_changes
|
|
allow_browser versions: :modern, block: -> { render "errors/not_acceptable", layout: "error" }
|
|
end
|