View Source Electric.Postgres.LockConnection (electric v0.7.2)

A Postgres connection that ensures an advisory lock is held for its entire duration, useful for ensuring only a single sync service instance can be using a single replication slot at any given time.

The connection attempts to grab the lock and waits on it until it acquires it. When it does, it fires off a :lock_connection_acquired message to the specified Electric.ConnectionManager such that the required setup can acquired now that the service is sure to be the only one operating on this replication stream.

Summary

Types

@type option() ::
  {:connection_opts, Keyword.t()}
  | {:connection_manager, GenServer.server()}
  | {:lock_name, String.t()}
@type options() :: [option()]

Functions

@spec start_link(options()) :: {:ok, pid()} | {:error, Postgrex.Error.t() | term()}