[fcrepo-user] Error updating a DC managed datastream if versionable="false": Could not read object's content model

3 views
Skip to first unread message

Janna Wemekamp

unread,
Jan 13, 2011, 9:43:58 PM1/13/11
to Fedora Users
Hi all,

I've run into a fatal error when attempting to update the DC datastream's contents for an object where the DC datastream has controlGroup="M" and versionable="false". Here's the relevant portion of the FOXML file:

  <foxml:datastream ID="DC" CONTROL_GROUP="M" STATE="A" VERSIONABLE="false">
    <foxml:datastreamVersion ID="DC1.0" LABEL="Dublin Core Record for this object"
      MIMETYPE="text/xml; charset=UTF-8" FORMAT_URI="http://www.openarchives.org/OAI/2.0/oai_dc/">
      <foxml:contentLocation TYPE="URL" REF="file:///data/fedoracommons/nrm/cma/test-objects/test03-dc.xml" />
    </foxml:datastreamVersion>
  </foxml:datastream>

My (Perl) test script loads the object into the repository using the REST API's ingest() method w/o problems. It then attempts to modify the DC datastream's content using the addDatastream() method again specifying controlGroup="M" and versionable="false". This fails with the error log appended below.
It does NOT fail if versionable is set to "true" everywhere.
Btw, modifyDatastream() fails in the same way.

Context:
RHEL 5.6 + RHEL Java 1.6.0_22-b04
Fedora Commons 3.4.1 but using the fcrepo-server-3.4.2-SNAPSHOT.jar file from the MAINT-22 build on the bamboo server.

Must I always set versionable to "true" for DC datastreams stored as managed content or is this a bug?


Janna Wemekamp



ERROR 2011-01-14 13:00:53.907 [TP-Processor1] (DatastreamResource) Unexpected error fulfilling REST API request
org.fcrepo.server.errors.ResourceIndexException: Could not read object's content model
    at org.fcrepo.server.resourceIndex.ModelBasedTripleGenerator.getTriplesForObject(ModelBasedTripleGenerator.java:104) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.resourceIndex.ResourceIndexImpl.modifyObject(ResourceIndexImpl.java:106) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.resourceIndex.ResourceIndexModule.modifyObject(ResourceIndexModule.java:253) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.DefaultDOManager.doCommit(DefaultDOManager.java:1314) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.SimpleDOWriter.commit(SimpleDOWriter.java:508) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.management.DefaultManagement.modifyDatastreamByReference(DefaultManagement.java:789) [fcrepo-server-3.4.2-MAINT-22:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [na:1.6.0_22]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [na:1.6.0_22]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [na:1.6.0_22]
    at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_22]
    at org.fcrepo.server.messaging.NotificationInvocationHandler.invoke(NotificationInvocationHandler.java:68) [fcrepo-server-3.4.2-MAINT-22:na]
    at $Proxy0.modifyDatastreamByReference(Unknown Source) [na:na]
    at org.fcrepo.server.management.ManagementModule.modifyDatastreamByReference(ManagementModule.java:378) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.rest.DatastreamResource.addOrUpdateDatastream(DatastreamResource.java:527) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.rest.DatastreamResource.addDatastream(DatastreamResource.java:358) [fcrepo-server-3.4.2-MAINT-22:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [na:1.6.0_22]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [na:1.6.0_22]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [na:1.6.0_22]
    at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_22]
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:175) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:163) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:71) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:63) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:689) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:647) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:638) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:309) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:425) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:590) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) [servlet-api.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterRestApiFlash.doFilter(FilterRestApiFlash.java:79) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterSetup.doFilter(FilterSetup.java:235) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterSetup.doFilter(FilterSetup.java:235) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterSetup.doFilter(FilterSetup.java:235) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterSetup.doFilter(FilterSetup.java:235) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) [catalina.jar:na]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [catalina.jar:na]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525) [catalina.jar:na]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) [catalina.jar:na]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [catalina.jar:na]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [catalina.jar:na]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) [catalina.jar:na]
    at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) [tomcat-coyote.jar:na]
    at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291) [tomcat-coyote.jar:na]
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769) [tomcat-coyote.jar:na]
    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698) [tomcat-coyote.jar:na]
    at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891) [tomcat-coyote.jar:na]
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) [tomcat-coyote.jar:na]
    at java.lang.Thread.run(Thread.java:662) [na:1.6.0_22]
