Class SlowQueryWatcher
java.lang.Object
org.nuiton.topia.persistence.internal.support.SlowQueryWatcher
- All Implemented Interfaces:
AutoCloseable,Runnable
Classe ayant pour utilité de surveiller le temps d'exécution d'une requête. Si cette requête dépasse le temps
imparti, on affiche un avertissement dans les logs.
- Since:
- 3.8
- Author:
- Arnaud Thimel (Code Lutin)
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final longInstant de début du watcherPermet de récupérer le nom de l'appelant.Permet de récupérer la description de la requête.protected LongInstant de fin du watcher.protected final StringIdentifiant du présent watcher.protected final StringNom du thread dans lequel s'exécute la requêteprotected final longDélai au delà duquel on affiche l'avertissementprotected booleanPermet de savoir si l'avertissement a déjà été affiché pour éviter de le réafficher plusieurs fois -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()protected voidvoiddone()Permet d'informer le watcher que la requête est terminée.booleanFournit un Supplier dont le but est de retrouver la trace de l'appelant à la couche ToPIA.voidrun()static SlowQueryWatcherDémarre un nouveau watcher qui affichera un avertissement si le traitement n'est pas fini avecthresholdDelaymillisecondes.static SlowQueryWatcherstart(Supplier<String> descriptionSupplier, Supplier<String> callerNameSupplier, long thresholdDelay) Démarre un nouveau watcher qui affichera un avertissement si le traitement n'est pas fini avecthresholdDelaymillisecondes.
-
Field Details
-
thresholdDelay
protected final long thresholdDelayDélai au delà duquel on affiche l'avertissement -
descriptionSupplier
Permet de récupérer la description de la requête. Utilisé uniquement si besoin -
callerNameSupplier
Permet de récupérer le nom de l'appelant. Utilisé uniquement si besoin -
threadName
Nom du thread dans lequel s'exécute la requête -
id
Identifiant du présent watcher. Sert à faire le lien entre les 2 messages d'avertissement -
begin
protected final long beginInstant de début du watcher -
end
Instant de fin du watcher. Si la valeur est null cela signifie que la requête est toujours en cours -
warned
protected boolean warnedPermet de savoir si l'avertissement a déjà été affiché pour éviter de le réafficher plusieurs fois
-
-
Method Details
-
start
public static SlowQueryWatcher start(Supplier<String> descriptionSupplier, Supplier<String> callerNameSupplier, long thresholdDelay) Démarre un nouveau watcher qui affichera un avertissement si le traitement n'est pas fini avecthresholdDelaymillisecondes. L'instance créée commence immédiatement le décompte du temps. Cet appel est fait pour être encapsulé dans un try-with-ressource afin quedone()soit appelé à la fin du traitement (potentiellement viaclose().- Parameters:
descriptionSupplier- Permet de récupérer une description de la requête. On utiliseSupplierde façon à ne calculer sa valeur qu'en cas de besoin.callerNameSupplier- Permet de récupérer une information sur l'appelant pour savoir de quel cas d'usage il s'agit. On utiliseSupplierde façon à ne calculer sa valeur qu'en cas de besoin.thresholdDelay- le délai (en millisecondes) au delà duquel on affiche l'avertissement- Returns:
- une nouvelle instance de SlowQueryWatcher pour ce traitement ou
nullsi le niveau de log ne permet pas de logguer les avertissements.
-
start
Démarre un nouveau watcher qui affichera un avertissement si le traitement n'est pas fini avecthresholdDelaymillisecondes. L'instance créée commence immédiatement le décompte du temps. Cet appel est fait pour être encapsulé dans un try-with-ressource afin quedone()soit appelé à la fin du traitement (potentiellement viaclose().- Parameters:
descriptionSupplier- Permet de récupérer une description de la requête. On utiliseSupplierde façon à ne calculer sa valeur qu'en cas de besoin.thresholdDelay- le délai (en millisecondes) au delà duquel on affiche l'avertissement- Returns:
- une nouvelle instance de SlowQueryWatcher pour ce traitement.
-
newCallerNameSupplier
Fournit un Supplier dont le but est de retrouver la trace de l'appelant à la couche ToPIA. Ainsi on peut décrire la méthode à l'origine de la requête en cours. -
isStillRunning
public boolean isStillRunning() -
displayWarn
protected void displayWarn() -
done
public void done()Permet d'informer le watcher que la requête est terminée. Ça peut être fait directement en appelant cette méthode explicitement ou bien au moment tuclose()dans le cas d'un usage via try-with-ressource. -
run
public void run() -
close
public void close()- Specified by:
closein interfaceAutoCloseable
-