Overview
Al desarrollar aplicaciones con Atlas Device Sync, pueden producirse errores. Esta sección enumera errores comunes de sincronización y describe cómo solucionarlos.
Nota
Si encuentra un error que no aparece en esta página, puede presentar una reclamación. ticket de soporte.
Errores del protocolo de sincronización
La siguiente tabla describe los errores del protocolo de sincronización de dispositivos y cómo gestionarlos. Atlas App Services informa de los errores en los registros de sincronización de dispositivos.
Nombre del error | Descripción |
|---|---|
ErrorBadClientFileIdent | Este error ocurre cuando el cliente usa un archivo de reino al que el servidor no puede acceder después de finalizar y volver a habilitar la sincronización del dispositivo. Este error activa el reinicio del cliente. Para solucionarlo,reinícielo. |
ErrorClientFileUserNo coincide | Este error indica que el cliente intentó sincronizar un archivo de dominio asociado con una identidad distinta a la del usuario especificado. Esto puede ocurrir si la sincronización de dispositivos se cancela y se vuelve a habilitar mientras el usuario está desconectado, lo que invalida su identidad anterior. Para recuperarse de este error, elimine el archivo del reino local y luego vuelva a abrir el reino. |
Historiales de errores divergentes | Este error indica que el cliente intentó sincronizar un archivo de dominio con un historial de sincronización diferente al del dominio del servidor. Esto puede ocurrir si la sincronización de dispositivos se cancela y se vuelve a habilitar mientras el usuario está desconectado, lo que invalida su historial de sincronización anterior. Este error activa el reinicio del cliente. Para solucionarlo,reinícielo. |
ErrorPermisoDenegado | Este error se produce cuando los permisos de acceso a los datos de un usuario son insuficientes para una solicitud determinada. Esto puede ocurrir si un usuario intenta abrir un dominio sin permiso de lectura o modificar datos sin permiso de escritura. Para solucionar este error, revise sus reglas para asegurarse de que los usuarios tengan los permisos de acceso a los datos adecuados. |
ErrorOtroError | Este error indica una falla interna que no está cubierta por un error más específico. Por ejemplo, esto puede ocurrir cuando alcanzas el límite de almacenamiento de un clúster de Atlas con nivel gratuito. |
Errores de sincronización flexible
Los siguientes errores pueden ocurrir cuando su aplicación utiliza sincronización flexible.
Nombre del error | Descripción | ||||
|---|---|---|---|---|---|
ErrorBadQuery | Este error indica que la consulta del cliente no es válida o tiene un formato incorrecto. Incluye un mensaje que detalla el motivo. Para solucionar este error, es posible que deba verificar que la sintaxis de la consulta sea correcta y que esté utilizando operadores de consulta compatibles con el servidor. Además, confirme que está consultando un campo consultable en su configuración de Sincronización Flexible. Si su consulta utiliza un campo consultable indexado, asegúrese de que cumpla con los requisitos para consultas válidas del lado del cliente para campos consultables indexados. | ||||
Límites excedidos | Este error indica que la consulta utilizada ha excedido el límite de tamaño de 256 kB. Para recuperarse de este error, reestructura tu consulta para garantizar que los datos en tu consulta estén dentro del límite de tamaño aceptable. | ||||
ErrorPermisos del servidor cambiados | Este error indica que los permisos del servidor para el archivo ident han cambiado desde la última vez que se utilizó. Este error activa el reinicio del cliente. Para solucionarlo,reinícielo. | ||||
ErrorInitialSyncNotCompleted | Este error indica que el cliente intentó abrir una sesión antes de que se completara la sincronización inicial. Esto puede ocurrir cuando la aplicación acaba de habilitar la sincronización y aún está creando el historial de sincronización. El cliente intenta reconectarse hasta que este proceso esté completo. Luego, este error se resuelve y sincronizar comienza a funcionar normalmente. | ||||
ErrorCompensatingWrite | Este error no fatal ocurre cuando un cliente intenta una escritura ilegal. Las siguientes se consideran escrituras ilegales:
Dado que el dominio local no reconoce las escrituras "ilegales", la escritura siempre se realizará correctamente localmente. Al sincronizar, el servidor detectará la escritura ilegal y deshará el cambio. Esta operación, llamada "escritura compensatoria", se sincroniza con el cliente para que su dominio ya no tenga la escritura ilegal. El servidor también envía este error para informar al cliente de lo sucedido. Cualquier escritura local en un objeto determinado entre una escritura ilegal en ese objeto y la escritura compensatoria correspondiente se perderá. EjemploConsidere el siguiente ejemplo de pseudocódigo: Aquí el usuario no tiene permiso para escribir.
La escritura ilegal aparece en el registro de aplicaciones como un error no fatal. Las escrituras ilegales podrían indicar que el código de la aplicación está haciendo algo inesperado. En los siguientes casos, verá
|
Errores del traductor de MongoDB
Los siguientes errores pueden ocurrir en el proceso de traducción entre Device Sync y MongoDB Atlas.
Nombre del error | Descripción |
|---|---|
Máximos intentos de integración | Cuando el traductor de MongoDB no puede integrar un conjunto de cambios, realiza un número fijo de reintentos. Este error se produce cuando el traductor alcanza el número máximo de reintentos y no puede confirmar los cambios. Esto suele deberse a un tamaño de clúster insuficiente. Esto puede deberse a una transacción muy grande que excede los recursos disponibles del clúster. Por ejemplo, un dispositivo permanece sin conexión durante un tiempo prolongado e intenta sincronizar una cantidad inusual de transacciones por lotes. O bien, los recursos del clúster son generalmente insuficientes para las necesidades de la aplicación. Puedes resolver este error actualizando el nivel del clúster. Para evitar este error, asegúrese de que el clúster de MongoDB vinculado cumpla con las necesidades de su aplicación. Además, asegúrese de que su aplicación utilice las prácticas recomendadas para leer y escribir datos. Consulte "Tamaño del clúster de Atlas y selección de niveles" para obtener más información. |
Error de codificación de Mongo | Este error se produce cuando una escritura de MongoDB Atlas (es decir, que no sea un cliente de sincronización) modifica un documento de forma que ya no se ajusta al esquema de la aplicación. Los documentos que no coinciden con el esquema no se pueden sincronizar y las actualizaciones locales del objeto representado por dicho documento no se propagarán. Para obtener más información,consulte Documentos no sincronizados. |
TranslatorCorrectiveErasure | Este error se produce cuando un clúster MongoDB sincronizado rechaza la operación de escritura de un cambio propagado en la sincronización de dispositivos. Esto suele deberse a una excepción de clave duplicada, lo que significa que dos objetos usan la misma clave principal. Para evitar este error, utilice |
Error fatal del traductor: historial de cambios perdido | Este error se produce cuando las entradas antiguas del registro de operaciones han expirado antes de que el proceso traductor del servidor pudiera leerlas. Sin estas entradas, el traductor no puede restablecer el clúster de MongoDB ni el servidor de objetos Realm a un estado equivalente. Esto puede suceder cuando:
Debido a que el nivel gratuito tiene un registro de operaciones compartido, es más vulnerable a este error. Para resolver este error, finalice y vuelva a habilitar la sincronización. |
Errores de conexión de MongoDB
Si habilita la sincronización de dispositivos en un clúster recién creado, es posible que la operación no pueda analizar el URI del clúster. Esto se debe a que aún no se ha propagado un registro SRV para el clúster. Existen dos posibles soluciones alternativas:
Espere cinco minutos y luego habilite la sincronización de dispositivos Atlas.
Desvincular y volver a vincular el clúster.
Errores del cliente de sincronización
El protocolo de sincronización devuelve un mensaje cuando un error parece haber sido causado por un cliente conectado. Cada mensaje contiene un número de código y una descripción del ERROR error.
Para ver la lista completa de errores de sincronización, consulte la lista de códigos de error en el repositorio GitHub de Realm Database Core.
Manejar errores de sincronización
Toda aplicación que usa Sync necesita un gestor de errores de sincronización. Para obtener más información sobre el manejo de errores de sincronización, consulte su SDK preferido:
Establecer el nivel de registro del cliente
Puede especificar el nivel de registro del cliente. Configurarlo en trace o debug puede ayudar a diagnosticar problemas durante el desarrollo de su aplicación. Puede registrar información general o detalles sobre todos los eventos de sincronización, o solo advertencias o errores.
Importante
El registro detallado afecta negativamente al rendimiento. Para la implementación en producción, reduzca el nivel de registro.
Para obtener más información sobre los niveles de registro disponibles, incluido cómo configurar el nivel de registro del cliente, consulte su SDK preferido.