Caused by: org.fcrepo.server.errors.ResourceIndexException: Error generating triples
    at org.fcrepo.server.resourceIndex.FedoraObjectTripleGenerator_3_0.addCommonTriples(FedoraObjectTripleGenerator_3_0.java:83) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.resourceIndex.FedoraObjectTripleGenerator_3_0.getTriplesForObject(FedoraObjectTripleGenerator_3_0.java:51) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.resourceIndex.ModelBasedTripleGenerator.getTriplesForObject(ModelBasedTripleGenerator.java:99) [fcrepo-server-3.4.2-MAINT-22:na]
    ... 63 common frames omitted
Caused by: org.fcrepo.server.errors.StreamIOException: [DatastreamManagedContent] returned  the error: "org.fcrepo.server.errors.ObjectNotInLowlevelStorageException". Reason: test:03+DC+DC1.0
    at org.fcrepo.server.storage.types.DatastreamManagedContent.getContentStream(DatastreamManagedContent.java:193) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.types.DatastreamManagedContent.getContentStream(DatastreamManagedContent.java:129) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.resourceIndex.FedoraObjectTripleGenerator_3_0.addDCTriples(FedoraObjectTripleGenerator_3_0.java:152) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.resourceIndex.FedoraObjectTripleGenerator_3_0.addCommonTriples(FedoraObjectTripleGenerator_3_0.java:73) [fcrepo-server-3.4.2-MAINT-22:na]
    ... 65 common frames omitted
Caused by: org.fcrepo.server.errors.ObjectNotInLowlevelStorageException: test:03+DC+DC1.0
    at org.fcrepo.server.storage.lowlevel.akubra.AkubraLowlevelStorage.retrieve(AkubraLowlevelStorage.java:383) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.lowlevel.akubra.AkubraLowlevelStorage.retrieveDatastream(AkubraLowlevelStorage.java:155) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.lowlevel.akubra.AkubraLowlevelStorageModule.retrieveDatastream(AkubraLowlevelStorageModule.java:111) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.types.DatastreamManagedContent.getContentStream(DatastreamManagedContent.java:189) [fcrepo-server-3.4.2-MAINT-22:na]
    ... 68 common frames omitted
ERROR 2011-01-14 13:00:53.914 [TP-Processor1] (WebApplicationImpl) Internal server error
javax.ws.rs.WebApplicationException: org.fcrepo.server.errors.ResourceIndexException: Could not read object's content model
    at org.fcrepo.server.rest.BaseRestResource.handleException(BaseRestResource.java:168) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.rest.DatastreamResource.addOrUpdateDatastream(DatastreamResource.java:583) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.rest.DatastreamResource.addDatastream(DatastreamResource.java:358) [fcrepo-server-3.4.2-MAINT-22:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [na:1.6.0_22]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [na:1.6.0_22]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [na:1.6.0_22]
    at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_22]
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:175) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:163) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:71) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:63) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:689) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:647) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:638) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:309) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:425) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:590) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) [servlet-api.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterRestApiFlash.doFilter(FilterRestApiFlash.java:79) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterSetup.doFilter(FilterSetup.java:235) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterSetup.doFilter(FilterSetup.java:235) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterSetup.doFilter(FilterSetup.java:235) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterSetup.doFilter(FilterSetup.java:235) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) [catalina.jar:na]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [catalina.jar:na]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525) [catalina.jar:na]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) [catalina.jar:na]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [catalina.jar:na]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [catalina.jar:na]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) [catalina.jar:na]
    at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) [tomcat-coyote.jar:na]
    at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291) [tomcat-coyote.jar:na]
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769) [tomcat-coyote.jar:na]
    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698) [tomcat-coyote.jar:na]
    at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891) [tomcat-coyote.jar:na]
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) [tomcat-coyote.jar:na]
    at java.lang.Thread.run(Thread.java:662) [na:1.6.0_22]
Caused by: org.fcrepo.server.errors.ResourceIndexException: Could not read object's content model
    at org.fcrepo.server.resourceIndex.ModelBasedTripleGenerator.getTriplesForObject(ModelBasedTripleGenerator.java:104) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.resourceIndex.ResourceIndexImpl.modifyObject(ResourceIndexImpl.java:106) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.resourceIndex.ResourceIndexModule.modifyObject(ResourceIndexModule.java:253) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.DefaultDOManager.doCommit(DefaultDOManager.java:1314) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.SimpleDOWriter.commit(SimpleDOWriter.java:508) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.management.DefaultManagement.modifyDatastreamByReference(DefaultManagement.java:789) [fcrepo-server-3.4.2-MAINT-22:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [na:1.6.0_22]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [na:1.6.0_22]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [na:1.6.0_22]
    at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_22]
    at org.fcrepo.server.messaging.NotificationInvocationHandler.invoke(NotificationInvocationHandler.java:68) [fcrepo-server-3.4.2-MAINT-22:na]
    at $Proxy0.modifyDatastreamByReference(Unknown Source) [na:na]
    at org.fcrepo.server.management.ManagementModule.modifyDatastreamByReference(ManagementModule.java:378) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.rest.DatastreamResource.addOrUpdateDatastream(DatastreamResource.java:527) [fcrepo-server-3.4.2-MAINT-22:na]
    ... 50 common frames omitted
Caused by: org.fcrepo.server.errors.ResourceIndexException: Error generating triples
    at org.fcrepo.server.resourceIndex.FedoraObjectTripleGenerator_3_0.addCommonTriples(FedoraObjectTripleGenerator_3_0.java:83) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.resourceIndex.FedoraObjectTripleGenerator_3_0.getTriplesForObject(FedoraObjectTripleGenerator_3_0.java:51) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.resourceIndex.ModelBasedTripleGenerator.getTriplesForObject(ModelBasedTripleGenerator.java:99) [fcrepo-server-3.4.2-MAINT-22:na]
    ... 63 common frames omitted
Caused by: org.fcrepo.server.errors.StreamIOException: [DatastreamManagedContent] returned  the error: "org.fcrepo.server.errors.ObjectNotInLowlevelStorageException". Reason: test:03+DC+DC1.0
    at org.fcrepo.server.storage.types.DatastreamManagedContent.getContentStream(DatastreamManagedContent.java:193) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.types.DatastreamManagedContent.getContentStream(DatastreamManagedContent.java:129) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.resourceIndex.FedoraObjectTripleGenerator_3_0.addDCTriples(FedoraObjectTripleGenerator_3_0.java:152) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.resourceIndex.FedoraObjectTripleGenerator_3_0.addCommonTriples(FedoraObjectTripleGenerator_3_0.java:73) [fcrepo-server-3.4.2-MAINT-22:na]
    ... 65 common frames omitted
Caused by: org.fcrepo.server.errors.ObjectNotInLowlevelStorageException: test:03+DC+DC1.0
    at org.fcrepo.server.storage.lowlevel.akubra.AkubraLowlevelStorage.retrieve(AkubraLowlevelStorage.java:383) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.lowlevel.akubra.AkubraLowlevelStorage.retrieveDatastream(AkubraLowlevelStorage.java:155) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.lowlevel.akubra.AkubraLowlevelStorageModule.retrieveDatastream(AkubraLowlevelStorageModule.java:111) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.types.DatastreamManagedContent.getContentStream(DatastreamManagedContent.java:189) [fcrepo-server-3.4.2-MAINT-22:na]
    ... 68 common frames omitted
