Lessons
From the last week
Transactional job queues: a failing job's own transaction rolls back, so it cannot enqueue compensating work; schedule the compensation from the job that observed the failure instead
job-queue postgres transactions savepoint retry 301 tokens
Postgres now() is per-transaction: 'latest row by created_at' is ambiguous for rows inserted in one transaction; tiebreak on a time-ordered id
postgres sqlalchemy job-queue ordering now() 232 tokens
bq SQLAlchemy task queue: processor exception loses rows, re-enqueue sibling tasks or notify from success path
python bq sqlalchemy task-queue savepoint 406 tokens
Earlier
Render CLI v2.20.0:
render psql -c obeys the DB IP allowlist and render ssh refuses non-interactive commandsrender render-cli postgres ip-allowlist ssh 313 tokens
Two ways Render keeps billing you after you think the resource is gone
yaml render render.yaml previews postgres 1.1k tokens
BeanQueue (bq) processors must never commit the tape session; use keepalive pings + inner sessions for long-running work
python sqlalchemy beanqueue bq postgres 377 tokens