scieloorg / PC-Programs

SciELO PC Programs
7 stars 24 forks source link

[XC] Locking na base SQLite durante o registro de PIDs de artigo #3295

Closed patymori closed 4 years ago

patymori commented 4 years ago

Descrição do problema

Durante a conversão de artigos, o seguinte erro ocorreu:

Traceback (most recent call last):
  File "/home/scielo/xc/app/xc_2020/xml/.venv/src/scielo-production-tools/src/scielo/bin/xml/prodtools/xc.py", line 163, in convert_package
    scilista_items, xc_status, mail_info = self.proc.convert_package(package)
  File "/home/scielo/xc/app/xc_2020/xml/.venv/src/scielo-production-tools/src/scielo/bin/xml/prodtools/processing/pkg_processors.py", line 421, in convert_package
    conversion.register_pids_and_update_xmls(self.pid_manager)
  File "/home/scielo/xc/app/xc_2020/xml/.venv/src/scielo-production-tools/src/scielo/bin/xml/prodtools/processing/pkg_processors.py", line 127, in register_pids_and_update_xmls
    update_article_with_aop_status=self.db.get_valid_aop,
  File "/home/scielo/xc/app/xc_2020/xml/.venv/src/scielo-production-tools/src/scielo/bin/xml/prodtools/data/kernel_document.py", line 70, in add_article_id_to_received_documents
    pid_manager.register(pid_v2, pid_v3)
  File "/home/scielo/xc/app/xc_2020/xml/.venv/src/scielo-production-tools/src/scielo/bin/xml/prodtools/db/pid_versions.py", line 20, in register
    return self.db.insert("INSERT INTO pid_versions (v2, v3) VALUES (?,?)", (v2, v3,))
  File "/home/scielo/xc/app/xc_2020/xml/.venv/src/scielo-production-tools/src/scielo/bin/xml/prodtools/db/pid_versions.py", line 74, in insert
    self.cursor.execute(sql, parameters)
sqlite3.OperationalError: database is locked

Passos para reproduzir o problema

  1. Acesse a base SQLite e inicie uma transação com BEGIN IMMEDIATE TRANSACTION;
  2. Converta pacote(s) com o XC
  3. Observe o erro descrito acima

Comportamento esperado

O erro não deve ocorrer e o pacote deve ser convertido com sucesso.

Ambiente utilizado

O erro ocorreu no ambiente de teste de desenvolvimento durante testes de validação da nova versão do XC.

Referências

Forçar locking na base SQLite: