Skip to content

Conversation

@alexmbar
Copy link
Contributor

@alexmbar alexmbar commented Aug 4, 2025

Description

Se reemplazó el uso de un cursor global en las funciones que acceden a catalogs.db por cursores locales creados dentro de cada función.
Este cambio previene el error sqlite3.ProgrammingError: Recursive use of cursors not allowed que ocurría al procesar múltiples CFDIs en entornos multi-hilo o con ejecución concurrente.

Se agregaron contextos seguros (with conn:) para asegurar una correcta gestión de transacciones y evitar accesos simultáneos no controlados.

Motivation and context:

  • Resolver fallos reportados en ejecución concurrente de procesamiento XML con satcfdi.
  • Mejorar la estabilidad en entornos que procesan grandes volúmenes de CFDIs en paralelo.
  • Mantener compatibilidad con versiones actuales de Python y SQLite.

Fixes # (no hay issue abierto relacionado, pero soluciona error reproducible al usar satcfdi en multi-threading).


Type of change

  • Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?

  • Procesamiento concurrente de +500 XML de prueba en entorno multi-threading sin aparición del error Recursive use of cursors not allowed.
  • Verificación manual de resultados de funciones select, select_all y trans para validar que no hubo cambios funcionales en la obtención de datos desde los catálogos SAT.

Test Configuration:

  • Python: 3.11.9
  • OS: Windows 10 / Linux Ubuntu 22.04
  • Toolchain: SQLite3 integrado en Python
  • SDK: satcfdi v1.0.7

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • My changes generate no new warnings
  • New and existing unit tests pass locally with my changes
  • I have checked my code and corrected any misspellings

Fix: evitar uso recursivo de cursores en SQLite usando cursores locales
@satcfdi satcfdi merged commit 34b3629 into SAT-CFDI:main Aug 4, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants