Invalidation automatique du cache #51

Merged
wpetit merged 2 commits from auto-cache-clear into master 2025-08-14 11:05:21 +02:00
Owner

Description

Cette PR extrait les détails d’implémentation des serveurs admin et proxy afin d’utiliser des interfaces pour les store.*Repository et le lock.Locker.
Elle introduit également un mécanisme d’observabilité sur les dépôts Redis afin d’invalider automatiquement les caches lorsque des proxies ou des layers changent.

Par ailleurs, un signal SIGUSR2 est désormais pris en charge pour vider l’ensemble des caches.

Contexte

  • Avant la refactorisation, chaque serveur initialisait son client Redis, ses repository et son locker dans ses propres fichiers d’initialisation (init.go).
  • Le cache du proxy était vidé uniquement lorsqu’un signal SIGUSR2 était reçu, mais aucune notification n’était déclenchée lorsqu’un layer ou un proxy était modifié via l’API.

Problème

  • Les caches pouvaient rester obsolètes après des modifications d’un proxy ou d’un layer, ce qui pouvait entraîner un comportement incohérent.

Solution apportée

  1. Injection d’interfaces

    • Les dépôts ProxyRepository et LayerRepository, ainsi que le Locker, sont désormais injectés via les OptionFunc des serveurs admin et proxy.
    • Les fonctions d’initialisation initRedisClient, initLayerRepository, initProxyRepository ont été retirées des serveurs.
  2. Observabilité des repository

    • Ajout du fichier store/observable.go définissant l’interface Observable.
    • Implémentation d’observables pour les dépôts Redis (fichiers layer_observable.go et proxy_observable.go).
    • Publication de messages via Redis Pub/Sub lorsqu’une couche ou un proxy est créé, mis à jour ou supprimé.
    • Les serveurs proxy s’abonnent aux notifications et effacent les caches appropriés.
  3. Invalidation du cache

    • Le serveur proxy expose ClearProxyCache et ClearLayerCache.
    • Lorsqu’un changement est reçu, ces méthodes sont appelées pour invalider les caches.
    • Le signal SIGUSR2 est toujours pris en charge pour vider l’ensemble des caches.
## Description Cette PR extrait les détails d’implémentation des serveurs **admin** et **proxy** afin d’utiliser des interfaces pour les `store.*Repository` et le `lock.Locker`. Elle introduit également un mécanisme d’observabilité sur les dépôts Redis afin d’invalider automatiquement les caches lorsque des proxies ou des layers changent. Par ailleurs, un signal `SIGUSR2` est désormais pris en charge pour vider l’ensemble des caches. ### Contexte - Avant la refactorisation, chaque serveur initialisait son client Redis, ses repository et son locker dans ses propres fichiers d’initialisation (`init.go`). - Le cache du proxy était vidé uniquement lorsqu’un signal `SIGUSR2` était reçu, mais aucune notification n’était déclenchée lorsqu’un layer ou un proxy était modifié via l’API. ### Problème - Les caches pouvaient rester obsolètes après des modifications d’un proxy ou d’un layer, ce qui pouvait entraîner un comportement incohérent. ### Solution apportée 1. **Injection d’interfaces** - Les dépôts `ProxyRepository` et `LayerRepository`, ainsi que le `Locker`, sont désormais injectés via les `OptionFunc` des serveurs `admin` et `proxy`. - Les fonctions d’initialisation `initRedisClient`, `initLayerRepository`, `initProxyRepository` ont été retirées des serveurs. 2. **Observabilité des repository** - Ajout du fichier `store/observable.go` définissant l’interface `Observable`. - Implémentation d’observables pour les dépôts Redis (fichiers `layer_observable.go` et `proxy_observable.go`). - Publication de messages via Redis Pub/Sub lorsqu’une couche ou un proxy est créé, mis à jour ou supprimé. - Les serveurs `proxy` s’abonnent aux notifications et effacent les caches appropriés. 3. **Invalidation du cache** - Le serveur `proxy` expose `ClearProxyCache` et `ClearLayerCache`. - Lorsqu’un changement est reçu, ces méthodes sont appelées pour invalider les caches. - Le signal `SIGUSR2` est toujours pris en charge pour vider l’ensemble des caches.
wpetit added 1 commit 2025-08-13 16:55:06 +02:00
refactor: remove redis direct references from proxy/admin servers
All checks were successful
Cadoles/bouncer/pipeline/head This commit looks good
Cadoles/bouncer/pipeline/pr-master This commit looks good
ad4f334bc2
wpetit added 1 commit 2025-08-13 18:21:05 +02:00
feat: observe changes in repository to automatically clear cache
All checks were successful
Cadoles/bouncer/pipeline/pr-master This commit looks good
80a1b48966
wpetit changed title from WIP: refactor: remove redis direct references from proxy/admin servers to Invalidation automatique du cache 2025-08-13 18:36:34 +02:00
wpetit merged commit 4c7ba22b50 into master 2025-08-14 11:05:21 +02:00
wpetit deleted branch auto-cache-clear 2025-08-14 11:05:23 +02:00
Sign in to join this conversation.
No description provided.