Saltar al contenido principal

Manejo de Errores en Sincronización

Flujo de error

Cuando una request falla, se ejecuta onError(err, sender, req). El error se guarda en req.latestError y se decide qué hacer según el status HTTP.

Tabla de decisiones

CondiciónAcciónDetalle
err === 'path not found'Eliminar requestError interno: archivo local no encontrado (PUTF)
err.status === 400 + DUPLICATED_KEY (-6)Eliminar requestEl recurso ya existe en el servidor
err.status === 400 + removeOnFail en eventDataEliminar requestEl servicio marcó que se descarte si falla
err.status === 400 + error Aura genéricoDetener sender, emitir offlineBadRequestEl servicio de dominio decide qué hacer
err.status === 400 sin error AuraDetener senderQueda bloqueado hasta retry manual
err.status === 403Detener senderError de autenticación
err.status === 429Detener senderRate limiting
isTimeoutCode (408, 504, 598, 599)Detener senderTimeout, se reintenta en próximo trySync
err.status > 499 + request > 48hsMover a removedQueueRequest vieja con error de servidor
err.status > 499 + request < 48hsDetener senderSe reintenta después
err.status > 400 (4xx genérico)Incrementar attemptsSi attempts > 8 → mover a removedQueue
DefaultDetener senderError no manejado

offlineBadRequest

Subject que permite a los servicios de dominio manejar errores específicos:

// app.component.ts
this.offlineService.offlineBadRequest.subscribe(data => {
if (data.sender === this.scoutingService.getSender()) {
this.scoutingService.handleBadRequest(data.id, data.error);
} else if (data.sender === this.appsService.getSender()) {
this.appsService.handleBadRequest(data.id, data.error);
}
});

removedQueue

Requests que se eliminan (por error o manualmente) se mueven a removedQueue con un timestamp deleted. El usuario puede restaurarlas desde la UI de sync.

MAX_ATTEMPTS

Constante: 8. Aplica solo para errores 4xx genéricos (no 400, 403, 429).

Timeout de requests viejas

Requests con err.status > 499 y más de 48 horas (172800000 ms) se mueven automáticamente a removedQueue.