Skip to content

Release 0.73.2#3583

Open
odlbot wants to merge 9 commits into
releasefrom
release-candidate
Open

Release 0.73.2#3583
odlbot wants to merge 9 commits into
releasefrom
release-candidate

Conversation

@odlbot

@odlbot odlbot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Danielle Frappier

Chris Chudzicki

Ahtesham Quraish

Matt Bertrand

Tobias Macey

blarghmatey and others added 9 commits July 2, 2026 19:20
)

* Upgrade django-health-check from pinned git commit to PyPI 3.24.0

Replaces the stale codingjoe/django-health-check@53f9bdc3 (dev build of
3.20.1) git dependency with the newest PyPI release compatible with
Django==4.2.30: 3.24.0. 4.0.0+ requires Django>=5.2 so isn't available
here yet. Verified the settings.py integration (bare check class names
in HEALTH_CHECK["SUBSETS"], contrib.migrations/celery_ping/redis/db_heartbeat
apps, health_check.urls include) is unaffected other than new
deprecation warnings for APIs slated for removal in v4.

* Fix silently-broken health check SUBSETS matching after 3.24.0 bump

The previous commit upgraded django-health-check from a stale git pin to
PyPI 3.24.0, which (unbeknownst at the time) silently broke this repo's
HEALTH_CHECK["SUBSETS"] configuration: 3.24.0's health_check/__init__.py
now does `Cache.__qualname__ = "Cache"` (and similarly for Database) as
a global, process-wide mutation of the shared CacheBackend/
DatabaseHeartBeatCheck classes, so their dataclass-generated __repr__ no
longer matches the bare class names ("CacheBackend", "DatabaseHeartBeatCheck")
used in SUBSETS. Confirmed empirically: only "MigrationsHealthCheck" (the
one check with no reprable fields and no top-level alias) still matched;
Cache, Database, Redis, and CeleryPing were silently excluded from every
subset, meaning /health/liveness/, /health/readiness/, and most of
/health/startup/ and /health/full/ were vacuously always-200 regardless of
actual DB/cache/redis/celery status. This was a regression introduced by
the dependency bump, not a pre-existing issue: the old pinned commit's
health_check/__init__.py did no such aliasing.

Also, every one of the old INSTALLED_APPS contrib sub-apps
(health_check.contrib.{redis,db_heartbeat,celery_ping,migrations}) emits
its own DeprecationWarning at app-ready time pointing at this exact fix:
'checks are now configured via HealthCheckView... add the appropriate
check to your HealthCheckView.checks.'

Replaces the whole SUBSETS + INSTALLED_APPS-registration mechanism with
the explicit, non-fragile HealthCheckView(checks=[...]) API (already
available in 3.24.0, not just v4), matching the pattern already used in
mitxonline/micromasters/ocw-studio/mitxpro. Also fixes the CacheBackend
check to target the "redis" cache alias instead of the always-available
in-memory "default" alias, which made it a no-op regardless of the
SUBSETS bug.

Verified live via Django's test client: /health/liveness/ returns
200 {"Database(alias='default')": "OK"} against sqlite, and
/health/readiness/ correctly returns a 500 ServiceUnavailable when
pointed at an unreachable Redis instead of silently passing.

* Add bare /health/ route and URL-resolution tests

Addresses Copilot review feedback: the rewritten urls_healthcheck.py
only defined /health/{startup,liveness,readiness,full}/ subset routes,
dropping the bare /health/ index that include("health_check.urls")
previously provided. Added it back, mapped to the full check list.

Also adds main/urls_healthcheck_test.py asserting all five paths
resolve to HealthCheckView. Resolves directly against the
main.urls_healthcheck sub-urlconf (via get_resolver) rather than
django.urls.resolve() against the full project urlconf, since the
latter transitively imports the tika client (via learning_resources'
ETL utils) for the first time in a fresh test process, which triggers
a pkg_resources.declare_namespace() DeprecationWarning that this repo's
autouse warnings-as-errors fixture turns into a failure -- a
pre-existing, unrelated issue in the tika dependency, not something to
paper over by scoping down what this test actually needs to exercise.
…3546)

Production pods log repeated DecodeError on qdrant.QueryResponse via
gRPC (prefer_grpc=True, cloud_inference=True) against qdrant server
v1.18.2 (see ol-infrastructure QDRANT_VERSION).

qdrant-client 1.18.0 is the latest PyPI release; the previous ==1.18.0
exact pin prevented automatic pickup of any future 1.18.x patch that
the qdrant team may publish to address the server-side incompatibility.

Switch to the compatible-release specifier (~=1.18.0) so uv can
resolve patch upgrades within 1.18.x when they become available. The
lockfile still resolves to 1.18.0 today.

Minimum server version for the Query API (QueryResponse gRPC type): v1.7.0.
Deployed server: v1.18.2.

Note: if the qdrant team does not publish a matching client patch, the
server in ol-infrastructure should be pinned back to v1.18.0 until a
compatible client is released, or the gRPC transport should be replaced
with HTTP/REST (prefer_grpc=False in vector_search/utils.py) as an
interim workaround.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…pisode (#3540)

* fix: changing the positions of share feature on videos and podcasts episode



---------

Co-authored-by: Ahtesham Quraish <ahtesham.quraish@192.168.1.32>
Add opt-in build targets consumed by the ol-infrastructure local-dev
Tilt stack:

- Dockerfile: a local-dev stage based on development (so dev deps —
  pytest, ipdb, etc. — are available) with a runtime-user-owned /src so
  live-synced source changes can be written.
- frontends/main/Dockerfile.web: a local-dev stage that runs next dev,
  placed before the default runner stage so target-less builds (CI)
  still produce the production image.

Production stages are unchanged.

Also add --workers-kill-timeout (default 1s, overridable via
GRANIAN_WORKERS_KILL_TIMEOUT) to run-django-dev.sh: granian workers
sometimes never finish their graceful stop, which leaves --reload hung
indefinitely mid-reload until the container is restarted.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Code review skipped — your organization's overage spend limit has been reached.

Code review is billed via overage credits. To resume reviews, an organization admin can raise the monthly limit at claude.ai/admin-settings/claude-code.

Once credits are available, push a new commit or reopen this pull request to trigger a review.

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown

OpenAPI Changes

No changes detected

View full changelog

Unexpected changes? Ensure your branch is up-to-date with main (consider rebasing).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants