Cossey / openhab-addons

Add-ons for openHAB 2.x
Eclipse Public License 2.0
1 stars 0 forks source link

[HP Printer] Handle Web Request and Impression errors gracefully #4

Closed Cossey closed 5 years ago

Cossey commented 5 years ago

Vincent reports Socket error for when printer turns off:

2019-01-12 20:44:49.042 [ERROR] [er.internal.handler.HPPrinterHandler] - WebRequest Error
java.net.SocketTimeoutException: connect timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method) ~[?:?]
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[?:?]
    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 sun.net.NetworkClient.doConnect(NetworkClient.java:175) ~[?:?]
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:463) ~[?:?]
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:558) ~[?:?]
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:242) ~[?:?]
    at sun.net.www.http.HttpClient.New(HttpClient.java:339) ~[?:?]
    at sun.net.www.http.HttpClient.New(HttpClient.java:357) ~[?:?]
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1220) ~[?:?]
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156) ~[?:?]
    at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1040) ~[?:?]
    at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1038) ~[?:?]
    at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
    at java.security.AccessController.doPrivilegedWithCombiner(AccessController.java:782) ~[?:?]
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1037) ~[?:?]
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:984) ~[?:?]
    at org.openhab.binding.hpprinter.internal.handler.WebRequester.Do(WebRequester.java:111) ~[?:?]
    at org.openhab.binding.hpprinter.internal.handler.Type1Info.CheckStatus(Type1Info.java:74) ~[?:?]
    at org.openhab.binding.hpprinter.internal.handler.HPPrinterHandler.lambda$2(HPPrinterHandler.java:226) ~[?:?]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
    at java.lang.Thread.run(Thread.java:748) [?:?]
==> /var/log/openhab2/events.log <==
2019-01-12 20:44:49.064 [hingStatusInfoChangedEvent] - 'hpprinter:deskjet2620:HPDesket2620' changed from ONLINE to OFFLINE
2019-01-12 20:44:49.071 [vent.ItemStateChangedEvent] - Printer_Status changed from Power Save to Offline

StHeilbron reports error with Impression reading:

2019-01-12 16:36:35.130 [ERROR] [hpprinter.internal.handler.Type1Info] - Error reading Impressions
java.lang.NullPointerException: null
at org.openhab.binding.hpprinter.internal.handler.Type1Info.CheckUsage(Type1Info.java:179) ~[?:?]
at org.openhab.binding.hpprinter.internal.handler.HPPrinterHandler.lambda$3(HPPrinterHandler.java:230) ~[?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
at java.lang.Thread.run(Thread.java:748) [?:?]
Cossey commented 5 years ago

Found that SocketTimeoutException was being reported as error in WebRequester.Do whilst being passed back to original function. Only IOExceptions should be reported back as errors.

Impressions error is now being passed back as a debug message when it cannot be read - however it should probably be handled correctly per thing, and still report a debug message when failed.