The basexgui startup file now contains: BASEX_JVM="-Xmx8g -Xss4m $BASEX_JVM"
It helped the script a long way, but eventually it had to kneel. It works fine though, on smaller datasets. Maybe there is some other way to get the data over. I'll have a talk with the guys providing the OAI-endpoint. Thanks for the pointer to Xss! Lars 2016-05-11 14:38 GMT+02:00 Dirk Kirsten <d...@basex.org>: > Hello Lars, > > if you have a deep recursion Java will at some point hit its stack size > limit. Have you already tried to simply increase the Java stack size, e.g. > by passing the parameter -Xss2m to the JVM? > > Cheers > Dirk > > > On 05/11/2016 01:43 PM, Lars Johnsen wrote: > > The following code generates the error "Stack Overflow: try tail > recursion?" > > The code reads in bibliographic data using OAI-PMH and updates a database > for each chunk of data. With OAI-PMH, only part of the data is available > for each request, so the server returns a resumption token if there are > more data available. > > The xquery function making the queries is implemented recursively preceded > by a database update request (see the last two lines) for each call. Is it > db:add() that causes the stack overflow? The recursion cannot be placed > further towards the end! > > declare %updating function local:getResumption($token) { > if (empty($token)) then > () > else > let $http-request := http:send-request($http-option, $URL || > $token) > let $result := > if ($http-request instance of node()) then > $http-request > else > <http-err>{$http-request}</http-err> > > let $resume := $result//oai:resumptionToken/text() > return ( > db:add($database,element chunk {$result//oai:metadata}, $path) > , > local:getResumption($resume) > ) > }; > > Best, > Lars > > > -- > Dirk Kirsten, BaseX GmbH, http://basexgmbh.de > |-- Firmensitz: Blarerstrasse 56, 78462 Konstanz > |-- Registergericht Freiburg, HRB: 708285, Geschäftsführer: > | Dr. Christian Grün, Dr. Alexander Holupirek, Michael Seiferle > `-- Phone: 0049 7531 91 68 276, Fax: 0049 7531 20 05 22 > >