fluent / fluent/fluent-logger-java

Current Error Handling does not return false on logging errors

Ouverte
#66 3 commentaires 1 réaction 0 personnes assignées Voir sur GitHub
Langage dominant
Java
Étoiles
210
Forks
86
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

There are two types of errors I've run into:

1. Network Errors:
Here I created an app to log to a remote Fluentd instance.
`private static final FluentLogger LOG = FluentLogger.getLogger("audit", "10.0.0.1", 22224);`
However, I forgot to start the remote Fluentd instance before running the app, so I got Network Errors
`
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.fluentd.logger.sender.RawSocketSender.connect(RawSocketSender.java:85)
at org.fluentd.logger.sender.RawSocketSender.reconnect(RawSocketSender.java:98)
at org.fluentd.logger.sender.RawSocketSender.flush(RawSocketSender.java:206)
at org.fluentd.logger.sender.RawSocketSender.send(RawSocketSender.java:195)
at org.fluentd.logger.sender.RawSocketSender.emit(RawSocketSender.java:157)
at org.fluentd.logger.sender.RawSocketSender.emit(RawSocketSender.java:139)
at org.fluentd.logger.sender.RawSocketSender.emit(RawSocketSender.java:134)
at org.fluentd.logger.FluentLogger.log(FluentLogger.java:101)
at org.fluentd.logger.FluentLogger.log(FluentLogger.java:86)
at LoggerInfra.log(FluentdLoggerApp.java:27)
at LoggerCaller.testLogger(FluentdLoggerApp.java:79)
at FluentdLoggerApp.main(FluentdLoggerApp.java:112)
`

There error was printed to console (expected because of limited error handling #15), but the `log()` call returned `true` instead of `false` which hid the internal failure.
Result of logic in [RawSocketSender.java#L204](https://github.com/fluent/fluent-logger-java/blob/master/src/main/java/org/fluentd/logger/sender/RawSocketSender.java#L204) which simple logs the error message to `LOG.error()`.

2. A second error is that I ran out of buffer space. In this setup I had my app logging to a local Fluentd instance and buffering to file. The local instance then forwards the logs to a remote instance. However the remote instance was not running, so the local buffer space eventually got filled up. Again the `log()` call returned true and the stack trace was printed out to terminal.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par RawSocketSender.java autour de la ligne 204 et suivez le chemin de log() pour les échecs de connexion comme pour l’épuisement de l’espace du tampon. Reproduisez les deux cas d’échec décrits dans l’issue, puis vérifiez que log() signale un échec plutôt qu’un succès lorsqu’une des opérations internes échoue. Consultez l’issue #15 pour le contexte existant de gestion des erreurs.

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

Évaluation

Stack technique
java
Domaine
observability
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

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