ERROR 2011-01-14 13:01:02.691 [TP-Processor8] (FedoraObjectSearchResource) Unexpected error fulfilling REST API request
org.fcrepo.server.errors.StreamIOException: [DatastreamManagedContent] returned  the error: "org.fcrepo.server.errors.ObjectNotInLowlevelStorageException". Reason: test:03+DC+DC1.0
    at org.fcrepo.server.storage.types.DatastreamManagedContent.getContentStream(DatastreamManagedContent.java:193) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.types.DatastreamManagedContent.getContentStream(DatastreamManagedContent.java:129) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.search.FieldSearchResultSQLImpl.getObjectFields(FieldSearchResultSQLImpl.java:504) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.search.FieldSearchResultSQLImpl.step(FieldSearchResultSQLImpl.java:401) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.search.FieldSearchSQLImpl.stepAndRemember(FieldSearchSQLImpl.java:352) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.search.FieldSearchSQLImpl.findObjects(FieldSearchSQLImpl.java:321) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.search.FieldSearchSQLModule.findObjects(FieldSearchSQLModule.java:161) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.DefaultDOManager.findObjects(DefaultDOManager.java:1794) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.access.DefaultAccess.findObjects(DefaultAccess.java:708) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.rest.FedoraObjectSearchResource.searchObjects(FedoraObjectSearchResource.java:74) [fcrepo-server-3.4.2-MAINT-22:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [na:1.6.0_22]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [na:1.6.0_22]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [na:1.6.0_22]
    at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_22]
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:175) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:163) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:71) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:63) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:689) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:647) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:638) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:309) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:425) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:590) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) [servlet-api.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterRestApiFlash.doFilter(FilterRestApiFlash.java:79) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterSetup.doFilter(FilterSetup.java:235) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterSetup.doFilter(FilterSetup.java:235) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterSetup.doFilter(FilterSetup.java:235) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterSetup.doFilter(FilterSetup.java:235) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) [catalina.jar:na]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [catalina.jar:na]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525) [catalina.jar:na]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) [catalina.jar:na]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [catalina.jar:na]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [catalina.jar:na]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) [catalina.jar:na]
    at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) [tomcat-coyote.jar:na]
    at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291) [tomcat-coyote.jar:na]
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769) [tomcat-coyote.jar:na]
    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698) [tomcat-coyote.jar:na]
    at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891) [tomcat-coyote.jar:na]
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) [tomcat-coyote.jar:na]
    at java.lang.Thread.run(Thread.java:662) [na:1.6.0_22]
Caused by: org.fcrepo.server.errors.ObjectNotInLowlevelStorageException: test:03+DC+DC1.0
    at org.fcrepo.server.storage.lowlevel.akubra.AkubraLowlevelStorage.retrieve(AkubraLowlevelStorage.java:383) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.lowlevel.akubra.AkubraLowlevelStorage.retrieveDatastream(AkubraLowlevelStorage.java:155) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.lowlevel.akubra.AkubraLowlevelStorageModule.retrieveDatastream(AkubraLowlevelStorageModule.java:111) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.types.DatastreamManagedContent.getContentStream(DatastreamManagedContent.java:189) [fcrepo-server-3.4.2-MAINT-22:na]
    ... 57 common frames omitted
ERROR 2011-01-14 13:01:02.694 [TP-Processor8] (WebApplicationImpl) Internal server error
javax.ws.rs.WebApplicationException: org.fcrepo.server.errors.StreamIOException: [DatastreamManagedContent] returned  the error: "org.fcrepo.server.errors.ObjectNotInLowlevelStorageException". Reason: test:03+DC+DC1.0
    at org.fcrepo.server.rest.BaseRestResource.handleException(BaseRestResource.java:168) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.rest.FedoraObjectSearchResource.searchObjects(FedoraObjectSearchResource.java:89) [fcrepo-server-3.4.2-MAINT-22:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [na:1.6.0_22]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [na:1.6.0_22]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [na:1.6.0_22]
    at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_22]
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:175) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:163) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:71) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:63) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:689) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:647) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:638) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:309) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:425) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:590) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) [servlet-api.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterRestApiFlash.doFilter(FilterRestApiFlash.java:79) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterSetup.doFilter(FilterSetup.java:235) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterSetup.doFilter(FilterSetup.java:235) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterSetup.doFilter(FilterSetup.java:235) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.fcrepo.server.security.servletfilters.FilterSetup.doFilter(FilterSetup.java:235) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:na]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:na]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) [catalina.jar:na]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [catalina.jar:na]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525) [catalina.jar:na]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) [catalina.jar:na]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [catalina.jar:na]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [catalina.jar:na]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) [catalina.jar:na]
    at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190) [tomcat-coyote.jar:na]
    at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291) [tomcat-coyote.jar:na]
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769) [tomcat-coyote.jar:na]
    at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698) [tomcat-coyote.jar:na]
    at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891) [tomcat-coyote.jar:na]
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690) [tomcat-coyote.jar:na]
    at java.lang.Thread.run(Thread.java:662) [na:1.6.0_22]
Caused by: org.fcrepo.server.errors.StreamIOException: [DatastreamManagedContent] returned  the error: "org.fcrepo.server.errors.ObjectNotInLowlevelStorageException". Reason: test:03+DC+DC1.0
    at org.fcrepo.server.storage.types.DatastreamManagedContent.getContentStream(DatastreamManagedContent.java:193) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.types.DatastreamManagedContent.getContentStream(DatastreamManagedContent.java:129) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.search.FieldSearchResultSQLImpl.getObjectFields(FieldSearchResultSQLImpl.java:504) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.search.FieldSearchResultSQLImpl.step(FieldSearchResultSQLImpl.java:401) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.search.FieldSearchSQLImpl.stepAndRemember(FieldSearchSQLImpl.java:352) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.search.FieldSearchSQLImpl.findObjects(FieldSearchSQLImpl.java:321) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.search.FieldSearchSQLModule.findObjects(FieldSearchSQLModule.java:161) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.DefaultDOManager.findObjects(DefaultDOManager.java:1794) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.access.DefaultAccess.findObjects(DefaultAccess.java:708) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.rest.FedoraObjectSearchResource.searchObjects(FedoraObjectSearchResource.java:74) [fcrepo-server-3.4.2-MAINT-22:na]
    ... 48 common frames omitted
Caused by: org.fcrepo.server.errors.ObjectNotInLowlevelStorageException: test:03+DC+DC1.0
    at org.fcrepo.server.storage.lowlevel.akubra.AkubraLowlevelStorage.retrieve(AkubraLowlevelStorage.java:383) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.lowlevel.akubra.AkubraLowlevelStorage.retrieveDatastream(AkubraLowlevelStorage.java:155) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.lowlevel.akubra.AkubraLowlevelStorageModule.retrieveDatastream(AkubraLowlevelStorageModule.java:111) [fcrepo-server-3.4.2-MAINT-22:na]
    at org.fcrepo.server.storage.types.DatastreamManagedContent.getContentStream(DatastreamManagedContent.java:189) [fcrepo-server-3.4.2-MAINT-22:na]
    ... 57 common frames omitted

  



Steve Bayliss

unread,
Jan 14, 2011, 4:57:43 AM1/14/11
to Support and info exchange list for Fedora users.
Hi Janna
 
What happens if you don't specify versionable on the REST API call for the modify?  Do you still get an error then?  It should leave the versionable state as-is (it's not mandatory to specify it).
 
However it does look like there could be a bug here, I'll attempt to reproduce locally.
 
Regards
Steve

Janna Wemekamp

unread,
Jan 16, 2011, 6:37:18 PM1/16/11
to Support and info exchange list for Fedora users.
Hi Steve,

Btw, I should have mentioned I'm using the Mulgara triplestore with full-text indexing turned on along with Akubra low level storage.

Here's a set of test results (using the REST API's ingest() and modifyDatastream() methods):

(1) versionable="true' on ingest
    (a) update with versionable not specified:    success
    (b) update with versionable="true": success
    (c) update with versionable="false": success
    (d) update with versionable not specified: fails as described in my original post.
       

(2) versionable="false" on ingest
    (a) update with versionable not specified: fails as described in my original post.
          Also, the object can no longer be retrieved via .../fedora/objects
          This fails with

org.fcrepo.server.errors.ObjectNotInLowlevelStorageException". Reason: test:03+DC+DC1.0
        However, a subsequent purgeObject() reports no errors.

    (b) update with versionable="false": fails as in 2(a) with same error in .../fedora/objects
         Also, the object can no longer be removed via the REST purgeObject() method.
         Fails with

WARN 2011-01-17 09:42:43.703 [TP-Processor7] (FedoraObjectResource) Resource not
 found: test:03; unable to fulfill REST API request

        But, it is still in the Mulgara triplestore! Have to rebuild the triplestore to remove it.

    (c) update with versionable="true": fails as in 2(a).

It would appear that that the problem lies in the update to the triplestore once versionable has been set to "false". This seems to sometimes leave the repository in an uncertain state as well (which is the scary part).

Hope this helps track down the problem!

Janna
------------------------------------------------------------------------------ Protect Your Site and Customers from Malware Attacks Learn about various malware tactics and how to avoid them. Understand malware threats, the impact they can have on your business, and how you can protect your company and customers by using code signing. http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________ Fedora-commons-users mailing list Fedora-com...@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/fedora-commons-users

Asger Askov Blekinge

unread,
Jan 17, 2011, 6:59:08 AM1/17/11
to Support and info exchange list for Fedora users.
Hi Janna

