ebi-pf-team / interproscan

Genome-scale protein function classification
Apache License 2.0
303 stars 67 forks source link

Intermitent error with www.ebi.ac.uk/interpro/match-lookup #376

Closed max-l closed 3 months ago

max-l commented 3 months ago

With interproscan-5.69-101.0, I can successfuly run the following test:


bash-4.2$ curl https://www.ebi.ac.uk/interpro/match-lookup/matches?md5=2E38C8D754C63117A4FA5F5E44F2194E
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<kvSequenceEntryXML>
    <matches>
        <match>
            <matchId>22468381</matchId>
            <proteinMD5>2E38C8D754C63117A4FA5F5E44F2194E</proteinMD5>
            <hit>GENE3D,4.3.0,G3DSA:1.20.58.900,2cxfA00,477,660,477-660-S,29.1,2.7E-6,[],6,168,174,477,660,27.8,7.0E-6,</hit>
            <hit>MOBIDB_LITE,2.0,mobidb-lite,mobidb-lite,814,862,814-862-S,0.0,0.0,,0,0,0,0,0,0.0,0.0,</hit>
            <hit>COILS,2.2.1,Coil,Coil,371,398,371-398-S,0.0,0.0,,0,0,0,0,0,0.0,0.0,</hit>
            <hit>PANTHER,18.0,PTHR43158,PTHR43158:SF2,20,243,20-243-S,146.9,2.2E-39,..,4,222,0,17,297,146.9,2.2E-39,AN6</hit>
            <hit>SUPERFAMILY,1.75,SSF52540,0051025,17,239,17-239-S,0.0,5.93E-24,,0,0,284,0,0,0.0,5.93E-24,</hit>
            <hit>PROSITE_PROFILES,2023_05,PS50893,PS50893,25,254,25-254-S,9.250543,0.0,,0,0,0,0,0,0.0,0.0,9M7I54M6D41M8I11M8D26M11D74M</hit>
            <hit>SMART,9.0,SM00382,SM00382,56,230,56-230-S,27.8,0.0015,[],1,92,92,0,0,27.8,0.0015,</hit>
            <hit>MOBIDB_LITE,2.0,mobidb-lite,mobidb-lite,674,727,674-727-S,0.0,0.0,,0,0,0,0,0,0.0,0.0,</hit>
            <hit>GENE3D,4.3.0,G3DSA:3.40.50.300,4huqA00,23,260,23-260-S,85.0,2.1E-23,[],3,233,290,23,260,83.5,6.2E-23,</hit>
            <hit>PFAM,37.0,PF00005,PF00005,47,181,47-181-S,44.6,6.8E-8,[.,1,125,137,47,184,43.1,2.0E-7,</hit>
            <hit>COILS,2.2.1,Coil,Coil,476,496,476-496-S,0.0,0.0,,0,0,0,0,0,0.0,0.0,</hit>
        </match>
    </matches>
</kvSequenceEntryXML>

And aprox 1 time out of 3, I get this failure:


bash-4.2$ curl https://www.ebi.ac.uk/interpro/match-lookup/matches?md5=2E38C8D754C63117A4FA5F5E44F2194E
<!doctype html><html lang="en"><head><title>HTTP Status 500 – Internal Server Error</title><style type="text/css">h1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} h2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} h3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} body {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} b {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} p {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;} a {color:black;} a.name {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 500 – Internal Server Error</h1><hr class="line" /><p><b>Type</b> Exception Report</p><p><b>Message</b> Request processing failed; nested exception is com.sleepycat.je.EnvironmentFailureException: (JE 18.3.12) Environment must be closed, caused by: com.sleepycat.je.EnvironmentFailureException: Environment invalid because of previous exception: (JE 18.3.12) &#47;net&#47;isilonP&#47;public&#47;rw&#47;webadmin&#47;tomcat&#47;bases&#47;interpro&#47;tc-ipr-precalc&#47;deploy&#47;data&#47;match_db Latch timeout. BIN3561290 currentThread: Thread[http-nio-8100-exec-390,5,main] currentTime: 1723060458282 exclusiveOwner: -none- UNEXPECTED_STATE_FATAL: Unexpected internal state, unable to continue. Environment is invalid and must be closed.</p><p><b>Description</b> The server encountered an unexpected condition that prevented it from fulfilling the request.</p><p><b>Exception</b></p><pre>org.springframework.web.util.NestedServletException: Request processing failed; nested exception is com.sleepycat.je.EnvironmentFailureException: (JE 18.3.12) Environment must be closed, caused by: com.sleepycat.je.EnvironmentFailureException: Environment invalid because of previous exception: (JE 18.3.12) &#47;net&#47;isilonP&#47;public&#47;rw&#47;webadmin&#47;tomcat&#47;bases&#47;interpro&#47;tc-ipr-precalc&#47;deploy&#47;data&#47;match_db Latch timeout. BIN3561290 currentThread: Thread[http-nio-8100-exec-390,5,main] currentTime: 1723060458282 exclusiveOwner: -none- UNEXPECTED_STATE_FATAL: Unexpected internal state, unable to continue. Environment is invalid and must be closed.
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:239)
    net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:215)
