[OPEN-ILS-GENERAL] Problem with upgrade script 2.12.6-3.0.0 on line 6839

Josh Stompro stomproj at exchange.larl.org
Fri Aug 17 16:39:07 EDT 2018


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:open-ils-general-bounces at list.georgialibraries.org] On Behalf Of Václav Jansa
Sent: Friday, August 17, 2018 7:04 AM
To: Evergreen Discussion Group <open-ils-general at list.georgialibraries.org>
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



More information about the Open-ils-general mailing list