Projecte

General

Perfil

Accions

Tasca #4963

tancat
FJ FJ

Errors en la indexació d'autors com a frase (camp sencer)

Tasca #4963: Errors en la indexació d'autors com a frase (camp sencer)

Afegit per Ferran Jorba fa quasi 8 anys. Actualitzat fa aproximadament 7 anys.

Estat:
Tancada
Prioritat:
Normal
Assignat a:
Categoria:
Tecnologia
Inici:
11-04-2018
Data de venciment:
15-04-2018
Paraula clau:

Descripció

Des de fa uns dies m'estic trobant amb missatges d'aquest estil:

Error when putting the term ''Navau, Carles, 0000-0003-4763-5305'' into db (hitlist=intbitset([188837])): (167, "Out of range value for column 'id' at row 1")

  • 2018-04-11 16:52:53 -> InternalError: (167, "Out of range value for column 'id' at row 1") (connections.py:36:defaulterrorhandler)

Segons tots els indicis, sembla que es tracta que el valor de la columna de l'índex (de qualsevol camp?) ha arribat al seu màxim. Si ho entenc bé, ara mateix no s'estan indexant termes nous, per al menys algun dels índexos. Si ho entenc bé, els termes ja existents s'estan indexant correctament, i se li afegeixen els números de registre nous, però si es tracta de termes nous, no.

Si ho entenc bé, es tractaria de canviar el tipus de la columna 'id' del tipus numèric actual a un que pugui créixer més, com bigint:

Els camps numèrics de MariaDB (MySQL) són aquests:

https://mariadb.com/kb/en/library/data-types-numeric-data-types/

Aquesta operació, evidentment, fa una mica de paüra, voldria fer-ho abans al servidor de proves, i requerirà que mentrestant el DDD no estigui accessible; probablement ho faré el cap de setmana.

Després hauré de reindexar els registres modificats des que vaig rebre el primer d'aquests errors, ja repassaré quan.

FJ Actualitzat per Ferran Jorba fa quasi 8 anys Accions #1

Les taules amb un camp anomenat id més grans són aquestes:

ddd@mompou:~$ for table in $(echo 'show tables;' | dbexec | grep ^idx.*F$); do max=$(echo "select max(id) from $table;" | dbexec) && echo $max $table; done | sort -rnk 2 | most

max(id) 85185614 idxWORD09F
max(id) 16772237 idxPHRASE04F
max(id) 6326201 idxPAIR01F
max(id) 3723255 idxPAIR03F
max(id) 3330514 idxWORD01F
max(id) 2651580 idxPHRASE01F
max(id) 579616 idxPAIR08F
max(id) 567830 idxPAIR09F
max(id) 518567 idxPAIR14F
max(id) 514283 idxPHRASE09F
max(id) 474509 idxWORD03F
max(id) 257787 idxPAIR11F
max(id) 227086 idxPAIR04F
max(id) 212010 idxPHRASE08F
max(id) 200107 idxPAIR05F
[...]

D'altra banda, el camp `id` de la taula idxWORD09F sembla que ja la vaig convertir de mediumint(9) a int(10) fa algun temps:

ddd@mompou:~/tmp$ mysqldump --no-data ddduab | awk '/CREATE/ { table = $0 } /`id`/ && /AUTO_INCREMENT/ { print table, $0 }'

