Skip to content

Formbase 0.12.0

Choose a tag to compare

@github-actions github-actions released this 27 Sep 04:48
· 52 commits to main since this release

Pairs with MorphDB 0.12.x, unchanged. A durable schema now records the namespace it holds and
refuses a host serving another name, an idempotency key belongs to one request, and a refused
configuration ends the process with exit code 78. Two changes are visible to existing deployments:
hosts that shared one schema under different namespaces no longer both start (see Upgrading under
the namespace section of the API reference), and a document naming a property twice is refused.

Added

  • GET /settings reports storage — the PostgreSQL schema and MorphDB project a durable host keeps
    its data in (null in-process). Two hosts reporting the same storage serve the same data, whatever
    namespace each answers to; the API reference and README now say that several namespaces sharing one
    PostgreSQL and one MorphDB need a schema and a project each.

Changed

  • A host that refuses its configuration — an unknown store profile, a durable profile missing a
    setting, half a model configuration, a schema holding another namespace — exits with code 78
    (EX_CONFIG) and says why once. It used to end on an unhandled exception: the runtime's crash exit
    code, and the message repeated under a stack trace.

  • A document whose JSON names a property twice in one object is refused with 400
    /problems/invalid-request (and DocumentBody.From/Parse throw). It used to be accepted, and
    the durable store kept only the last value while the in-process store kept both, so the body read
    back depended on the store.

  • A durable host's PostgreSQL schema records the namespace that first used it, and a host
    configured with another namespace over that schema refuses to start. Two names over one schema
    used to both start and serve each other's documents. A schema in use before this records the
    first namespace to start over it, so a deployment with one namespace per schema sees no change.
    A host whose database could not be reached at startup makes the check before its first request
    and answers 503 /problems/namespace-unverified until it passes; the readiness probe reports
    it too. The MorphDB project is not checked: namespaces sharing one replace each other's projected
    tables of the same name.

    If two namespaces already share one schema, decide which of them keeps it before upgrading, and
    start that host first and alone: whichever starts first claims the schema, so hosts started
    together are decided by which one got there first. Give every other namespace its own
    Formbase:Schema (and MorphDB project). The documents those hosts wrote while sharing stay in the
    claimed schema, under the namespace that claimed it — the raw stream does not record which host
    wrote a document, so Formbase cannot separate them.

Fixed

  • An Idempotency-Key sent again with a different request — another form type, or the same form
    type with a different body — is refused with 422 /problems/idempotency-key-reused. It used to
    answer 201 while storing nothing: the key's document stayed as it was and the new body was
    dropped. A retry of the accepted request still returns the same document; bodies are compared as
    JSON values, so property order and whitespace do not matter.