Stream: troubleshooting

Topic: Glitch in UI when deleting Datasets


view this post on Zulip Björn Selent (Jan 23 2026 at 10:58):

Hi all,
since upgrading to dataverse 6.9 we encounter a very odd bug in our installation. When someone creates a new dataset and (for whatever reason) deletes it straight away the UI displays an "internal server error" and we find a warning in the payara logs.
UI error
payara log

The same error occurs sometimes when the last dataset inside of a collection is deleted
last dataset

By debugging we ended at DatasetPage.java lines 3130-3136
debugging
We are out of ideas how to proceed to find the root cause of the bug and fix it. Any hints are highly appreciated.

view this post on Zulip Oliver Bertuch (Jan 23 2026 at 11:30):

The problem with getting a clue about what's going on is related to how exceptions are treated in EJBs. Unless you throw custom exceptions that are annotated as being an @ApplicationException, EJB will always wrap any bubbling exceptions into their own (making sure it handles transaction rollbacks properly). So the log output you screenshotted is good, but there should be more related output around it regarding the exception with a root cause. Can you please add that output as well? (Also, please don't be afraid to paste them instead of a screenshot. Makes reading them easier sometimes.)

view this post on Zulip Oliver Bertuch (Jan 23 2026 at 12:31):

I tried to reproduce this problem with a freshly deployed local Dataverse instance (using containers). I wasn't able to trigger the seen behaviour for an unpublished dataset nor for an unpublished dataset version.

view this post on Zulip Oliver Bertuch (Jan 23 2026 at 12:32):

I did not add any files to the dataset though... Your debugging so far may suggest this is related to File IO. (It's always good to confirm this to limit the possibilities where a bug may be hiding.)

view this post on Zulip Björn Selent (Jan 23 2026 at 12:38):

Hi, thanks for getting back. We also tried with a fresh install and could not reproduce the error. Importing our db also didn't trigger the bug. We think it might be related to indexing. Here is the output form the payara logs anyways:

[2026-01-23T11:47:51.382+0100] [Payara 6.2025.10] [WARNING] [AS-EJB-00056] [jakarta.enterprise.ejb.container] [tid: _ThreadID=102 _ThreadName=http-thread-pool::jk-connector(2)] [timeMillis: 1769165271382] [levelValue: 900] [[
  A system exception occurred during an invocation on EJB PermissionServiceBean, method: public edu.harvard.iq.dataverse.PermissionServiceBean$RequestPermissionQuery edu.harvard.iq.dataverse.PermissionServiceBean.requestOn(edu.harvard.iq.dataverse.engine.command.DataverseRequest,edu.harvard.iq.dataverse.DvObject)]]

[2026-01-23T11:47:51.382+0100] [Payara 6.2025.10] [WARNING] [] [jakarta.enterprise.ejb.container] [tid: _ThreadID=102 _ThreadName=http-thread-pool::jk-connector(2)] [timeMillis: 1769165271382] [levelValue: 900] [[

jakarta.ejb.EJBException
    at com.sun.ejb.containers.EJBContainerTransactionManager.processSystemException(EJBContainerTransactionManager.java:723)
    at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:652)
    at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:482)
    at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4601)
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2134)
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2104)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:90)
    at jdk.proxy71/jdk.proxy71.$Proxy407.requestOn(Unknown Source)
    at edu.harvard.iq.dataverse.__EJB31_Generated__PermissionServiceBean__Intf____Bean__.requestOn(Unknown Source)
    at edu.harvard.iq.dataverse.PermissionsWrapper.doesSessionUserHaveDataSetPermission(PermissionsWrapper.java:191)
    at edu.harvard.iq.dataverse.PermissionsWrapper.canViewUnpublishedDataset(PermissionsWrapper.java:154)
    at edu.harvard.iq.dataverse.PermissionsWrapper$Proxy$_$$_WeldClientProxy.canViewUnpublishedDataset(Unknown Source)
    at edu.harvard.iq.dataverse.search.SearchIncludeFragment.canSeeCurationStatus(SearchIncludeFragment.java:1559)
    at jdk.internal.reflect.GeneratedMethodAccessor816.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:569)
    at jakarta.el.ELUtil.invokeMethod(ELUtil.java:215)
    at jakarta.el.BeanELResolver.invoke(BeanELResolver.java:487)
    at jakarta.el.CompositeELResolver.invoke(CompositeELResolver.java:198)
    at org.glassfish.expressly.parser.AstValue.getValue(AstValue.java:298)
    at org.glassfish.expressly.parser.AstValue.getValue(AstValue.java:144)
    at org.glassfish.expressly.ValueExpressionImpl.getValue(ValueExpressionImpl.java:138)
    at org.jboss.weld.module.web.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:73)
    at jakarta.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:188)
    at jakarta.faces.component.UIComponentBase.isRendered(UIComponentBase.java:309)
    at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:250)
    at com.sun.faces.renderkit.html_basic.PassthroughRenderer.encodeChildren(PassthroughRenderer.java:75)
    at jakarta.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:557)
    at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:257)
    at com.sun.faces.renderkit.html_basic.TableRenderer.renderRow(TableRenderer.java:351)
    at com.sun.faces.renderkit.html_basic.TableRenderer.encodeChildren(TableRenderer.java:135)
    at jakarta.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:557)
    at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:257)
    at com.sun.faces.renderkit.html_basic.PassthroughRenderer.encodeChildren(PassthroughRenderer.java:75)
    at jakarta.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:557)
    at jakarta.faces.component.UIComponent.encodeAll(UIComponent.java:1435)
    at jakarta.faces.component.UIComponent.encodeAll(UIComponent.java:1438)
    at jakarta.faces.component.UIComponent.encodeAll(UIComponent.java:1438)
    at jakarta.faces.component.UIComponent.encodeAll(UIComponent.java:1438)
    at jakarta.faces.component.UIComponent.encodeAll(UIComponent.java:1438)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:448)
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:160)
    at jakarta.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:125)
    at jakarta.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:125)
    at jakarta.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:125)
    at org.omnifaces.viewhandler.OmniViewHandler.renderView(OmniViewHandler.java:151)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:93)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:72)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:150)
    at jakarta.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:692)
    at jakarta.faces.webapp.FacesServlet.service(FacesServlet.java:449)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1554)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:331)
    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.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:816)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:683)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:527)
    at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:497)
    at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:379)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
    at org.ocpsoft.rewrite.servlet.impl.HttpRewriteResultHandler.handleResult(HttpRewriteResultHandler.java:42)
    at org.ocpsoft.rewrite.servlet.RewriteFilter.rewrite(RewriteFilter.java:297)
    at org.ocpsoft.rewrite.servlet.RewriteFilter.doFilter(RewriteFilter.java:198)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:253)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:211)
    at edu.harvard.iq.dataverse.filter.CorsFilter.doFilter(CorsFilter.java:89)
    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:166)
    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:174)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:153)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:196)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:88)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:246)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:178)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:118)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:96)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:51)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:510)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:82)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:83)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:101)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:535)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:515)
    at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.lang.NullPointerException
