Stream: troubleshooting

Topic: OAI-PMH Internal Server Error


view this post on Zulip CΓ©sar Ferreira (Oct 26 2023 at 15:58):

Hi everyone, I and @zbenta are having some issues with OAI-PMH endpoint in our dataverse instalation at https://repositorio.polen.fccn.pt/oai , the server responds with an internal server error and the logs for payara shows as follow. Any ideas?

[2023-10-26T15:33:47.554+0000] [Payara 5.2022.3] [WARNING] [] [javax.enterprise.web] [tid: _ThreadID=157 _ThreadName=http-thread-pool::http-listener-1(2)] [timeMillis: 1698334427554] [levelValue: 900] [[
StandardWrapperValve[OAIServlet]: Servlet.service() for servlet OAIServlet threw exception
io.gdcc.xoai.exceptions.BadVerbException: No argument 'verb' found
at io.gdcc.xoai.dataprovider.request.RequestBuilder.buildRawRequest(RequestBuilder.java:119)
at edu.harvard.iq.dataverse.harvest.server.web.servlet.OAIServlet.processRequest(OAIServlet.java:265)
at edu.harvard.iq.dataverse.harvest.server.web.servlet.OAIServlet.doGet(OAIServlet.java:250)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:645)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:750)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1637)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:331)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:211)
at org.glassfish.tyrus.servlet.TyrusServletFilter.doFilter(TyrusServletFilter.java:282)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:253)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:211)
at org.ocpsoft.rewrite.servlet.RewriteFilter.doFilter(RewriteFilter.java:226)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:253)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:211)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:757)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:577)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:158)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:372)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:239)
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:182)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:156)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:201)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:95)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:524)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:89)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:94)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:33)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:114)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:569)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:549)
at java.base/java.lang.Thread.run(Thread.java:829)
]]

view this post on Zulip Philip Durbin πŸš€ (Oct 26 2023 at 17:09):

Hi! Based on https://repositorio.polen.fccn.pt/api/info/version it looks like you're running 5.13.

So that's https://github.com/IQSS/dataverse/blob/v5.13/src/main/java/edu/harvard/iq/dataverse/harvest/server/web/servlet/OAIServlet.java#L250

And https://github.com/gdcc/xoai/blob/xoai-5.0.0/xoai-data-provider/src/main/java/io/gdcc/xoai/dataprovider/request/RequestBuilder.java#L119

view this post on Zulip Philip Durbin πŸš€ (Oct 26 2023 at 17:11):

https://repositorio.polen.fccn.pt/oai?verb=ListMetadataFormats works. Is it just that you were missing a verb?

view this post on Zulip zbenta (Oct 27 2023 at 08:37):

:man_gesturing_ok: We could swear that we did not have to pass any extra arguments to the endpoint. Thanks @Philip Durbin for the help.

view this post on Zulip Philip Durbin πŸš€ (Oct 27 2023 at 11:49):

Sure! I don't know how OAI-PMH is supposed to work, if it's supposed to return a 404 if there's no verb.

view this post on Zulip Oliver Bertuch (Oct 27 2023 at 12:04):

http://www.openarchives.org/OAI/openarchivesprotocol.html#StatusCodes

view this post on Zulip Philip Durbin πŸš€ (Oct 27 2023 at 12:05):

"OAI-PMH repositories may employ HTTP Status-Codes in addition to "200 OK"."

view this post on Zulip Philip Durbin πŸš€ (Oct 27 2023 at 12:05):

So I guess it's up to us. "May".

view this post on Zulip Oliver Bertuch (Oct 27 2023 at 12:07):

Simply throwing a ServletException in OAIServlet was maybe not the best choice in hindsight

view this post on Zulip Oliver Bertuch (Oct 27 2023 at 12:08):

(Throwing such an exception will always trigger an error 500)

view this post on Zulip Philip Durbin πŸš€ (Oct 27 2023 at 12:08):

I would prefer a non-JSF page for the 404 at /oai ... https://demo.dataverse.org/oai for example. But I guess JSF is going away (thank goodness).

view this post on Zulip Oliver Bertuch (Oct 27 2023 at 12:09):

IMHO we should move that servlet to a JAX-RS endpoint

view this post on Zulip Philip Durbin πŸš€ (Oct 27 2023 at 12:09):

Sure, sounds good. SWORD too?

view this post on Zulip Philip Durbin πŸš€ (Oct 27 2023 at 12:10):

This is starting to feel like it belongs in #dev :grinning:

view this post on Zulip Oliver Bertuch (Oct 27 2023 at 12:10):

Probably. IIRC SWORD did have some support for this already, but not sure.

view this post on Zulip Oliver Bertuch (Oct 27 2023 at 12:11):

Well what we should say here: @zbenta @CΓ©sar Ferreira if you want the behaviour changed, please open an issue. A link to this conversation would be much appreciated!


Last updated: Oct 30 2025 at 06:21 UTC