I really like your ability to find bugs in fedora. Seriously, we need
people like you.

About the bug, it is quite simple, and hard to fix.

When you update a datastream that must go into the resource index, the
system does as follows

1. load the object
2. change the content of the datastream
3. generate the triples of the old version
4. generate the triples of the new version
5. remove the old triples, add the new.

Your problem lies in step 3. For a normal xml datastream, it would be
read into memory in step 1, as it is embedded in the object. But for
managed datastreams, the content is not read until specifically
requested, as it is separate from the object.

So, the specific chain of events is now
1. load the object, and the REFERENCE to the datastream
2. change the content of the datastream, generate a new reference, and
delete the old content
3. load the old content, to generate triples (which is now not not found
anymore)
4. System breaks down, as it cannot generate triples.

It is an unforseen bug when special datastreams are managed. Same would
happen, I think, for managed RELS-EXT.
For some reason, you are the first to report this. Report the bug, along
with this explanation to the jira, and I will escalate it tommorrow.


Regards

Steve Bayliss

unread,
Jan 17, 2011, 7:15:51 AM1/17/11
to Support and info exchange list for Fedora users.
Hi Janna, Asger

I think it might not be too difficult to fix - looking at DefaultDOManager
we could either delay purging the old managed datastream versions until
after the resource index update, or move the resource index update so it
happens earlier, before the old versions are purged?

