Feat/ingest sanitize rollback retry cap#1203
Merged
Merged
Conversation
- Coerce colunas numéricas de tno_occultation na ingestão: sentinels só com asteriscos viram NaN antes do COPY (ex.: pmdec ****). - ingest_predictions: commit por task; rollback em erro; retry com backoff para psycopg2 InsufficientResources (env INGEST_INSUFFICIENT_RESOURCES_*). - Asteroid.ingest_predictions relança DBAPIError quando há conn para o caller tratar após rollback na transação. - MAX_CONCURRENT_ASTEROID_TASKS reduz proporcionalmente max_workers dos dois executores Parsl em linea (0 desliga). - Testes unitários para a sanitização numérica. Made-with: Cursor
… de workers Remove MAX_CONCURRENT_ASTEROID_TASKS. Em linea com dois executores, max_blocks de small/large vem de PARSL_LINEA_SMALL_MAX_BLOCKS (default 16) e PARSL_LINEA_LARGE_MAX_BLOCKS (default 12), com mínimo 1. Made-with: Cursor
… em run_pred_occ Alinha com run.py e evita IERS/cache fora do diretório esperado quando CACHE_DIR está definido. Made-with: Cursor
…config Centraliza defaults e parsing em _env_int_min_one; run_pred_occ só reloga max_blocks já aplicados pelo get_config. Made-with: Cursor
- PARSL_LINEA_SMALL_CORES_PER_NODE (default 28), PARSL_LINEA_LARGE_CORES_PER_NODE (52) - max_workers = max_blocks * cores_per_node por executor - Log em run_pred_occ inclui max_blocks, cores_per_node e max_workers Made-with: Cursor
Se as variáveis não forem definidas, max_blocks small/large usa 1 (antes 16/12). Comentários alinhados ao comportamento. Made-with: Cursor
…Parsl, fallback rm -rf
…u cores_per_node como
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Melhorias na pipeline de predição de ocultações: sanitização dos dados de ingestão de asteroides com rollback/retry, delegação do cache IERS ao astropy, e refinamentos na configuração do Parsl.
Principais mudanças
Sanitização de ingest com rollback/retry — O asteroid.py agora sanitiza os dados antes do COPY/ingest, remove linhas com sentinelas mascaradas que quebravam a ingestão, e utiliza transações via conn.begin() com rollback automático em caso de falha.
Cache IERS delegado ao astropy — Tanto no backend quanto no predict_occultation, a gestão do cache IERS foi delegada ao astropy, eliminando backups manuais e simplificando os scripts warm_cache.py e entrypoint.sh. O CACHE_DIR é definido antes da importação do Astropy para evitar race conditions.
Configuração Parsl flexível — A partition do Slurm agora é configurável via PARSL_SLURM_PARTITION (antes hardcoded). Novas variáveis PARSL_LINEA_MAX_BLOCKS e PARSL_LINEA_CORES_PER_NODE substituem o cap rígido de workers, com defaults seguros (MAX_BLOCKS=1).
Infraestrutura — O Dockerfile agora cria /app/cache na build, e os entrypoints foram simplificados. Templates de compose e env sincronizados com as novas variáveis.