I worked on this issue for approximately three days, tuning my system's generous resources for maximum effectiveness.
Now, I have absolutely no indication in any log file that the issue is caused by low memory or other related resources.
I do have a specific file size however, in which it rears it's ugly head: between 250 MB and 300MB...
The issue happens regardless if file is ingested via web browser or command line batch, the error result is the same:
Command line batch error:
WD islandora: Failed to ingest object: islandora:492code: 500message: javax.ws.rs.WebApplicationException: [error]
java.lang.NegativeArraySizeException
---
Fedora.log:
INFO 2014-10-31 14:41:48.886 [http-8443-7] (DefaultDOManager) New object PID is islandora:492
INFO 2014-10-31 14:41:48.903 [http-8443-7] (DefaultDOManager) Committing addition of islandora:492
INFO 2014-10-31 14:41:48.903 [http-8443-7] (DefaultDOManager) Getting managed datastream from internal uploaded location: uploaded://1997
INFO 2014-10-31 14:42:47.542 [http-8443-7] (DefaultDOManager) Replaced managed datastream location with internal id: islandora:492+OBJ+OBJ.0
INFO 2014-10-31 14:43:37.707 [http-8443-7] (DefaultDOManager) Adding to ResourceIndex
INFO 2014-10-31 14:43:37.723 [http-8443-7] (DefaultDOManager) Updating dissemination index
INFO 2014-10-31 14:43:37.723 [http-8443-7] (DefaultDOManager) Updating FieldSearch index
INFO 2014-10-31 14:43:37.753 [http-8443-7] (DefaultManagement) Completed ingest(objectXML, format: info:fedora/fedora-system:FOXML-1.1, encoding: UTF-8, pid : islandora:492, logMessage: )
INFO 2014-10-31 14:43:37.901 [http-8443-5] (DefaultManagement) Completed export(pid: islandora:492, format: info:fedora/fedora-system:FOXML-1.1, exportContext: public, encoding: UTF-8)
INFO 2014-10-31 14:50:01.585 [http-8443-7] (DefaultManagement) Completed export(pid: islandora:492, format: info:fedora/fedora-system:FOXML-1.1, exportContext: archive, encoding: UTF-8)
ERROR 2014-10-31 14:50:01.587 [http-8443-7] (FedoraObjectResource) Unexpected error fulfilling REST API request
java.lang.NegativeArraySizeException: null
at org.apache.commons.codec.binary.Base64.encodeBase64(Base64.java:258) [commons-codec-1.3.jar:1.3]
at org.apache.commons.codec.binary.Base64.encodeBase64(Base64.java:178) [commons-codec-1.3.jar:1.3]
at org.fcrepo.utilities.Base64.encode(Base64.java:27) [fcrepo-common-3.5.jar:na]
at org.fcrepo.utilities.Base64.encode(Base64.java:47) [fcrepo-common-3.5.jar:na]
at org.fcrepo.utilities.Base64.encodeToString(Base64.java:79) [fcrepo-common-3.5.jar:na]
at org.fcrepo.server.storage.translation.FOXMLDOSerializer.appendDatastreams(FOXMLDOSerializer.java:369) [fcrepo-server-3.5.jar:na]
at org.fcrepo.server.storage.translation.FOXMLDOSerializer.serialize(FOXMLDOSerializer.java:118) [fcrepo-server-3.5.jar:na]
at org.fcrepo.server.storage.translation.DOTranslatorImpl.serialize(DOTranslatorImpl.java:99) [fcrepo-server-3.5.jar:na]
at org.fcrepo.server.storage.translation.DOTranslatorModule.serialize(DOTranslatorModule.java:139) [fcrepo-server-3.5.jar:na]
at org.fcrepo.server.storage.SimpleDOReader.Export(SimpleDOReader.java:203) [fcrepo-server-3.5.jar:na]
at org.fcrepo.server.management.DefaultManagement.export(DefaultManagement.java:330) [fcrepo-server-3.5.jar:na]
at sun.reflect.GeneratedMethodAccessor119.invoke(Unknown Source) [na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [na:1.6.0_45]
at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_45]
at org.fcrepo.server.messaging.NotificationInvocationHandler.invoke(NotificationInvocationHandler.java:68) [fcrepo-server-3.5.jar:na]
at com.sun.proxy.$Proxy6.export(Unknown Source) [na:na]
at org.fcrepo.server.management.ManagementModule.export(ManagementModule.java:279) [fcrepo-server-3.5.jar:na]
at org.fcrepo.server.rest.FedoraObjectResource.getObjectExport(FedoraObjectResource.java:92) [fcrepo-server-3.5.jar:na]
at sun.reflect.GeneratedMethodAccessor138.invoke(Unknown Source) [na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [na:1.6.0_45]
at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_45]
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:6.0.29]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:6.0.29]
at org.fcrepo.server.security.servletfilters.FilterRestApiFlash.doFilter(FilterRestApiFlash.java:79) [fcrepo-server-3.5.jar:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:6.0.29]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:6.0.29]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368) [spring-security-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.fcrepo.server.security.jaas.AuthFilterJAAS.doFilter(AuthFilterJAAS.java:330) [fcrepo-security-jaas-3.5.jar:na]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) [spring-security-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:109) [spring-security-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) [spring-security-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169) [spring-security-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) [spring-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) [spring-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:6.0.29]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:6.0.29]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) [catalina.jar:6.0.29]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [catalina.jar:6.0.29]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [catalina.jar:6.0.29]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [catalina.jar:6.0.29]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [catalina.jar:6.0.29]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) [catalina.jar:6.0.29]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) [tomcat-coyote.jar:6.0.29]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) [tomcat-coyote.jar:6.0.29]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) [tomcat-coyote.jar:6.0.29]
at java.lang.Thread.run(Thread.java:662) [na:1.6.0_45]
ERROR 2014-10-31 14:50:01.631 [http-8443-7] (WebApplicationImpl) Internal server error
javax.ws.rs.WebApplicationException: java.lang.NegativeArraySizeException
at org.fcrepo.server.rest.BaseRestResource.handleException(BaseRestResource.java:172) [fcrepo-server-3.5.jar:na]
at org.fcrepo.server.rest.FedoraObjectResource.getObjectExport(FedoraObjectResource.java:99) [fcrepo-server-3.5.jar:na]
at sun.reflect.GeneratedMethodAccessor138.invoke(Unknown Source) [na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [na:1.6.0_45]
at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_45]
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:6.0.29]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:6.0.29]
at org.fcrepo.server.security.servletfilters.FilterRestApiFlash.doFilter(FilterRestApiFlash.java:79) [fcrepo-server-3.5.jar:na]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:6.0.29]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:6.0.29]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368) [spring-security-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.fcrepo.server.security.jaas.AuthFilterJAAS.doFilter(AuthFilterJAAS.java:330) [fcrepo-security-jaas-3.5.jar:na]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) [spring-security-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:109) [spring-security-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) [spring-security-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169) [spring-security-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) [spring-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) [spring-web-3.0.5.RELEASE.jar:3.0.5.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) [catalina.jar:6.0.29]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) [catalina.jar:6.0.29]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) [catalina.jar:6.0.29]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) [catalina.jar:6.0.29]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) [catalina.jar:6.0.29]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [catalina.jar:6.0.29]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [catalina.jar:6.0.29]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) [catalina.jar:6.0.29]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) [tomcat-coyote.jar:6.0.29]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) [tomcat-coyote.jar:6.0.29]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) [tomcat-coyote.jar:6.0.29]
at java.lang.Thread.run(Thread.java:662) [na:1.6.0_45]
Caused by: java.lang.NegativeArraySizeException: null
at org.apache.commons.codec.binary.Base64.encodeBase64(Base64.java:258) [commons-codec-1.3.jar:1.3]
at org.apache.commons.codec.binary.Base64.encodeBase64(Base64.java:178) [commons-codec-1.3.jar:1.3]
at org.fcrepo.utilities.Base64.encode(Base64.java:27) [fcrepo-common-3.5.jar:na]
at org.fcrepo.utilities.Base64.encode(Base64.java:47) [fcrepo-common-3.5.jar:na]
at org.fcrepo.utilities.Base64.encodeToString(Base64.java:79) [fcrepo-common-3.5.jar:na]
at org.fcrepo.server.storage.translation.FOXMLDOSerializer.appendDatastreams(FOXMLDOSerializer.java:369) [fcrepo-server-3.5.jar:na]
at org.fcrepo.server.storage.translation.FOXMLDOSerializer.serialize(FOXMLDOSerializer.java:118) [fcrepo-server-3.5.jar:na]
at org.fcrepo.server.storage.translation.DOTranslatorImpl.serialize(DOTranslatorImpl.java:99) [fcrepo-server-3.5.jar:na]
at org.fcrepo.server.storage.translation.DOTranslatorModule.serialize(DOTranslatorModule.java:139) [fcrepo-server-3.5.jar:na]
at org.fcrepo.server.storage.SimpleDOReader.Export(SimpleDOReader.java:203) [fcrepo-server-3.5.jar:na]
at org.fcrepo.server.management.DefaultManagement.export(DefaultManagement.java:330) [fcrepo-server-3.5.jar:na]
at sun.reflect.GeneratedMethodAccessor119.invoke(Unknown Source) [na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [na:1.6.0_45]
at java.lang.reflect.Method.invoke(Method.java:597) [na:1.6.0_45]
at org.fcrepo.server.messaging.NotificationInvocationHandler.invoke(NotificationInvocationHandler.java:68) [fcrepo-server-3.5.jar:na]
at com.sun.proxy.$Proxy6.export(Unknown Source) [na:na]
at org.fcrepo.server.management.ManagementModule.export(ManagementModule.java:279) [fcrepo-server-3.5.jar:na]
at org.fcrepo.server.rest.FedoraObjectResource.getObjectExport(FedoraObjectResource.java:92) [fcrepo-server-3.5.jar:na]
... 42 common frames omitted
I would appreciate any eyeballs, thoughts, and suggestions, especially on how to debug it further, now that's not a resources issue...
https://jira.duraspace.org/browse/FCREPO-944...was reportedly solved way back in 2011 for Fedora 3.6; I'm dreading the thought of upgrading Fedora and all it's mated components, but if that's what I have to do, then that's what I will have to do.
Advice?? I know someone out there is reading this... :-)
Sincerely,