Steve
> com.sun.jersey.server.impl.model.method.dispatch.AbstractResou
> rceMethodDispatchProvider$ResponseOutInvoker._dispatch(Abstrac
tResourceMethodDispatchProvider.java:175) >
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaM
> ethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(Htt
> pMethodRule.java:163) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(
> RightHandPathRule.java:111) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(
> ResourceClassRule.java:71) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(
> RightHandPathRule.java:111) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.a
> ccept(RootResourceClassesRule.java:63)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.application.WebApplicationImpl._han
> dleRequest(WebApplicationImpl.java:689)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.application.WebApplicationImpl.hand
> leRequest(WebApplicationImpl.java:647)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.application.WebApplicationImpl.hand
> leRequest(WebApplicationImpl.java:638)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.spi.container.servlet.WebComponent.service(WebC
> omponent.java:309) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.spi.container.servlet.ServletContainer.service(
> ServletContainer.java:425) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.spi.container.servlet.ServletContainer.service(
> reamResource.java:358) [fcrepo-server-3.4.2-MAINT-22:na]
> > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > > Method) [na:1.6.0_22]
> > > at
> > >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccess
> orImpl.java:39) [na:1.6.0_22]
> > > at
> > >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth
> odAccessorImpl.java:25) [na:1.6.0_22]
> > > at java.lang.reflect.Method.invoke(Method.java:597)
> > > [na:1.6.0_22]
> > > at
> > >
> com.sun.jersey.server.impl.model.method.dispatch.AbstractResou
> rceMethodDispatchProvider$ResponseOutInvoker._dispatch(Abstrac
tResourceMethodDispatchProvider.java:175) >
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaM
> ethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(Htt
> pMethodRule.java:163) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(
> RightHandPathRule.java:111) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(
> ResourceClassRule.java:71) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(
> RightHandPathRule.java:111) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.a
> ccept(RootResourceClassesRule.java:63)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.application.WebApplicationImpl._han
> dleRequest(WebApplicationImpl.java:689)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.application.WebApplicationImpl.hand
> leRequest(WebApplicationImpl.java:647)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.application.WebApplicationImpl.hand
> leRequest(WebApplicationImpl.java:638)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.spi.container.servlet.WebComponent.service(WebC
> omponent.java:309) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.spi.container.servlet.ServletContainer.service(
> ServletContainer.java:425) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.spi.container.servlet.ServletContainer.service(
> mByReference(DefaultManagement.java:789)
> [fcrepo-server-3.4.2-MAINT-22:na]
> > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
> > > Method) [na:1.6.0_22]
> > > at
> > >
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccess
> orImpl.java:39) [na:1.6.0_22]
> > > at
> > >
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth
> odAccessorImpl.java:25) [na:1.6.0_22]
> > > at java.lang.reflect.Method.invoke(Method.java:597)
> > > [na:1.6.0_22]
> > > at
> > >
> org.fcrepo.server.messaging.NotificationInvocationHandler.invo
> ke(NotificationInvocationHandler.java:68)
> [fcrepo-server-3.4.2-MAINT-22:na]
> > > at $Proxy0.modifyDatastreamByReference(Unknown Source)
> > > [na:na]
> > > at
> > >
> org.fcrepo.server.management.ManagementModule.modifyDatastream
> ByReference(ManagementModule.java:378)
> [fcrepo-server-3.4.2-MAINT-22:na]
> > > at
> > >
> org.fcrepo.server.rest.DatastreamResource.addOrUpdateDatastrea
> m(DatastreamResource.java:527) [fcrepo-server-3.4.2-MAINT-22:na]
> > > ... 50 common frames omitted
> > > Caused by:
> org.fcrepo.server.errors.ResourceIndexException:
> > > Error generating triples
> > > at
> > >
> org.fcrepo.server.resourceIndex.FedoraObjectTripleGenerator_3_
> 0.addCommonTriples(FedoraObjectTripleGenerator_3_0.java:83)
> [fcrepo-server-3.4.2-MAINT-22:na]
> > > at
> > >
> org.fcrepo.server.resourceIndex.FedoraObjectTripleGenerator_3_
> 0.getTriplesForObject(FedoraObjectTripleGenerator_3_0.java:51)
> [fcrepo-server-3.4.2-MAINT-22:na]
> > > at
> > >
> org.fcrepo.server.resourceIndex.ModelBasedTripleGenerator.getT
> odAccessorImpl.java:25) [na:1.6.0_22]
> > > at java.lang.reflect.Method.invoke(Method.java:597)
> > > [na:1.6.0_22]
> > > at
> > >
> com.sun.jersey.server.impl.model.method.dispatch.AbstractResou
> rceMethodDispatchProvider$ResponseOutInvoker._dispatch(Abstrac
tResourceMethodDispatchProvider.java:175) >
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaM
> ethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(Htt
> pMethodRule.java:163) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(
> ResourceClassRule.java:71) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(
> RightHandPathRule.java:111) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.a
> ccept(RootResourceClassesRule.java:63)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.application.WebApplicationImpl._han
> dleRequest(WebApplicationImpl.java:689)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.application.WebApplicationImpl.hand
> leRequest(WebApplicationImpl.java:647)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.application.WebApplicationImpl.hand
> leRequest(WebApplicationImpl.java:638)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.spi.container.servlet.WebComponent.service(WebC
> omponent.java:309) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.spi.container.servlet.ServletContainer.service(
> ServletContainer.java:425) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.spi.container.servlet.ServletContainer.service(
> odAccessorImpl.java:25) [na:1.6.0_22]
> > > at java.lang.reflect.Method.invoke(Method.java:597)
> > > [na:1.6.0_22]
> > > at
> > >
> com.sun.jersey.server.impl.model.method.dispatch.AbstractResou
> rceMethodDispatchProvider$ResponseOutInvoker._dispatch(Abstrac
tResourceMethodDispatchProvider.java:175) >
[jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaM
> ethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(Htt
> pMethodRule.java:163) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(
> ResourceClassRule.java:71) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(
> RightHandPathRule.java:111) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.a
> ccept(RootResourceClassesRule.java:63)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.application.WebApplicationImpl._han
> dleRequest(WebApplicationImpl.java:689)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.application.WebApplicationImpl.hand
> leRequest(WebApplicationImpl.java:647)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.server.impl.application.WebApplicationImpl.hand
> leRequest(WebApplicationImpl.java:638)
> [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.spi.container.servlet.WebComponent.service(WebC
> omponent.java:309) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.spi.container.servlet.ServletContainer.service(
> ServletContainer.java:425) [jersey-bundle-1.0.3.1.jar:1.0.3.1]
> > > at
> > >
> com.sun.jersey.spi.container.servlet.ServletContainer.service(
> ntentStream(DatastreamManagedContent.java:189)
> [fcrepo-server-3.4.2-MAINT-22:na]
> > > ... 57 common frames omitted
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> --------------------------------------------------------------
> ----------------
> > > Protect Your Site and Customers from Malware Attacks
> > > Learn about various malware tactics and how to avoid
> them. Understand
> > > malware threats, the impact they can have on your
> business, and how you
> > > can protect your company and customers by using code signing.
> > > http://p.sf.net/sfu/oracle-sfdevnl
> > >
> > > _______________________________________________
> > > Fedora-commons-users mailing list
> > > Fedora-com...@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/fedora-commons-users
>
>
>
> --------------------------------------------------------------

Steve Bayliss

unread,
Jan 17, 2011, 7:19:54 AM1/17/11
to Support and info exchange list for Fedora users.
... and looking at the comment above the existing managed datastream purge,
this has already been moved once to happen later (due to another problem) in
the sequence, so I think just moving it to after the resource index update,
ie to happen at the same time the XML serialisation gets written, would
solve this.

I will add a test case to try and replicate, and give this a go.

Steve

Steve Bayliss

unread,
Jan 17, 2011, 1:36:05 PM1/17/11
to Support and info exchange list for Fedora users.
https://jira.duraspace.org/browse/FCREPO-849 raised for this.

As Asger stated (and contrary to my statement), the solution isn't that
simple.

Whilst the managed datastream purge can be moved that only resolves part of
the situation. Any modifications to unversioned M datastreams will have
been saved (back to their original locations), so any "compare" to determine
what triples to add and delete won't in fact be comparing old and new, so
the RI will be out of sync.

The RI update could be moved to before the saving of the managed
datastreams, but this means if there is a later error then the RI will be
out of sync (having already been updated).

Ideally we need some sort of transactional behaviour here (we potentially
have a problem also for purge, that if the purge fails the RI changes will
already have been made.).

Janna Wemekamp

unread,
Jan 17, 2011, 4:17:53 PM1/17/11
to Support and info exchange list for Fedora users.
Asger, Steve,

Thanks for your kind words Asger. I'm happy to help.
As for the bug, aren't transaction issues fun 8-(

I hope this won't delay the release of FC 3.4.2? Like a previous poster, I'd like to add DC-managed support and the fix to FCREPO-774 to our repository via a formal FC release. I'm comfortable making the DC datastream versionable.

Perhaps as part of the release, a warning about this bug and its work-around could be added to the REST API documentation page and/or elsewhere?

Janna

------------------------------------------------------------------------------
Protect Your Site and Customers from Malware Attacks
Learn about various malware tactics and how to avoid them. Understand 
malware threats, the impact they can have on your business, and how you 
can protect your company and customers by using code signing.

Asger Askov Blekinge

unread,
Jan 18, 2011, 5:25:39 AM1/18/11
to Janna Wemekamp, Support and info exchange list for Fedora users.
Hi

The correct fix, I think, would be to read, and memory-store the old
content, change the values, and generate to triples from the
memory-store.

The problem in here would be, that the code does not expect the
datastream content to be sent along, but rather read when needed. So we
would have to do some proxying to get the read() operation to return the
memory backed datastream, or we should enable that you can pass along
the old value.

Either way, it is not conceptually difficult, but it will require more
than a few lines of code to be changed.

Regards

Steve Bayliss

unread,
Jan 18, 2011, 6:48:56 AM1/18/11
to Support and info exchange list for Fedora users.
That would do it. Would need to ensure we are memory-storing all that we
would need, as the RI update is based on object properties, datastream
properties, object->datastream relationships, RELS-EXT, RELS-INT, DC.

Have added this as a note to the JIRA issue alongside some other options.

Aaron Birkland

unread,
Jan 18, 2011, 9:06:11 AM1/18/11
to Support and info exchange list for Fedora users.

> That would do it. Would need to ensure we are memory-storing all that we
> would need, as the RI update is based on object properties, datastream
> properties, object->datastream relationships, RELS-EXT, RELS-INT, DC.

Ultimately, I think we need to have a complete reference to the object
in the "before" state, and in the "after" state. I'm not entirely sure
that needs to be in strictly in memory, though (i.e. existing managed
datastreams can still point to the preserved content file, updated
managed datastreams can point to where the new content is staged), but
the end result is the same.

If you recall from past HighLevelStorage proposals, the update method
has looked something like:

update(DigitalObject old, DigitalObject new);


This is precisely so that plugin storage/index/cache modules can perform
their own kind of diffing if necessary. I think if we can get closer
to that mindset in fixing this bug, that would be a good thing.

-Aaron


Reply all
Reply to author
Forward
0 new messages