[...]
CREATE TABLE `idxPHRASE01F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE02F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE03F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE04F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE05F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE06F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE07F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE08F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE09F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE10F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE11F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE12F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE13F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE14F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE15F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE16F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE17F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE18F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE19F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE20F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE21F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE22F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE23F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE24F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE25F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE26F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD01F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD02F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD03F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD04F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD05F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD06F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD07F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD08F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD09F` (   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD10F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD11F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD12F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD13F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD14F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD15F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD16F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD17F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD18F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD19F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD20F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD21F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD22F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD23F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD24F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD25F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxWORD26F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
[...]

L'índex 04 és el d'autors, segons https://ddd.uab.cat/admin/bibindex/bibindexadmin.py i, a més, els casos d'error que m'envia per email Invenio semblen, efectivament, tots de frases d'autors:

  • Error when putting the term ''Castany F\xc3\xa1bregas, Jos\xc3\xa9'' into db (hitlist=intbitset([188817])): (167, "Out of range value for column 'id' at row 1")
  • Error when putting the term ''M\xc2\xaa Jos\xc3\xa9 Castany F\xc3\xa1bregas'' into db (hitlist=intbitset([188817])): (167, "Out of range value for column 'id' at row 1")
  • Error when putting the term ''R Fontova Forcada'' into db (hitlist=intbitset([188839, 188840])): (167, "Out of range value for column 'id' at row 1")
  • Error when putting the term ''D Garcia Bl\xc3\xa0zquez'' into db (hitlist=intbitset([188765])): (167, "Out of range value for column 'id' at row 1")
  • Error when putting the term ''L Puig i Ferriol'' into db (hitlist=intbitset([188788])): (167, "Out of range value for column 'id' at row 1")

Per tant dedueixo que tot quadra per concloure que es tracta de canviar el tipus id de la taula idxPHRASE04F de mediumint(9) a int(10) com per idxWORD09F.

FJ Actualitzat per Ferran Jorba fa quasi 8 anys Accions #2

FJ Actualitzat per Ferran Jorba fa quasi 8 anys Accions #3

Una altra verificació: el rang de valors per un camp mediumint és (https://mariadb.com/kb/en/library/mediumint/); hi afegeixo els punts de milers jo, per facilitar-ne la lectura:

  • signed:-8.388.608 to 8.388.607
  • unsigned: 0 to 16.777.215

Per tant, si max(id) 16.772.237 idxPHRASE04F, ja sembla ser això.

FJ Actualitzat per Ferran Jorba fa quasi 8 anys Accions #4

Per tant, el que he de fer és (https://mariadb.com/kb/en/library/alter-table/#modify-column):

echo 'ALTER TABLE idxPHRASE04F MODIFY id int(10) unsigned NOT NULL AUTO_INCREMENT;' | dbexec

FJ Actualitzat per Ferran Jorba fa quasi 8 anys Accions #5

Provant-ho abans al servidor de proves, primer amb Traces i després el DDD, sembla que tot és molt ràpid (menys de 2 segons per Traces i menys de 12 pel DDD) i fàcil:

A Traces:

traces@taltabull:~$ time echo 'ALTER TABLE idxPHRASE04F MODIFY id int(10) unsigned NOT NULL AUTO_INCREMENT;' | dbexec

real    0m1.652s
user    0m0.008s
sys    0m0.000s
traces@taltabull:~$ 

Confirmem que ha funcionat:

traces@taltabull:~$ mysqldump --no-data traces | awk '/CREATE/ { table = $0 } /`id`/ && /AUTO_INCREMENT/ { print table, $0 }' | most

[...]
CREATE TABLE `idxPHRASE01F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE02F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE03F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE04F` (   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE05F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE06F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE07F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
[...]

Al DDD:

ddd@taltabull:~$ time echo 'ALTER TABLE idxPHRASE04F MODIFY id int(10) unsigned NOT NULL AUTO_INCREMENT;' | dbexec

real    0m11.742s
user    0m0.000s
sys    0m0.008s
ddd@taltabull:~$ 

Comprovació:

ddd@taltabull:~$ mysqldump --no-data ddduab | awk '/CREATE/ { table = $0 } /`id`/ && /AUTO_INCREMENT/ { print table, $0 }' | most

[...]
CREATE TABLE `idxPHRASE01F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE02F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE03F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE04F` (   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE05F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE06F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
CREATE TABLE `idxPHRASE07F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
[...]

FJ Actualitzat per Ferran Jorba fa quasi 8 anys Accions #6

Com que només afecta l'índex de frase d'un sol camp (autor), no caldrà aturar el servei, ja que hem comprovat que serà prou ràpid (no crec que arribi als 20 segons), però sí que caldrà refer tot l'índex d'autors. Mentre es reindexa es pot consultar sense problemes; en faig una prova al servidor de proves per tenir una estimació del que pugui trigar, però ja és només per curiostat, ja que ho faré el cap de setmana:

ddd@taltabull:~$ bibindex -R -w author
2018-04-12 12:18:20 --> Task #355671 submitted.

Ha trigat una mica menys d'una hora:

$ ddd@taltabull:~$ ilog 355671
2018-04-12 12:18:23 --> Task #355671 started.
[...]
2018-04-12 13:12:39 --> Task #355671 finished. [DONE]

FJ Actualitzat per Ferran Jorba fa quasi 8 anys Accions #7

  • Tema ha canviat de Problemes amb la indexació (de nous termes?) a Errors en la indexació d'autors com a frase sencera (camp sencer)

FJ Actualitzat per Ferran Jorba fa quasi 8 anys Accions #8

  • Tema ha canviat de Errors en la indexació d'autors com a frase sencera (camp sencer) a Errors en la indexació d'autors com a frase (camp sencer)

FJ Actualitzat per Ferran Jorba fa quasi 8 anys Accions #9

  • Estat ha canviat de Creada a Tancada

Fet a Mompou, el DDD públic:

ddd@mompou:~$ time echo 'ALTER TABLE idxPHRASE04F MODIFY id int(10) unsigned NOT NULL AUTO_INCREMENT;' | dbexec

real    0m18.551s
user    0m0.000s
sys     0m0.008s
ddd@mompou:~$ mysqldump --no-data ddduab | awk '/CREATE/ { table = $0 } /`id`/ && /AUTO_INCREMENT/ { print table, $0 }' | most
[...]
CREATE TABLE `idxPHRASE01F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT, 
CREATE TABLE `idxPHRASE02F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT, 
CREATE TABLE `idxPHRASE03F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT, 
CREATE TABLE `idxPHRASE04F` (   `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
CREATE TABLE `idxPHRASE05F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT, 
CREATE TABLE `idxPHRASE06F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT, 
CREATE TABLE `idxPHRASE07F` (   `id` mediumint(9) unsigned NOT NULL AUTO_INCREMENT, 
[...]
ddd@mompou:~$ bibindex -R -w author
2018-04-13 05:44:47 --> Task #482244 submitted.
[...]
2018-04-13 06:40:36 --> Task #482244 finished. [DONE]

CA Actualitzat per Cristina Azorin fa quasi 8 anys Accions #10

  • Prioritat ha canviat de Immediata a Normal

CA Actualitzat per Cristina Azorin fa aproximadament 7 anys Accions #11

  • Paraula clau s'ha suprimit (JR)
Accions

També disponible a: PDF Atom