Нарушение ограничения в исходящем пакете симметричных элементов при достижении порогового значения байта - PullRequest
0 голосов
/ 02 апреля 2019

Я использую Symmetricds версии 3.9.0. Сервер Linux работает с базой данных PostgreSQL10, а клиентская часть Android работает с sqlite3. Я недавно обновился с версии 3.7

Мы начали наблюдать за сообщениями об ошибках в журнале симметричности о том, что некоторые из исходящих пакетов не выполняются с нарушением ограничения. Сообщение об ошибке:

 The outgoing batch <node id> failed: android.database.sqlite.SQLiteConstraintException: column name is not unique (code 19)

В другом случае я получаю сообщение об ошибке вроде:

The outgoing batch <nodeid>-357997 failed: android.database.sqlite.SQLiteConstraintException: UNIQUE constraint failed: sym_context.name (code 1555)

Я вручную извлек информацию sym_data на основе идентификатора пакета 357997 и проверил из базы данных TAB Android, что соответствующие данные уникальны на стороне сервера и отсутствуют на стороне клиента. Однако ошибка повторяется.

Похоже, под sym_node_host информация пульса также перестает обновляться для узлов, о которых сообщается, имеют нарушение.

Таблица sym_context на удаленном узле не пуста. В таблице две строки:

sqlite> select * from sym_context;
name                  |context_value|create_time        |last_update_time
sync_triggers_disabled|1            |2019-02-26 00:45:52|
sync_node_disabled    |36-44        |2019-02-26 00:45:52

|

Серверная сторона прекращает получать пульс от TAB NODE с той же даты, что и записи в таблице sym_context.

Похоже, что при достижении общего порогового значения байтов вместо отправки оставшихся пакетов в последующем запросе на извлечение процесс фактически перезапускается после отображения сообщения об ошибке, что ему не удалось вставить строку в sym_context. Запись нарушает ограничение первичного ключа для столбца «имя».

Может кто-нибудь объяснить, когда достигнут порог исходящих байтов, каковы следующие шаги? Что удаленный узел пытается вставить в таблицу sym_context? Таблица должна быть пустой?

Любая подсказка высоко ценится, поскольку она находится на рабочем сервере и влияет на большое количество клиентов.

Я не сталкивался с такими проблемами на 3.7 и не уверен, как это отладить. Любая подсказка очень ценится.

...