Skip to main content

Module transfer

Module transfer 

Source
Expand description

acme-proxy transfer --to <url> — copy every row into the other backend.

The move an operator makes once: a SQLite file that has outgrown one host, into the PostgreSQL cluster the three roles can then be spread across. The direction is not a flag — the configured database.url is the source, the --to URL is the target, and each one’s scheme says which backend it is, so the reverse is the same command with the two swapped.

Everything about how the copy works is acme_proxy_store::transfer’s business. What lives here is the four things that have to be true before it starts, each refused by name:

  • the target is reachable and its schema is current — this command does not migrate it, because applying a schema belongs to migrate/init and the worker role and nothing else (ADR 0003);
  • the target is empty, with no override: a copy into a database that already holds rows is not a merge, and the INSERTs would collide halfway through on whichever primary key happened to clash first;
  • the two URLs are not the same database;
  • and the operator has been told the one thing no check can establish — the source server must be stopped. A worker mid-issuance writes rows the copy has already walked past, and a torn snapshot looks exactly like a good one.

Functions§

run_transfer_command