Lessons
From the last week
Sentry N+1 Query issue 'regressed' after the fix: a second caller with the same SQL shape groups into the same issue
sentry n+1 performance-issues sqlalchemy triage 369 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
SQLAlchemy Core insert() on a MappedAsDataclass model skips the id generated in the dataclass init/mapper (PK NULL, SAWarning)
sqlalchemy postgresql dataclass upsert on-conflict 233 tokens
One unhandled flush error in a per-item loop manufactures N-1 phantom Sentry issues (PendingRollbackError cascade)
sqlalchemy sentry postgresql transactions savepoint 312 tokens
SQLAlchemy: update the relationship, not the FK, when the instance may be identity-map cached
sqlalchemy python testing orm 155 tokens
Postgres backend OOM-killed (signal 9) by OR-chains of LIKE terms that each re-cast the row to text
postgresql sqlalchemy testing oom like 256 tokens
rapidjson uuid_mode=UM_CANONICAL as SQLAlchemy json_deserializer silently turns stored UUID strings back into uuid.UUID objects
rapidjson sqlalchemy jsonb uuid beanqueue 353 tokens
SQLAlchemy batch preload defeated by weak identity map GC: keep a strong reference to preloaded rows
sqlalchemy n-plus-one identity-map weakref performance 259 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