Hi Scott Thanks for that feedback.
It would be interesting to find out if you get the same problem using the AtomZip export format (info:fedora/fedora-system:ATOMZip-1.1) Steve > -----Original Message----- > From: Scott Hammel [mailto:sc...@clemson.edu] > Sent: 18 May 2011 16:16 > To: Support and info exchange list for Fedora users. > Subject: Re: [fcrepo-user] REST export API negative array > index exception > > > Scott, Steve, > > REST export in archive format still blows up with Fedora > 3.4.2. Actually > is crashing on a datastream < 300MB. I gave the JVM 1.5GB of > heap, BTW. > > Regardless, the exception that is in fedora.log is a negative array > index exception. It looks like it is actually occurring down in the > base64 encoder according to the stack trace. > > It occurs to me that building support for a full archival > export of an > object in memory for arbitrarily large objects might be pragmatically > (is that a word?) impossible: e.g., on 32-bit systems I think > you bump > into problems giving the JVM more than ~1.8 GB of RAM. That > alone limits > the size of exportable objects to well under 2GB in that environment. > > If I was more adept with Java, I'd volunteer to write an > exporter that > spooled to disk, but alas, I am not and it would take me > twice as long > as someone who is. :-( > > I can take one of several alternative paths with my > particular project, > so it isn't too big an issue to *me* .... I just have to do a little > more coding in a middle-tier. Don't know about other folks, of course. > > -Scott > > On 05/18/2011 01:08 AM, Stephen Bayliss wrote: > > Looking at those lines of code it looks like in theory > there would be > > a problem there. Once this is confirmed we should probably > add a test > > case to the large datastreams test suite. And it is likely > to cause a > > problem with datastreams smaller than 2GB (2^31-1 as maximum array > > index) due to the archive export base64-encoding the content. > > > >> -----Original Message----- > >> From: Scott Prater [mailto:pra...@wisc.edu] > >> Sent: 17 May 2011 18:33 > >> To: Support and info exchange list for Fedora users. > >> Subject: Re: [fcrepo-user] REST export API negative array index > >> exception > >> > >> > >> Yes, trying with the latest stable version (3.4.2) would > be useful, > >> if you don't mind. There were some lowlevel garbage collection > >> problems that were fixed in the 3.4.2 release; these problems > >> manifested themselves in a variety of ways. > >> > >> I'm not saying this is the issue, but it wouldn't hurt to > verify that > >> your problem can be reproduced in 3.4.2. > >> > >> thanks, > >> > >> -- Scott > >> > >> On 05/17/2011 12:22 PM, Scott Hammel wrote: > >>> I'm pretty sure it is 3.4.0 (from files on the server it > >> looks like an > >>> August 2010 build. The server is in a totally isolated > network with > >>> nothing with GUI support that can hit the admin tools). > >>> > >>> Tomcat is the version bundled with the Fedora installer. > >>> > >>> Would you like me to be sure I'm running at the latest > >> version and try > >>> the test scripts again before you go forward? > >>> > >>> Scott > >>> > >>> On 05/17/2011 12:45 PM, Scott Prater wrote: > >>>> Thanks, Scott. I'll try to reproduce the problem in my > >> environment, > >>>> Fedora 3.4.2. > >>>> > >>>> Can you tell me what version of Fedora and Tomcat (or > other webapp > >>>> server) you're using? > >>>> > >>>> -- Scott > >>>> > >>>> On 05/17/2011 11:08 AM, Scott Hammel wrote: > >>>>> Hey, Scott, > >>>>> > >>>>> Thanks for responding. I'm more a C/C++ programmer and > not a Java > >>>>> programmer (though I sometimes play one on the > Internet), so I'm > >>>>> just guessing on the array bounds -- feels like something > >>>>> incrementing an int into the sign bit, though I'd think > >> Java would > >>>>> throw some array bounds exception before that happened. > >> Figured I'd > >>>>> do a little math later maybe to test my hypothesis. > >>>>> > >>>>> Recall, this was all in a 32-bit environment. I really > >> hope it is a > >>>>> non-issue and something I'm doing in the end. Note > >> disseminating the > >>>>> datastream content directly appears to work OK, which > >> confuses me a > >>>>> little, though I haven't looked to see if the code for > that does > >>>>> things differently. > >>>>> > >>>>> Anyway, here's a series of commands (extracted from my > >> test scripts) > >>>>> that should reproduce the problem: > >>>>> > >>>>> mkdir /usr/fedora/tomcat/webapps/ROOT/ingestpool > >>>>> mkdir /tmp/fedrun > >>>>> dir=/tmp/fedrun > >>>>> pid=test:pid01 > >>>>> > >>>>> dd if=/dev/urandom > >>>>> of=/usr/fedora/tomcat/webapps/ROOT/ingestpool/sample.bin bs=1M > >>>>> count=400 > >>>>> > >>>>> ./makefoxml $pid http://localhost:8080/ingestpool/sample.bin> > >>>>> $dir/sample.xml > >>>>> > >>>>> /usr/fedora/client/bin/fedora-ingest.sh f $dir/sample.xml > >>>>> info:fedora/fedora-system:FOXML-1.1 localhost:8080 > >> fedoraAdmin<insert > >>>>> pwd here> http > >>>>> > >>>>> wget -O $dir/export.xml --auth-no-challenge > >> --http-user=fedoraAdmin > >>>>> --http-password=<insert pwd here> > >>>>> http://localhost:8080/fedora/objects/$pid/export?context=archive > >>>>> > >>>>> Note: I use the REST call via a wget rather than the > >> provided export > >>>>> client scripts because it looks to me from the Java heap > >> explosion > >>>>> that the export scripts must end up doing the export > via the SOAP > >>>>> API. > >>>>> -- > >>>>> The content of makefoxml: > >>>>> > >>>>> #!/bin/bash > >>>>> > >>>>> #usage: makefoxml<pid> <refurl> > >>>>> #escape slashes off the URL > >>>>> RF=${2//\//\\/} > >>>>> #if you need to escape ampersands as well, uncomment this: > >>>>> #RF=${RF//'&'/'\&'} > >>>>> > >>>>> # make substitutions .... > >>>>> sed ' > >>>>> s/PID=""/PID="'"$1"'"/ > >>>>> s/rdf:about=""/rdf:about="info:fedora\/'"$1"'"/ > >>>>> s/dc:identifier>/dc:identifier>'"$1"'/ > >>>>> s/REF=""/REF="'"${RF}"'"/ > >>>>> '< "foxml_tpl.xml" > >>>>> > >>>>> -- > >>>>> The content of foxml_tmp.xml (the sed script above does > the edits > >>>>> noted in the xml comments in this template): > >>>>> > >>>>> <?xml version="1.0" encoding="UTF-8"?> > >>>>> <!-- following element: set the PID attribute --> > >>>>> <foxml:digitalObject VERSION="1.1" PID="" > >>>>> xmlns:foxml="info:fedora/fedora-system:def/foxml#" > >>>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > >>>>> xsi:schemaLocation="info:fedora/fedora-system:def/foxml# > >>>>> http://www.fedora.info/definitions/1/0/foxml1-1.xsd"> > >>>>> > >>>>> <foxml:objectProperties> > >>>>> <foxml:property NAME="info:fedora/fedora-system:def/model#state" > >>>>> VALUE="A"/> <foxml:property > >>>>> NAME="info:fedora/fedora-system:def/model#label" VALUE=""/> > >>>>> <foxml:property > NAME="info:fedora/fedora-system:def/model#ownerId" > >>>>> VALUE="fedoraAdmin"/> > >>>>> </foxml:objectProperties> > >>>>> > >>>>> <foxml:datastream CONTROL_GROUP="X" ID="RELS-EXT"> > >>>>> <foxml:datastreamVersion > >>>>> FORMAT_URI="info:fedora/fedora-system:FedoraRELSExt-1.0" > >>>>> ID="RELS-EXT.0" LABEL="RDF Statements about > >> this Object" > >>>>> MIMETYPE="application/rdf+xml"> <foxml:xmlContent> <rdf:RDF > >>>>> xmlns:dc="http://purl.org/dc/elements/1.1/" > >>>>> > >> xmlns:fedora="info:fedora/fedora-system:def/relations-external#" > >>>>> > >> xmlns:fedora-model="info:fedora/fedora-system:def/model#" > >>>>> > >> xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" > >>>>> > >> xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > >>>>> xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> > >>>>> <!-- following element: put the PID as the value for > the rdf:about > >>>>> attribute --> <rdf:description rdf:about=""> > >>>>> </rdf:description> > >>>>> </rdf:RDF> > >>>>> </foxml:xmlContent> > >>>>> </foxml:datastreamVersion> > >>>>> </foxml:datastream> > >>>>> > >>>>> <foxml:datastream CONTROL_GROUP="X" ID="DC" STATE="A" > >>>>> VERSIONABLE="true"> <foxml:datastreamVersion ID="DC.0" > >> LABEL="Dublin > >>>>> Core Record" MIMETYPE="text/xml"> <foxml:xmlContent> > <oai_dc:dc > >>>>> xmlns:dc="http://purl.org/dc/elements/1.1/" > >>>>> > >> xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" > >>>>> > >> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > >>>>> xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ > >>>>> http://www.openarchives.org/OAI/2.0/oai_dc.xsd"> > >>>>> <dc:title></dc:title> > >>>>> <dc:creator>Test Program</dc:creator> > >>>>> <dc:description>A test object</dc:description> > >>>>> <!-- following element: put the PID between the tags --> > >>>>> <dc:identifier></dc:identifier> </oai_dc:dc> > >>>>> </foxml:xmlContent> > >>>>> </foxml:datastreamVersion> > >>>>> </foxml:datastream> > >>>>> > >>>>> <foxml:datastream CONTROL_GROUP="M" ID="Content" STATE="A"> > >>>>> <foxml:datastreamVersion ID="Content.0" LABEL="This is > the object > >>>>> content" MIMETYPE=" application/octet-stream"> > >>>>> <!-- following element: put the URL to the content file > >> as the value > >>>>> for the REF attribute --> > >>>>> <!-- must be an http URL, e.g., > >>>>> http://localhost:8080/ingestpool/foxmldoc.xml --> > >>>>> <!-- I just create a directory "ingestpool" under > >>>>> /usr/fedora/tomcat/webapps/ROOT and put the files there --> > >>>>> <foxml:contentLocation REF="" TYPE="URL" /> > >>>>> </foxml:datastreamVersion> </foxml:datastream> > >>>>> > >>>>> > >>>>> </foxml:digitalObject> > >>>>> > >>>>> > >>>>> > >>>>> On 05/17/2011 10:00 AM, Scott Prater wrote: > >>>>>> Scott, > >>>>>> > >>>>>> Can you come up with a test case that confirms this > >> limitation? If > >>>>>> you can provide one, I'll open up a JIRA ticket for the issue. > >>>>>> > >>>>>> thanks, > >>>>>> > >>>>>> -- Scott > >>>>>> > >>>>>> On 05/16/2011 10:45 AM, Scott Hammel wrote: > >>>>>>> Oh, I think I see: last line of the serializer's serialize > >>>>>>> function does > >>>>>>> this: > >>>>>>> bytes.toByteArray() > >>>>>>> where bytes is a ByteArrayOutputStream > >>>>>>> > >>>>>>> I *think* the max size of an array index in Java (32-bit) is > >>>>>>> 2,147,483,647 (i.e., 2^31 - 1, max value of a java > >> int). So, this > >>>>>>> function will throw an exception if a datastream > >> "archive" export > >>>>>>> is> ~2 GB. > >>>>>>> > >>>>>>> scott > >>>>>>> > >>>>>>> On 05/16/2011 11:00 AM, Scott Hammel wrote: > >>>>>>>> Hi, > >>>>>>>> > >>>>>>>> Running some export tests using Fedora's REST export > >> API, I get a > >>>>>>>> negative array index Java exception when doing an > >> "archive" export of an > >>>>>>>> object at around 400 MB (>320 MB,< 450 MB). > >>>>>>>> > >>>>>>>> Fedora is version 3.4 something; running on 32-bit > CentOS 5.5, > >>>>>>>> Sun Java 1.6, 21 > >>>>>>>> > >>>>>>>> Is it just me or has anyone else seen something like that? > >>>>>>>> > >>>>>>>> Thanks, > >>>>>>>> Scott > >>>>>>>> > >>>>>>>> > >> ----------------------------------------------------------------- > >>>>>>>> ------------- > >>>>>>>> Achieve unprecedented app performance and reliability What > >>>>>>>> every C/C++ and Fortran developer should know. Learn > how Intel > >>>>>>>> has extended the reach of its > >> next-generation tools > >>>>>>>> to help boost performance applications - inlcuding clusters. > >>>>>>>> http://p.sf.net/sfu/intel-dev2devmay > >>>>>>>> _______________________________________________ > >>>>>>>> Fedora-commons-users mailing list > >>>>>>>> Fedora-commons-users@lists.sourceforge.net > >>>>>>>> > >> https://lists.sourceforge.net/lists/listinfo/fedora-commons-users > >> ------------------------------------------------------------------ > >>>>>>> ------------ > >>>>>>> Achieve unprecedented app performance and reliability > What every > >>>>>>> C/C++ and Fortran developer should know. Learn how Intel has > >>>>>>> extended the reach of its > >> next-generation tools > >>>>>>> to help boost performance applications - inlcuding clusters. > >>>>>>> http://p.sf.net/sfu/intel-dev2devmay > >>>>>>> _______________________________________________ > >>>>>>> Fedora-commons-users mailing list > >>>>>>> Fedora-commons-users@lists.sourceforge.net > >>>>>>> > >> https://lists.sourceforge.net/lists/listinfo/fedora-commons-users > >>>>> > >> > -------------------------------------------------------------------- > >>>>> ---------- > >>>>> Achieve unprecedented app performance and reliability > What every > >>>>> C/C++ and Fortran developer should know. Learn how Intel has > >>>>> extended the reach of its > >> next-generation tools > >>>>> to help boost performance applications - inlcuding clusters. > >>>>> http://p.sf.net/sfu/intel-dev2devmay > >>>>> _______________________________________________ > >>>>> Fedora-commons-users mailing list > >>>>> Fedora-commons-users@lists.sourceforge.net > >>>>> > https://lists.sourceforge.net/lists/listinfo/fedora-commons-users > >>> > >>> > >> > --------------------------------------------------------------------- > >> - > >>> -------- > >>> Achieve unprecedented app performance and reliability > >>> What every C/C++ and Fortran developer should know. > >>> Learn how Intel has extended the reach of its > next-generation tools > >>> to help boost performance applications - inlcuding clusters. > >>> http://p.sf.net/sfu/intel-dev2devmay > >>> _______________________________________________ > >>> Fedora-commons-users mailing list > >>> Fedora-commons-users@lists.sourceforge.net > >>> https://lists.sourceforge.net/lists/listinfo/fedora-commons-users > >> > >> -- > >> Scott Prater > >> Library, Instructional, and Research Applications (LIRA) > >> Division of Information Technology (DoIT) University of > >> Wisconsin - Madison pra...@wisc.edu > >> > >> -------------------------------------------------------------- > >> ---------------- > >> Achieve unprecedented app performance and reliability > >> What every C/C++ and Fortran developer should know. > >> Learn how Intel has extended the reach of its > next-generation tools > >> to help boost performance applications - inlcuding clusters. > >> http://p.sf.net/sfu/intel-dev2devmay > >> _______________________________________________ > >> Fedora-commons-users mailing list > >> Fedora-commons-users@lists.sourceforge.net > >> https://lists.sourceforge.net/lists/listinfo/fedora-commons-users > >> > > > > > ---------------------------------------------------------------------- > > -------- > > What Every C/C++ and Fortran developer Should Know! > > Read this article and learn how Intel has extended the reach of its > > next-generation tools to help Windows* and Linux* C/C++ and Fortran > > developers boost performance applications - including clusters. > > http://p.sf.net/sfu/intel-dev2devmay > > _______________________________________________ > > Fedora-commons-users mailing list > > Fedora-commons-users@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/fedora-commons-users > > > > > -------------------------------------------------------------- > ---------------- > What Every C/C++ and Fortran developer Should Know! > Read this article and learn how Intel has extended the reach of its > next-generation tools to help Windows* and Linux* C/C++ and Fortran > developers boost performance applications - including clusters. > http://p.sf.net/sfu/intel-dev2devmay > _______________________________________________ > Fedora-commons-users mailing list > Fedora-commons-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/fedora-commons-users > ------------------------------------------------------------------------------ What Every C/C++ and Fortran developer Should Know! Read this article and learn how Intel has extended the reach of its next-generation tools to help Windows* and Linux* C/C++ and Fortran developers boost performance applications - including clusters. http://p.sf.net/sfu/intel-dev2devmay _______________________________________________ Fedora-commons-users mailing list Fedora-commons-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/fedora-commons-users