Backfill `organisation_id` on existing audit logs

Ouverte
#8,935 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
36/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Active
Stack technique
django, postgresql, python
Domaine
backend, databases

Piste de recherche

Start by reading #8888 and tracing the audit log model, organisation-scoped list and filter queries, webhooks, and integrations described in the issue. Identify the existing migration and backfill patterns, then assess how the backfill can run while writes, listing, search, and deliveries continue. Done means the acceptance criteria hold: every relevant API log has its organisation, queries are no slower, and results and deliveries are unchanged.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

After #8888, we gain a nullable AuditLog.organisation field for organisation-level audit logs.

Existing project and environment logs keep organisation_id = NULL, so every organisation-scoped read still has to look up the organisation through project:

  • organisation_id = X OR project.organisation_id = X in the organisation and all-logs endpoints, and in the organisation filter. In /api/v1/audit/, this leads to two OR'd joins, which poses a duplicate row risk in results.
  • fallback chains through project in audit log webhooks and integrations.

Besides that, users see organisation: null in API responses for most logs.

We propose to backfill the field value for existing audit logs, which will gain us:

  • One way to scope by organisation, index-friendly queries, and impler webhook + integrations code: WHERE organisation_id = X everywhere instead of OR / joins / project fallback logic. Also, no duplicate row risk in /api/v1/audit/.
  • A clear meaning for "organisation-level": project_id IS NULL AND environment_id IS NULL, with no reliance on NULL meaning something by convention.
  • A complete API: organisation is set on every log that belongs to an organisation.
  • Easier future work: organisation-wide features such as retention, export and analytics can rely on a single column.
Acceptance criteria
  • Every audit log that belongs to a project or environment shows its organisation in the API (organisation is not null), including logs created before #8888.
  • The organisation audit log list is faster than existing p95 of 900ms, or at least no slower.
  • Users see no impact while the backfill runs: audit logs keep being written and listed, and search keeps working.
  • The organisation audit log shows exactly the same logs as before the backfill: none missing, none duplicated, and audit log webhooks and integrations are delivered exactly as before.
Langage dominant
Python
Étoiles
7.1k
Forks
603
Merge moyen
3 j 8 h
PR mergées (30 j)
102

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de Flagsmith/flagsmith

Toutes les issues de Flagsmith/flagsmith

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.