i.a.m.g.GraphiteReporter#performLog:116 - Error reporting metrics
javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed
at java.base/sun.security.ssl.Alert.createSSLException(Unknown Source)
at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
at java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(Unknown Source)
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(Unknown Source)
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(Unknown Source)
at java.base/sun.security.ssl.SSLHandshake.consume(Unknown Source)
at java.base/sun.security.ssl.HandshakeContext.dispatch(Unknown Source)
at java.base/sun.security.ssl.HandshakeContext.dispatch(Unknown Source)
at java.base/sun.security.ssl.TransportContext.dispatch(Unknown Source)
at java.base/sun.security.ssl.SSLTransport.decode(Unknown Source)
at java.base/sun.security.ssl.SSLSocketImpl.decode(Unknown Source)
at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(Unknown Source)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at java.base/sun.security.ssl.SSLSocketImpl.ensureNegotiated(Unknown Source)
at java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(Unknown Source)
at java.base/java.io.OutputStream.write(Unknown Source)
at io.avaje.metrics.graphite.DGraphiteSender.sendPayload(DGraphiteSender.java:194)
at io.avaje.metrics.graphite.DGraphiteSender.send(DGraphiteSender.java:188)
at io.avaje.metrics.graphite.DGraphiteSender.writeMetrics(DGraphiteSender.java:172)
at io.avaje.metrics.graphite.DGraphiteSender.flush(DGraphiteSender.java:142)
at io.avaje.metrics.graphite.DGraphiteReporter.report(DGraphiteReporter.java:30)
at io.avaje.metrics.DScheduledTask.runTask(DScheduledTask.java:89)
```
So in `DGraphiteSender.send()` we have retry. The thought is to potentially support a fallback socketFactory that allows expired certs, detect `java.security.cert.CertificateExpiredException` and go into a "fallback mode" using the "fallback socket factory", and log warn or error etc to get the issue addressed but in the meantime the metrics keep reporting.