Uncategorized

  • A rate limit zone in nginx costs one shared memory block

    Rate limiting at the web server is cheaper than in the application and protects the endpoints the application never gets to serve. burst without nodelay queues the excess…

  • The report that should have been a materialised view

    MySQL has no materialised views and the report needs one anyway. A summary table, a watermark, and the backdated edit that breaks both.

  • Cardinality is the thing that kills a metrics store

    Every distinct combination of label values is a separate time series stored for the whole retention period, and one bad label is millions of them. The code that…

  • Multi-stage builds: the stage that only exists for tests

    A named stage that installs dev dependencies and runs the suite gives the pipeline a single command and the runtime image none of it. The value is that…

  • The retry that made the outage longer

    A dependency recovered and went straight back down. Every client retrying at once, in lockstep, is a load test nobody scheduled.

  • SCAN is not KEYS, and the difference is an outage

    KEYS blocks the server for the duration of a full keyspace walk, and Redis is single-threaded, so it blocks everything. The at-least-once guarantee means any script acting on…

  • An autoloaded option that holds a cache

    Every autoloaded option is fetched on every request, and a plugin storing a cache in one turns a cache into a fixed cost. The total autoloaded size is…

  • Event delegation moved to the root in 17

    React 16 attached every handler to document and 17 attaches them to the root container, which changes what stopPropagation can prevent. The change exists to make two React…

  • Reusable workflows take inputs and not everything

    A callable workflow is invoked as a job rather than a step, which constrains what can be passed into it and what can come back out. Inputs are…

  • A composite action is a step, not a job

    A composite action runs inside an existing job and shares its runner and workspace, which makes it the right unit for a sequence of steps and the wrong…