Un respaldo de búsqueda sin credencial se omite en vez de romper la carga
El CI, apenas empezó a ejecutarse de verdad, hizo fallar dos de sus tres trabajos. La causa es un defecto de diseño, no del CI: la config del agente declara a Brave como respaldo, y la validación exigía la credencial para poder *leer* el archivo. Como la config vive en el repositorio y la credencial no, un clon limpio quedaba sin poder cargar su propia configuración. Mis pruebas en Gigastar no lo veían porque acá el archivo .env existe. Ahora se distingue por rol, que es lo que corresponde: - El primario sin credencial sigue siendo error fatal. Sin él no queda ninguna búsqueda en pie, y descubrirlo en la primera consulta real es tarde. - Un respaldo sin credencial se cae de la cadena y el primario sigue andando. Degradarse es la respuesta correcta: tener red de seguridad es mejor que no tenerla, pero no tenerla es mejor que no arrancar. Omitir no es esconder. La propiedad respaldos_omitidos deja el motivo a la vista, y build_backend emite un aviso al construir la cadena, que es el punto por el que pasa cualquier entrypoint que use búsqueda. Verificado escondiendo .env y corriendo la suite y el validador como lo haría un clon limpio: 124 tests en verde con credencial y sin ella. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -26,6 +26,7 @@ import time
|
||||
import urllib.error
|
||||
import urllib.parse
|
||||
import urllib.request
|
||||
import warnings
|
||||
from dataclasses import dataclass
|
||||
from typing import Protocol
|
||||
|
||||
@@ -374,7 +375,18 @@ def build_backend(config) -> SearchBackend:
|
||||
|
||||
Con un solo backend devuelve ese backend pelado, para no envolver en una
|
||||
cadena algo que no la necesita.
|
||||
|
||||
Los respaldos sin credencial ya vienen filtrados de la config, pero se avisa
|
||||
acá: quedarse sin red de seguridad no puede pasar en silencio, y este es el
|
||||
punto por el que pasa cualquier entrypoint que use búsqueda.
|
||||
"""
|
||||
for nombre, variable in config.respaldos_omitidos:
|
||||
warnings.warn(
|
||||
f"búsqueda: el respaldo '{nombre}' queda deshabilitado porque falta "
|
||||
f"{variable}. Si el primario '{config.backend}' falla, no hay red.",
|
||||
RuntimeWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
cadena = [_construir_uno(nombre, config) for nombre in config.cadena]
|
||||
return cadena[0] if len(cadena) == 1 else CadenaDeBackends(cadena)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user