Failed to delete PET-MR Session - Error 500

55 views
Skip to first unread message

Duncan Smith

unread,
Jul 22, 2022, 6:39:13 AM7/22/22
to xnat_discussion
Hi all,

A researcher was uploading a large PET-MR experiment to our 1.7.6 XNAT and at some point in the upload process (via a custom script) it was interrupted. This led to an incomplete session consisting of around 33,000 files, around 16GB. The session needs removing before they can re-attempt the upload. 

They tried to remove this via the Delete option on the Actions bar of the experiment page, but received "ERROR 500 - Failed to delete PET-MR Session". When I tried to do this with an admin account, I received the same error. I first thought it may be related to some of the larger scans, and I was able to delete those one by one via the Edit Session page. Now, even with an empty session, we still receive the 500 error.

There are no entries in the XNAT logs when trying to delete the session, but in Tomcat's Catalina.out I see the following:

java.lang.NullPointerException
    at org.nrg.xdat.om.base.BaseXnatImagesessiondata.delete(BaseXnatImagesessiondata.java:2945)
    at org.nrg.xnat.restlet.resources.SecureResource.deleteItem(SecureResource.java:1644)
    at org.nrg.xnat.restlet.resources.SubjAssessmentResource.handleDelete(SubjAssessmentResource.java:559)
    at org.restlet.Finder.handle(Finder.java:361)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at org.restlet.Filter.handle(Filter.java:195)
    at org.restlet.Router.handle(Router.java:504)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at org.restlet.Filter.handle(Filter.java:195)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at org.restlet.Filter.handle(Filter.java:195)
    at org.restlet.Router.handle(Router.java:504)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at org.restlet.Filter.handle(Filter.java:195)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at org.restlet.Filter.handle(Filter.java:195)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at com.noelios.restlet.StatusFilter.doHandle(StatusFilter.java:130)
    at org.restlet.Filter.handle(Filter.java:195)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at org.restlet.Filter.handle(Filter.java:195)
    at com.noelios.restlet.ChainHelper.handle(ChainHelper.java:124)
    at com.noelios.restlet.application.ApplicationHelper.handle(ApplicationHelper.java:112)
    at org.restlet.Application.handle(Application.java:341)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at org.restlet.Filter.handle(Filter.java:195)
    at org.restlet.Router.handle(Router.java:504)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at org.restlet.Filter.handle(Filter.java:195)
    at org.restlet.Router.handle(Router.java:504)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at com.noelios.restlet.StatusFilter.doHandle(StatusFilter.java:130)
    at org.restlet.Filter.handle(Filter.java:195)
    at org.restlet.Filter.doHandle(Filter.java:150)
    at org.restlet.Filter.handle(Filter.java:195)
    at com.noelios.restlet.ChainHelper.handle(ChainHelper.java:124)
    at org.restlet.Component.handle(Component.java:673)
    at org.restlet.Server.handle(Server.java:331)
    at com.noelios.restlet.ServerHelper.handle(ServerHelper.java:68)
    at com.noelios.restlet.http.HttpServerHelper.handle(HttpServerHelper.java:147)
    at com.noelios.restlet.ext.servlet.ServerServlet.service(ServerServlet.java:881)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:239)
    at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:215)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.nrg.xnat.security.XnatInitCheckFilter.doFilterInternal(XnatInitCheckFilter.java:41)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.nrg.xnat.security.XnatExpiredPasswordFilter.doFilterInternal(XnatExpiredPasswordFilter.java:181)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.nrg.xnat.security.XnatBasicAuthenticationFilter.doFilterInternal(XnatBasicAuthenticationFilter.java:101)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:155)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:157)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:221)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

I've tried:

- Removing the session with curl (again met with an error)
- Using Manage Files > Update File Data
- Restarting Tomcat
- Checking the PET-MR Datatype is setup correctly
- Checking the disk space

I see the experiment still has an entry in the archive, and in its /RESOURCES/metadata folder there is a .json file with a large number of entries that seem to point to individual .img files. But I notice in all the url paths a null value:

"...experiments/<experimentname>/scans/null/resources/DICOM/files/<filename>.img"

And in it's /SCANS folder, there are still 11 scans with DICOM data in, although in the UI it shows all scans deleted.

Any suggestions would be much appreciated.

Thanks,
Duncan

Duncan Smith

unread,
Aug 1, 2022, 12:53:33 PM8/1/22
to xnat_discussion
Hi all,

Does anyone have any suggested next steps to help resolve this?

To add to the above, I've looked at the parent subject's XML file and there are no references to this session I am trying to delete. I am able to create folders and upload new files to it via Manage Files, and can delete them, but despite that when trying to delete the Session I get the same error.

I'm reluctant to allow researchers to upload to this problematic session, but they are having to temporarily change their naming convention as a workaround for this issue so are needing it fixed if/when possible.

Thanks,
Duncan
Reply all
Reply to author
Forward
0 new messages