Repository navigation
Conversation
…le running job and one pending slot
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Breaking API changes
GET /videos- thepresenterquery parameter is nowpresenter_id. Searches across multiple presenters return videos by any (OR semantics).GET /videos- no longer404s when nothing matches; it returns an emptypage. Invalid parameters are
400(was422), andpage,per_page,sortand the date range are now validated rather than silently coerced.
GET /events-has_videosmust betrueorfalse; anything else is a400instead of being treated as "all events".GET /videos/{youtube_id}/recommendations- defaultnis now5(was1).erroris the HTTP status code as an integer (wasa machine-readable string). Every error also carries
requestandquery_parameters;detailandreport_urlappear on500only, instead ofbeing concatenated into
message.PATCH /crud/{table}/{id}- returns the updated record as a single object,not a one-element array. A non-numeric ID is
400; no matching row is404.POST /crud/{table}- an empty JSON array is now400.DELETE /crud/{table}/{id}-409removed from the spec.ETag,Last-ModifiedandCache-Control, and answer304toIf-None-Match/If-Modified-Since.CRUD endpoints send
Cache-Control: no-store.503while the cache is unavailable - read endpoints return a retryable503where they previously failed with a500.per_pagerather than one capped tothe result count, and an empty result set is page 1 of 1.
GET /admin/refresh/status;POST /admin/refreshnow answers202with a
monitorUrlpointing at it.Serialised cache refresh
ADMIN.Refreshtakes a refresh lock and hands the work toADMIN.RunRefresh:one refresh runs at a time with a single pending slot, and a stale lock is
recovered automatically. This removes the races and clobbering that could lock
the system up or let a request read a half-updated cache. A new
REFRESHtestsuite covers the lock, the status endpoint, and the accepted/pending paths.
Cold start from a persisted cache
The built cache is written to disk (
ADMIN.WriteCache/ReadCache, validated byCACHE.Valid) and re-read at startup, so a fresh process serves requestsimmediately instead of failing until the first build completes.
OpenAPI spec conformance
The spec and the implementation were reconciled:
definitions
SPEC.apln/teapot.Other fixes
handler
reconnect
Performance
index∘⍳Tests, CI and docs
Test framework reworked around assertions that report their failures, suites run
against a clean database, cache builds are exercised in an isolate under test,
and Jenkins runs are timeout-bounded and fail fast on a bad cache build.
Obsolete
CI/test-endpoints.shremoved.