Hello Josh, many thanks for your hint. In accordance to this hint, I just try to reingest authority records 'per partes'. Idealy with some scripting. I try manually reingest first 200 authority records and it works.
I will share my script and probably also identified source of this issue. Thanks and best regards Vaclav On Sat, Aug 18, 2018 at 1:30 AM Josh Stompro <[email protected]> wrote: > Hello Vaclav, It looks like this error starts when you hit the authority > reindex at the end of the upgrade script. > > It looks like the previous database updates have already been committed at > that point, a new transaction runs for the authority reingest. So you may > be able to try running small batches of authority records to reingest at > once, instead of trying to do them all at once. That may help you narrow > down the problem to being with a specific authority record vs being with > the authority reindexing process as a whole. > > If you pick out one existing authority record, and change the update > command to something like. > UPDATE authority.record_entry SET id = id WHERE NOT DELETED and id=1234; > -- where 1234= authority.record_entry.id that you want to target. > > Then you can try reindexing just one record and see if that succeeds. > > Create a new script that just contains the Reingest authority record > section of the script (lines 6806-6852), and modify that and run it against > your database. > > If one record succeeds, then it very well may be specific authority > records that are causing the problems. > > You could try narrowing it down by running the update on groups of > authority records. > > Here is a query that builds a query string to update 50 authority records > at a time. > > select > 'UPDATE authority.record_entry SET id = id WHERE NOT DELETED AND id > BETWEEN '||min||' and '||max||' ;' > from ( > select min(id),max(id),chunkno > from ( > select > id > , ((ROW_NUMBER() over (ORDER BY id) - 1) / 50)+1 as chunkNo --change 50 to > how many records you want in a group > from authority.record_entry where not deleted and id>0 > ) x > group by 3 > order by 1 > ) y > ; > > Also, if you echo the queries as they are executed it may be clearer which > group the problem is in. (psql -a option). Once you narrow it down to a > group, you can change the script to run one update per record, to find the > specific record. > > You may also be able to modify the authority.extract_headings[1] function > to spit out some debugging info. It looks to me like the " transformed_xml > := oils_xslt_process(marc, xfrm.xslt);" line is where the error is coming > up, when the authority marc data is passed to the oils_xslt_process, along > with the config.xml_transform.xslt data for the index that is being > processed. Maybe add a try block and then on catching an error output the > marc data? (I'm not that familiar with stored procedures though, to know > how to go about doing that. Looks like it is by using an EXCEPTION clause?) > > Josh Stompro - LARL IT Director > > 1 - > http://git.evergreen-ils.org/?p=Evergreen.git;a=blob;f=Open-ILS/src/sql/Pg/version-upgrade/2.12.6-3.0.0-upgrade-db.sql;h=7a865a89db22c333e8da9e3e7750bc9d1fc8bb95;hb=HEAD#l4782 > > -----Original Message----- > From: Open-ils-general [mailto: > [email protected]] On Behalf Of Václav > Jansa > Sent: Friday, August 17, 2018 7:04 AM > To: Evergreen Discussion Group <[email protected] > > > Subject: [OPEN-ILS-GENERAL] Problem with upgrade script 2.12.6-3.0.0 on > line 6839 > > Hello Evergreeners, > we are just trying to update our last production Evergreen installation > (from 2.12 to 3.1), two are done without any issues, but with last one > we encountered following error during first update step (2.12.6-3.0.0) > > psql:version-upgrade/2.12.6-3.0.0-upgrade-db.sql:6839: ERROR: runtime > error: file unknown-55cee649a7a0 element attribute > xsl:attribute: Cannot add attributes to an element if children have been > already added to the element. > at line 31. > CONTEXT: PL/Perl function "oils_xslt_process" > PL/pgSQL function authority.extract_headings(text,integer[]) line 36 at > assignment > PL/pgSQL function authority.simple_heading_set(text) line 77 at FOR over > SELECT rows > PL/pgSQL function authority.indexing_ingest_or_delete() line 46 at FOR > over SELECT rows > psql:version-upgrade/2.12.6-3.0.0-upgrade-db.sql:6841: ERROR: current > transaction is aborted, commands ignored until end of transaction block > psql:version-upgrade/2.12.6-3.0.0-upgrade-db.sql:6842: ERROR: current > transaction is aborted, commands ignored until end of transaction block > psql:version-upgrade/2.12.6-3.0.0-upgrade-db.sql:6843: ERROR: current > transaction is aborted, commands ignored until end of transaction block > psql:version-upgrade/2.12.6-3.0.0-upgrade-db.sql:6844: ERROR: current > transaction is aborted, commands ignored until end of transaction block > psql:version-upgrade/2.12.6-3.0.0-upgrade-db.sql:6850: ERROR: current > transaction is aborted, commands ignored until end of transaction block > > > > I already try to check authority related scripts, but from my point of > view, error is somewhere in our authority data in DB. > > Anybody else having the same experience? Do you have any idea how to > find out what is causing the error? > > Do you have any tip, how to ad some debugging code into standard code, > what will help us with finding probably failed data? > > > Thanks for help and all recommendations > > Best regards > > Vaclav Jansa > >
