NCIEVS / nci-protege5

evs umbrella project for protege 5-based editing software
BSD 3-Clause "New" or "Revised" License
2 stars 2 forks source link

Random socket timeouts on various client server calls #564

Closed bdionne closed 1 year ago

bdionne commented 1 year ago

User reports failure when cloning concept, code can't be generated for new concept. This is caused by a socket timeout exception that is not handled in the LocalHTTPClient

These seem to be a new phenomenon due to changes in the network.

java.net.SocketTimeoutException: connect timed out
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_212]
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) ~[na:1.8.0_212]
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_212]
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_212]
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_212]
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) ~[na:1.8.0_212]
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_212]
    at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_212]
    at okhttp3.internal.platform.Platform.connectSocket(Platform.java:124) ~[okhttp-3.6.0.jar:na]
    at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:220) ~[okhttp-3.6.0.jar:na]
    at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:146) ~[okhttp-3.6.0.jar:na]
    at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:186) ~[okhttp-3.6.0.jar:na]
    at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:121) ~[okhttp-3.6.0.jar:na]
    at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:100) ~[okhttp-3.6.0.jar:na]
    at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) ~[okhttp-3.6.0.jar:na]
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) ~[okhttp-3.6.0.jar:na]
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) ~[okhttp-3.6.0.jar:na]
    at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) ~[okhttp-3.6.0.jar:na]
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) ~[okhttp-3.6.0.jar:na]
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) ~[okhttp-3.6.0.jar:na]
    at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) ~[okhttp-3.6.0.jar:na]
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) ~[okhttp-3.6.0.jar:na]
    at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:120) ~[okhttp-3.6.0.jar:na]
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92) ~[okhttp-3.6.0.jar:na]
    at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67) ~[okhttp-3.6.0.jar:na]
    at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:179) ~[okhttp-3.6.0.jar:na]
    at okhttp3.RealCall.execute(RealCall.java:63) ~[okhttp-3.6.0.jar:na]
    at org.protege.editor.owl.client.LocalHttpClient.get(LocalHttpClient.java:932) [protege-editor-owl-5.1.2-SNAPSHOT.jar:na]
    at org.protege.editor.owl.client.LocalHttpClient.getCodes(LocalHttpClient.java:965) [protege-editor-owl-5.1.2-SNAPSHOT.jar:na]
    at gov.nih.nci.ui.NCIEditTab.generateCodes(NCIEditTab.java:457) [nci-edit-tab-1.4.1.jar:na]
    at gov.nih.nci.ui.dialog.NCIClassCreationDialog.buildNewClass(NCIClassCreationDialog.java:411) [nci-edit-tab-1.4.1.jar:na]
    at gov.nih.nci.ui.dialog.NCIClassCreationDialog.showDialog(NCIClassCreationDialog.java:338) [nci-edit-tab-1.4.1.jar:na]
    at gov.nih.nci.ui.NCIToldOWLClassHierarchyViewComponent.splitOrCloneClass(NCIToldOWLClassHierarchyViewComponent.java:317) [nci-edit-tab-1.4.1.jar:na]
    at gov.nih.nci.ui.NCIToldOWLClassHierarchyViewComponent.cloneClass(NCIToldOWLClassHierarchyViewComponent.java:291) [nci-edit-tab-1.4.1.jar:na]
    at gov.nih.nci.ui.action.CloneClassAction.actionPerformed(CloneClassAction.java:30) [nci-edit-tab-1.4.1.jar:na]
bdionne commented 1 year ago

Logs-Exception-Gen-Codes.txt

bdionne commented 1 year ago

A new protege tag, 4.2.0-dev2, is available, that adds retry logic to all client/server interactions. This build should be tested thoroughly on the NCI network, and the logs reviewed for these socket problems.

Two new variables, that can be configured with -D options at startup are:

org.protege.owl.client.retries (default 3) org.protege.owl.client.retries.sleep (default 2000)

These can be used should there be a need to adjust the defaults. These errors are new so they should be monitored to see if this is a situation that worsens.