``

view this post on Zulip Oliver Bertuch (Jan 23 2026 at 12:48):

@Björn Selent if you don't min - would you wrap your log output in a code block? (Three "`" ) Thanks!

view this post on Zulip Philip Durbin 🚀 (Jan 23 2026 at 12:49):

Hmm:

Caused by: java.lang.NullPointerException

What's null?

view this post on Zulip Oliver Bertuch (Jan 23 2026 at 12:50):

edu.harvard.iq.dataverse.search.SearchIncludeFragment.canSeeCurationStatus(SearchIncludeFragment.java:1559) is:

return permissionsWrapper.canViewUnpublishedDataset(getDataverseRequest(),(Dataset) dvObjectService.findDvObject(datasetId));

This would be my next stop for trying to dig deeper.

view this post on Zulip Philip Durbin 🚀 (Jan 23 2026 at 12:55):

https://github.com/IQSS/dataverse/blob/v6.9/src/main/java/edu/harvard/iq/dataverse/search/SearchIncludeFragment.java#L1559

return permissionsWrapper.canViewUnpublishedDataset(getDataverseRequest(),(Dataset) dvObjectService.findDvObject(datasetId));

So permissionsWrapper or dvObjectService is null? That would be strange.

view this post on Zulip Philip Durbin 🚀 (Jan 23 2026 at 12:55):

@Björn Selent if you can replicate the bug on https://demo.dataverse.org please give us detailed steps. I wasn't able to.

view this post on Zulip Björn Selent (Jan 23 2026 at 13:00):

No, I can't reproduce the bug on demo.dataverse.org.
But what I can see and might be related is, that after successful deleting the dataset, it is still shown in the overview until the page is reloaded
Screenshot AFTER successfully deleting the dataset

view this post on Zulip Philip Durbin 🚀 (Jan 23 2026 at 13:02):

interesting

view this post on Zulip Oliver Bertuch (Jan 23 2026 at 13:11):

Yeah, I did recognize that too!

view this post on Zulip Oliver Bertuch (Jan 23 2026 at 13:11):

BTW this is also true for a draft dataset version on an already published dataset.

view this post on Zulip Philip Durbin 🚀 (Jan 23 2026 at 14:28):

Sounds like two different bugs, potentially. :lady_beetle: :lady_beetle:


Last updated: Apr 03 2026 at 06:08 UTC