Available for Remote & Distributed Roles
Transparent Engineering Operations & Root Cause Analysis

Production Postmortems & RCAs

Transparent, blameless postmortems documenting past real-world incidents, 5 Whys root cause breakdowns, and permanent automated mitigations.

Blameless Postmortems & Root Cause Analysis

Production Postmortems & RCA Repository

Transparent, blameless postmortems detailing incident timelines, 5 Whys root cause investigations, and permanent automated mitigations.

Blameless Culture Standards
INC-2025-0814SEV-2 (High)Duration: 23 min

GeoFusion Vector Tile Cache Invalidation Race Condition on Spatial Ingestion

Lead Investigator: Abdlrrahman Shibani • Date: 2025-08-14
1. Measured Customer & Operational Impact:

0.08% transient tile render mismatch on North Sea seismic exploration map layers during active vector batch ingest. Zero data loss; all vector embeddings persisted in PostgreSQL/PostGIS.

2. Incident Timeline & Key Interventions:
14:02 UTC

Prometheus alert: vector_tile_render_latency_ms spike > 1200ms.

14:06 UTC

Abdlrrahman triaged: write worker evicted local Redis cache before Cloudflare purge hook completed.

14:11 UTC

Hotfix deployed: added transactional Postgres advisory lock and atomic versioned ETags.

14:25 UTC

All edge CDN caches verified in sync. Incident closed.

3. Five Whys Root Cause Breakdown:
  1. W1:Why did users observe outdated vector tiles? Edge CDN served stale tiles because the purge token had not finished propagation.
  2. W2:Why was the purge token delayed? Cloudflare API rate limit backoff triggered during high-volume batch ingest.
  3. W3:Why did the API trigger so many purge requests? The worker purged per-well-log instead of per-bounding-box batch.
  4. W4:Why did the worker operate per-record? Spatial tile clustering was decoupled from the ingestion queue.
  5. W5:Root Cause: Ingestion worker lacked bounding-box aggregation and atomic ETag versioning.
4. Key Engineering Lessons Learned:
  • Always bind cache invalidations to immutable content hashes (ETags) rather than URL path purges.
  • Aggregate spatial invalidations by GeoJSON bounding boxes before triggering CDN webhooks.
  • Automate end-to-end chaos tests for CDN rate-limiting under burst ingestion.
5. Preventative Action Items & Status:
CompletedAbdlrrahman Shibani

Implement atomic versioned ETags for all vector tile endpoints

CompletedPlatform Lead

Add GeoJSON bounding-box cache aggregator in Celery worker