[CDS API] Accessing a deleted folder returns 500 error

Issue #664 resolved
Will Lunniss created an issue

Specifically, if you acess a (virtual) folder which used to have media in it you get <result/> and HTTP 500 error

If you access a (virtual) folder with only deleted (virtual) folders in it, you get the old content (which is OK).

To reproduce, delete a season of a TV show, then browse Series->Show->Deleted Season, or browse fia Folders->etc...

Instead of the empty tag, the server should return the standard empty directory response (which it does if you access a folder that never existed in the first place, e.g. season 1000).

<contentDirectory returnedSize="0" totalMatched="0">
   <objects/>
</contentDirectory>

Comments (2)

  1. Will Lunniss reporter
    2013-05-15 16:56:49,474 ERROR [ContainerNode] Cannot retrieve results of action command: Cannot execute library command for list: null
    org.serviio.upnp.service.contentdirectory.command.CommandExecutionException: Cannot execute library command for list: null
            at org.serviio.upnp.service.contentdirectory.command.AbstractCommand.retrieveItemList(AbstractCommand.java:135)
            at org.serviio.upnp.service.contentdirectory.definition.ContainerNode.executeListAction(ContainerNode.java:241)
            at org.serviio.upnp.service.contentdirectory.definition.ContainerNode.findContainerItems(ContainerNode.java:181)
            at org.serviio.upnp.service.contentdirectory.definition.ContainerNode.retrieveContainerItems(ContainerNode.java:83)
            at org.serviio.upnp.service.contentdirectory.definition.ActionNode.retrieveContainerItems(ActionNode.java:135)
            at org.serviio.upnp.service.contentdirectory.ContentDirectoryEngine.browse(ContentDirectoryEngine.java:102)
            at org.serviio.upnp.service.contentdirectory.rest.resources.server.CDSBrowseServerResource.browse(CDSBrowseServerResource.java:108)
            at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.restlet.resource.ServerResource.doHandle(ServerResource.java:449)
            at org.restlet.resource.ServerResource.get(ServerResource.java:645)
            at org.restlet.resource.ServerResource.doHandle(ServerResource.java:527)
            at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:587)
            at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:299)
            at org.serviio.restlet.AbstractProEditionServerResource.doConditionalHandle(AbstractProEditionServerResource.java:35)
            at org.serviio.upnp.service.contentdirectory.rest.resources.server.AbstractCDSServerResource.doConditionalHandle(AbstractCDSServerResource.java:52)
            at org.serviio.upnp.service.contentdirectory.rest.resources.server.AbstractRestrictedCDSServerResource.doConditionalHandle(AbstractRestrictedCDSServerResource.java:53)
            at org.restlet.resource.ServerResource.handle(ServerResource.java:846)
            at org.restlet.resource.Finder.handle(Finder.java:510)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Router.doHandle(Router.java:497)
            at org.restlet.routing.Router.handle(Router.java:737)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:151)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111)
            at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:72)
            at org.restlet.Application.handle(Application.java:391)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Router.doHandle(Router.java:497)
            at org.restlet.routing.Router.handle(Router.java:737)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Router.doHandle(Router.java:497)
            at org.restlet.routing.Router.handle(Router.java:737)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:151)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111)
            at org.restlet.Component.handle(Component.java:388)
            at org.restlet.Server.handle(Server.java:488)
            at org.restlet.engine.http.connector.BaseServerHelper.handle(BaseServerHelper.java:158)
            at org.restlet.engine.http.connector.BaseServerHelper.handleInbound(BaseServerHelper.java:167)
            at org.restlet.engine.http.connector.BaseHelper.handleNextInbound(BaseHelper.java:418)
            at org.restlet.engine.http.connector.Connection.readMessages(Connection.java:696)
            at org.restlet.engine.http.connector.Controller$2.run(Controller.java:95)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
            at java.lang.Thread.run(Thread.java:662)
    Caused by: java.lang.NullPointerException
            at org.serviio.delivery.subtitles.SubtitlesService.selectBestSubtitleFile(SubtitlesService.java:189)
            at org.serviio.delivery.subtitles.SubtitlesService.findExternalSubtitleFile(SubtitlesService.java:166)
            at org.serviio.delivery.subtitles.SubtitlesService.isSoftSubsAvailable(SubtitlesService.java:74)
            at org.serviio.upnp.service.contentdirectory.command.ResourceValuesBuilder.generateSubtitlesResource(ResourceValuesBuilder.java:48)
            at org.serviio.upnp.service.contentdirectory.command.ObjectValuesBuilder.buildObjectValues(ObjectValuesBuilder.java:102)
            at org.serviio.upnp.service.contentdirectory.command.AbstractEntityItemCommand.generateValuesForEntity(AbstractEntityItemCommand.java:127)
            at org.serviio.upnp.service.contentdirectory.command.AbstractEntityItemCommand.retrieveList(AbstractEntityItemCommand.java:57)
            at org.serviio.upnp.service.contentdirectory.command.AbstractCommand.retrieveItemList(AbstractCommand.java:129)
            ... 57 more
    2013-05-15 16:56:49,475 WARN  [CDSBrowseServerResource] Browse for object id V_S^SER_57^SSN_2 failed with exception: org.serviio.upnp.service.contentdirectory.command.CommandExecutionException: Cannot execute library command for list: null
    java.lang.RuntimeException: org.serviio.upnp.service.contentdirectory.command.CommandExecutionException: Cannot execute library command for list: null
            at org.serviio.upnp.service.contentdirectory.definition.ContainerNode.executeListAction(ContainerNode.java:244)
            at org.serviio.upnp.service.contentdirectory.definition.ContainerNode.findContainerItems(ContainerNode.java:181)
            at org.serviio.upnp.service.contentdirectory.definition.ContainerNode.retrieveContainerItems(ContainerNode.java:83)
            at org.serviio.upnp.service.contentdirectory.definition.ActionNode.retrieveContainerItems(ActionNode.java:135)
            at org.serviio.upnp.service.contentdirectory.ContentDirectoryEngine.browse(ContentDirectoryEngine.java:102)
            at org.serviio.upnp.service.contentdirectory.rest.resources.server.CDSBrowseServerResource.browse(CDSBrowseServerResource.java:108)
            at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.restlet.resource.ServerResource.doHandle(ServerResource.java:449)
            at org.restlet.resource.ServerResource.get(ServerResource.java:645)
            at org.restlet.resource.ServerResource.doHandle(ServerResource.java:527)
            at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:587)
            at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:299)
            at org.serviio.restlet.AbstractProEditionServerResource.doConditionalHandle(AbstractProEditionServerResource.java:35)
            at org.serviio.upnp.service.contentdirectory.rest.resources.server.AbstractCDSServerResource.doConditionalHandle(AbstractCDSServerResource.java:52)
            at org.serviio.upnp.service.contentdirectory.rest.resources.server.AbstractRestrictedCDSServerResource.doConditionalHandle(AbstractRestrictedCDSServerResource.java:53)
            at org.restlet.resource.ServerResource.handle(ServerResource.java:846)
            at org.restlet.resource.Finder.handle(Finder.java:510)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Router.doHandle(Router.java:497)
            at org.restlet.routing.Router.handle(Router.java:737)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:151)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111)
            at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:72)
            at org.restlet.Application.handle(Application.java:391)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Router.doHandle(Router.java:497)
            at org.restlet.routing.Router.handle(Router.java:737)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Router.doHandle(Router.java:497)
            at org.restlet.routing.Router.handle(Router.java:737)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:151)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111)
            at org.restlet.Component.handle(Component.java:388)
            at org.restlet.Server.handle(Server.java:488)
            at org.restlet.engine.http.connector.BaseServerHelper.handle(BaseServerHelper.java:158)
            at org.restlet.engine.http.connector.BaseServerHelper.handleInbound(BaseServerHelper.java:167)
            at org.restlet.engine.http.connector.BaseHelper.handleNextInbound(BaseHelper.java:418)
            at org.restlet.engine.http.connector.Connection.readMessages(Connection.java:696)
            at org.restlet.engine.http.connector.Controller$2.run(Controller.java:95)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
            at java.lang.Thread.run(Thread.java:662)
    Caused by: org.serviio.upnp.service.contentdirectory.command.CommandExecutionException: Cannot execute library command for list: null
            at org.serviio.upnp.service.contentdirectory.command.AbstractCommand.retrieveItemList(AbstractCommand.java:135)
            at org.serviio.upnp.service.contentdirectory.definition.ContainerNode.executeListAction(ContainerNode.java:241)
            ... 56 more
    Caused by: java.lang.NullPointerException
            at org.serviio.delivery.subtitles.SubtitlesService.selectBestSubtitleFile(SubtitlesService.java:189)
            at org.serviio.delivery.subtitles.SubtitlesService.findExternalSubtitleFile(SubtitlesService.java:166)
            at org.serviio.delivery.subtitles.SubtitlesService.isSoftSubsAvailable(SubtitlesService.java:74)
            at org.serviio.upnp.service.contentdirectory.command.ResourceValuesBuilder.generateSubtitlesResource(ResourceValuesBuilder.java:48)
            at org.serviio.upnp.service.contentdirectory.command.ObjectValuesBuilder.buildObjectValues(ObjectValuesBuilder.java:102)
            at org.serviio.upnp.service.contentdirectory.command.AbstractEntityItemCommand.generateValuesForEntity(AbstractEntityItemCommand.java:127)
            at org.serviio.upnp.service.contentdirectory.command.AbstractEntityItemCommand.retrieveList(AbstractEntityItemCommand.java:57)
            at org.serviio.upnp.service.contentdirectory.command.AbstractCommand.retrieveItemList(AbstractCommand.java:129)
            ... 57 more
    2013-05-15 16:56:49,477 WARN  [ContentDirectoryRestletApplication] Exception or error caught in resource
    java.lang.RuntimeException: java.lang.RuntimeException: org.serviio.upnp.service.contentdirectory.command.CommandExecutionException: Cannot execute library command for list: null
            at org.serviio.upnp.service.contentdirectory.rest.resources.server.CDSBrowseServerResource.browse(CDSBrowseServerResource.java:119)
            at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.restlet.resource.ServerResource.doHandle(ServerResource.java:449)
            at org.restlet.resource.ServerResource.get(ServerResource.java:645)
            at org.restlet.resource.ServerResource.doHandle(ServerResource.java:527)
            at org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:587)
            at org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:299)
            at org.serviio.restlet.AbstractProEditionServerResource.doConditionalHandle(AbstractProEditionServerResource.java:35)
            at org.serviio.upnp.service.contentdirectory.rest.resources.server.AbstractCDSServerResource.doConditionalHandle(AbstractCDSServerResource.java:52)
            at org.serviio.upnp.service.contentdirectory.rest.resources.server.AbstractRestrictedCDSServerResource.doConditionalHandle(AbstractRestrictedCDSServerResource.java:53)
            at org.restlet.resource.ServerResource.handle(ServerResource.java:846)
            at org.restlet.resource.Finder.handle(Finder.java:510)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Router.doHandle(Router.java:497)
            at org.restlet.routing.Router.handle(Router.java:737)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:151)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111)
            at org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:72)
            at org.restlet.Application.handle(Application.java:391)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Router.doHandle(Router.java:497)
            at org.restlet.routing.Router.handle(Router.java:737)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Router.doHandle(Router.java:497)
            at org.restlet.routing.Router.handle(Router.java:737)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:151)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.routing.Filter.doHandle(Filter.java:156)
            at org.restlet.routing.Filter.handle(Filter.java:203)
            at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111)
            at org.restlet.Component.handle(Component.java:388)
            at org.restlet.Server.handle(Server.java:488)
            at org.restlet.engine.http.connector.BaseServerHelper.handle(BaseServerHelper.java:158)
            at org.restlet.engine.http.connector.BaseServerHelper.handleInbound(BaseServerHelper.java:167)
            at org.restlet.engine.http.connector.BaseHelper.handleNextInbound(BaseHelper.java:418)
            at org.restlet.engine.http.connector.Connection.readMessages(Connection.java:696)
            at org.restlet.engine.http.connector.Controller$2.run(Controller.java:95)
            at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
            at java.lang.Thread.run(Thread.java:662)
    Caused by: java.lang.RuntimeException: org.serviio.upnp.service.contentdirectory.command.CommandExecutionException: Cannot execute library command for list: null
            at org.serviio.upnp.service.contentdirectory.definition.ContainerNode.executeListAction(ContainerNode.java:244)
            at org.serviio.upnp.service.contentdirectory.definition.ContainerNode.findContainerItems(ContainerNode.java:181)
            at org.serviio.upnp.service.contentdirectory.definition.ContainerNode.retrieveContainerItems(ContainerNode.java:83)
            at org.serviio.upnp.service.contentdirectory.definition.ActionNode.retrieveContainerItems(ActionNode.java:135)
            at org.serviio.upnp.service.contentdirectory.ContentDirectoryEngine.browse(ContentDirectoryEngine.java:102)
            at org.serviio.upnp.service.contentdirectory.rest.resources.server.CDSBrowseServerResource.browse(CDSBrowseServerResource.java:108)
            ... 51 more
    Caused by: org.serviio.upnp.service.contentdirectory.command.CommandExecutionException: Cannot execute library command for list: null
            at org.serviio.upnp.service.contentdirectory.command.AbstractCommand.retrieveItemList(AbstractCommand.java:135)
            at org.serviio.upnp.service.contentdirectory.definition.ContainerNode.executeListAction(ContainerNode.java:241)
            ... 56 more
    Caused by: java.lang.NullPointerException
            at org.serviio.delivery.subtitles.SubtitlesService.selectBestSubtitleFile(SubtitlesService.java:189)
            at org.serviio.delivery.subtitles.SubtitlesService.findExternalSubtitleFile(SubtitlesService.java:166)
            at org.serviio.delivery.subtitles.SubtitlesService.isSoftSubsAvailable(SubtitlesService.java:74)
            at org.serviio.upnp.service.contentdirectory.command.ResourceValuesBuilder.generateSubtitlesResource(ResourceValuesBuilder.java:48)
            at org.serviio.upnp.service.contentdirectory.command.ObjectValuesBuilder.buildObjectValues(ObjectValuesBuilder.java:102)
            at org.serviio.upnp.service.contentdirectory.command.AbstractEntityItemCommand.generateValuesForEntity(AbstractEntityItemCommand.java:127)
            at org.serviio.upnp.service.contentdirectory.command.AbstractEntityItemCommand.retrieveList(AbstractEntityItemCommand.java:57)
            at org.serviio.upnp.service.contentdirectory.command.AbstractCommand.retrieveItemList(AbstractCommand.java:129)
            ... 57 more
    2013-05-15 16:56:49,478 WARN  [ServiioStatusService] RuntimeException occured. Returning error code 500 to the REST layer. Message: java.lang.RuntimeException: org.serviio.upnp.service.contentdirectory.command.CommandExecutionException: Cannot execute library command for list: null
    
  2. Log in to comment