</pre><p><b>Root Cause</b></p><pre>com.sleepycat.je.EnvironmentFailureException: (JE 18.3.12) Environment must be closed, caused by: com.sleepycat.je.EnvironmentFailureException: Environment invalid because of previous exception: (JE 18.3.12) &#47;net&#47;isilonP&#47;public&#47;rw&#47;webadmin&#47;tomcat&#47;bases&#47;interpro&#47;tc-ipr-precalc&#47;deploy&#47;data&#47;match_db Latch timeout. BIN3561290 currentThread: Thread[http-nio-8100-exec-390,5,main] currentTime: 1723060458282 exclusiveOwner: -none- UNEXPECTED_STATE_FATAL: Unexpected internal state, unable to continue. Environment is invalid and must be closed.
    com.sleepycat.je.EnvironmentFailureException.wrapSelf(EnvironmentFailureException.java:230)
    com.sleepycat.je.dbi.EnvironmentImpl.checkIfInvalid(EnvironmentImpl.java:1835)
    com.sleepycat.je.dbi.EnvironmentImpl.checkOpen(EnvironmentImpl.java:1844)
    com.sleepycat.je.Environment.checkOpen(Environment.java:2697)
    com.sleepycat.je.Database.checkEnv(Database.java:2413)
    com.sleepycat.je.Database.openCursor(Database.java:939)
    com.sleepycat.je.SecondaryDatabase.openCursor(SecondaryDatabase.java:697)
    com.sleepycat.je.SecondaryDatabase.openCursor(SecondaryDatabase.java:137)
    com.sleepycat.persist.BasicIndex.cursor(BasicIndex.java:281)
    com.sleepycat.persist.BasicIndex.cursor(BasicIndex.java:272)
    com.sleepycat.persist.BasicIndex.entities(BasicIndex.java:235)
    com.sleepycat.persist.SecondaryIndex.entities(SecondaryIndex.java:782)
    uk.ac.ebi.interpro.scan.precalc.server.service.impl.MatchesServiceImpl.getMatches(MatchesServiceImpl.java:142)
    uk.ac.ebi.interpro.scan.precalc.server.web.MatchesController.getMatches(MatchesController.java:57)
    jdk.internal.reflect.GeneratedMethodAccessor85.invoke(Unknown Source)
    java.base&#47;jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.base&#47;java.lang.reflect.Method.invoke(Method.java:566)
    org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1043)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:239)
    net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:215)
</pre><p><b>Root Cause</b></p><pre>com.sleepycat.je.EnvironmentFailureException: Environment invalid because of previous exception: (JE 18.3.12) &#47;net&#47;isilonP&#47;public&#47;rw&#47;webadmin&#47;tomcat&#47;bases&#47;interpro&#47;tc-ipr-precalc&#47;deploy&#47;data&#47;match_db Latch timeout. BIN3561290 currentThread: Thread[http-nio-8100-exec-390,5,main] currentTime: 1723060458282 exclusiveOwner: -none- UNEXPECTED_STATE_FATAL: Unexpected internal state, unable to continue. Environment is invalid and must be closed.
    com.sleepycat.je.EnvironmentFailureException.unexpectedState(EnvironmentFailureException.java:459)
    com.sleepycat.je.latch.LatchSupport.handleTimeout(LatchSupport.java:211)
    com.sleepycat.je.latch.LatchImpl.acquireExclusive(LatchImpl.java:63)
    com.sleepycat.je.latch.LatchImpl.acquireShared(LatchImpl.java:107)
    com.sleepycat.je.tree.IN.latchShared(IN.java:563)
    com.sleepycat.je.tree.Tree.latchChildShared(Tree.java:353)
    com.sleepycat.je.tree.Tree.search(Tree.java:2255)
    com.sleepycat.je.tree.Tree.search(Tree.java:2152)
    com.sleepycat.je.dbi.CursorImpl.searchExact(CursorImpl.java:1972)
    com.sleepycat.je.Cursor.readPrimaryAfterGet(Cursor.java:4943)
    com.sleepycat.je.SecondaryCursor.readPrimaryAfterGet(SecondaryCursor.java:1734)
    com.sleepycat.je.SecondaryCursor.search(SecondaryCursor.java:1535)
    com.sleepycat.je.SecondaryCursor.getInternal(SecondaryCursor.java:584)
    com.sleepycat.je.SecondaryCursor.get(SecondaryCursor.java:532)
    com.sleepycat.util.keyrange.RangeCursor.doGetSearchKeyRange(RangeCursor.java:1356)
    com.sleepycat.util.keyrange.RangeCursor.getFirst(RangeCursor.java:322)
    com.sleepycat.util.keyrange.RangeCursor.getNext(RangeCursor.java:620)
    com.sleepycat.persist.BasicCursor.next(BasicCursor.java:103)
    com.sleepycat.persist.BasicCursor.next(BasicCursor.java:96)
    uk.ac.ebi.interpro.scan.precalc.server.service.impl.MatchesServiceImpl.getMatches(MatchesServiceImpl.java:145)
    uk.ac.ebi.interpro.scan.precalc.server.web.MatchesController.getMatches(MatchesController.java:57)
    jdk.internal.reflect.GeneratedMethodAccessor85.invoke(Unknown Source)
    java.base&#47;jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.base&#47;java.lang.reflect.Method.invoke(Method.java:566)
    org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
    org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
    org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)
    org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)
    org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1043)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:239)
    net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:215)
</pre><p><b>Note</b> The full stack trace of the root cause is available in the server logs.</p><hr class="line" /><h3>Apache Tomcat/9.0.21</h3></body></html>bash-4.2$ 

My configuration is "default", as follows:

####################################
# Precalculated match lookup service
####################################

# By default, if the sequence already has matches available from the EBI, this service will look them
# up for you.  Note: at present it will always return all the available matches, ignoring any -appl options
# set on the command line
precalculated.match.lookup.service.url=https://www.ebi.ac.uk/interpro/match-lookup
precalculated.match.protein.lookup.batch.size=100
precalculated.match.protein.insert.batch.size=500
precalculated.match.protein.insert.batch.size.nolookup=4000

# Proxy set up
precalculated.match.lookup.service.proxy.host=
precalculated.match.lookup.service.proxy.port=3128
matthiasblum commented 3 months ago

Hi @max-l,

Thank you for reporting this. The issue has been addressed.