"Если вдруг открылся люк, не пугайся, это глюк!" (с) Если что-то работает не так, вы нашли ошибку или опечатку в программе — вам в этот раздел
Аватара пользователя
mupkos
Добрый день! Обновили программу до версии 8.15.0.3 - проблема осталась окнах конференций сообщения отображаются как попало. Новые сообщения не выводятся, хотя в истории есть. В админке при загрузке прототоколов в Главной конферении грузится все подряд, не взирая на выборку по дата. В приложении -скриншот, где видно, что при попытке отобрать сообщения в одной из конференций на сегодняшнее число загружается вся история, причем неотсортированная.
Вложения
Screenshot_1.jpg
Screenshot_1.jpg (222.04 КБ) Просмотров: 1574
Аватара пользователя
Алексей Пикуров
Давайте бекап баз сервера, будем смотреть, что там у вас происходит. Чатом мне вышлите.
Аватара пользователя
Алексей Пикуров
Я изменил название темы, давайте более осмысленные названия, пожалуйста.
Аватара пользователя
mupkos
Хорошо, принято. Бэкап сделал, но чат что-то не открывается.
Аватара пользователя
Алексей Пикуров
Ctrl+F5 страницу в форуме и попробуйте снова.
Аватара пользователя
mupkos
Чат так и не открывается. Есть другой способ передать архив?
Аватара пользователя
Алексей Пикуров
Должен открываться. Я проверил, работает всё. Можете залить на Google.Drive и скинуть линк почтой, на [email protected]
Аватара пользователя
mupkos
По почте ссылку отправил.
Аватара пользователя
Алексей Пикуров
Скачал, можете удалять из облака. Посмотрю, отвечу, скорее всего, завтра.
Аватара пользователя
mupkos
Вчера на ночь удалил из базы файл history.db, запустил сервер - окна конференций очистились, но сообщения были доступны в истории. Новые сообщения стали нормально появляться, протоколы вроде нормально отображались. А с утра через окна конференций заполнились старыми сообщениями, половина приватов пропала, сообщения опять нормально не отправляются.
Аватара пользователя
mupkos
Дополню предыдущее сообщение: экспериментировал с альтернативным сервером - после удаления файла history.db окна конференций пусты, но есть история. А если в истории удалить какое-нибудь сообщение и перезайти в клиент, то окна конференций заполняются сообщениями, но новые сообщения уже нормально не работают.
Аватара пользователя
Алексей Пикуров
экспериментировал с альтернативным сервером

Как это? Поясните. В MyChat нет альтернативного сервера, сервер только под win32.

В базе данных сервера некорректные данные в таблице confs_idx, из-за этого у вас сломалась индексация сообщений в конференции UID=2 и других тоже.

Вы что-то делали с историей вашей базы? Правили базу данных? Проблемы с индексами сообщений, судя по истории, начались 13.07.2022.
Вчера на ночь удалил из базы файл history.db

Вы не можете так вольготно обращаться с базами данных сервера, они логически взаимосвязаны. Иначе неизбежно будут проблемы.

На данный момент могу вам предложить услугу ручного ремонта вашей истории, надо разбираться и заниматься переиндексацией сообщений в базах сервера. Это стоит $50 в час.

Либо восстанавливайте базы из автоматического бекапа, но тогда потеряете часть сообщений за этот период.
Аватара пользователя
mupkos
Альтернативный сервер - это просто второй сервер развернул и базу в него скопировал. Да, проблемы начались 13.07. Я загружал бэкапы и двухнедельной давности, и там тоже при просмотре в админке протоколов по конференции неразбериха. Базу, конечно никто не правил. Т.е. получается, что проблема с индексами давно началась, но никак себя не проявляла.
Аватара пользователя
Алексей Пикуров
Я загружал бэкапы и двухнедельной давности

Перешлите мне её, я сравню с первым вариантом.
Аватара пользователя
mupkos
Выслал ссылки письмом.
Аватара пользователя
mupkos
А еще такой вопрос: если в клиенте зайти в историю сообщений и там удалить одно из них - это вообще можно делать или не стоит?
Аватара пользователя
mupkos
И еще вопрос - история конференций только на сервере хранится, или и из локальной базы может подгружаться?
Аватара пользователя
Алексей Пикуров
А еще такой вопрос: если в клиенте зайти в историю сообщений и там удалить одно из них - это вообще можно делать или не стоит?

Конечно можно, это же штатный инструмент.
И еще вопрос - история конференций только на сервере хранится, или и из локальной базы может подгружаться?

На сервере и на клиентах, конечно, для кеширования. Это можно отключить на клиенте в настройках, если нужно, но это будет создавать нагрузку на сервер лишнюю.
Аватара пользователя
mupkos
Я вроде откатился на нормальный бэкап (во всяком случае в админке протоколы корректно отображаются), а в клиенте в окне конференции добавляются более поздние сообщения (очевидно из локального кэша), и если отправить новое сообщение, то оно в окне не появляется, а дублируется предыдущее, хотя в истории сообщений все отображается нормально. Это как-то можно побороть?
Аватара пользователя
Алексей Пикуров
Да, отправляйте сообщения, пока не выровняются индексы. Либо придётся удалить локальную базу данных истории клиента.
Аватара пользователя
Алексей Пикуров
Я посмотрел ваш бекап mcservdb-2022-06-24-02-00.zip, там с индексами всё ок. Нужно выяснить, что привело к такой ситуации. Что конкретно вы делали с сервером 13 числа?
Аватара пользователя
mupkos
Да ничего не делали. В принципе у нас все на виртуалках, я могу базу взять и за 12.07. Вы говорите, что в базе за 24.06 с индексами все нормально. Я откатился на эту базу, в админке попробовал просмотреть протоколы с 01.06 - и опять выдало за все года (скриншот в приложении). Значит, что-то не так?
Вложения
Screenshot_2.jpg
Screenshot_2.jpg (307.56 КБ) Просмотров: 1515
Аватара пользователя
Алексей Пикуров
Да, значит, в этой конференции тоже с индексами сообщений что-то не так. Как вы удаляли сообщения в конференциях? Откуда конкретно?
Аватара пользователя
mupkos
Обычно в конференциях удаляли в окне конференции в клиенте. В приватах удаляли через админку - просмотр протоколов.
Аватара пользователя
Алексей Пикуров
В каком конкретно приложении клиента? В win32 основном, альтернативном? Linux, macOS?
Аватара пользователя
mupkos
У нас только win32 основной клиент.
Аватара пользователя
Алексей Пикуров
Я специально только что проверил удаление сообщений в конференциях с Windows-клиента, всё ожидаемо работает правильно. Но индексы некоторых сообщений в базе у вас сломаны. Если бекап, который вы развернули, устраивает, то не трогайте и работайте на нём.
Аватара пользователя
mupkos
Вот только что развернул стабильный бэкап месячной давности. В админке все протоколы корректно отображались. В настройках убрал загрузку сообщений в приваты и конференции, чтобы не было в окнах конфликтов с локальными хэшами. В одной из конференций сделал пару сообщений, потом в админке сервера их удалил, и все - конференция сломалась. Опять в просмотре протоколов все подряд.
Аватара пользователя
Алексей Пикуров
Вы говорили ранее, что удаляли сообщения в конференциях с клиента, а не в админке. Попробую повторить.
Аватара пользователя
mupkos
А как-то можно в базе оставить только пользователей с список конференций, а сами сообщения все удалить, чтобы индексы в порядок привести?
Аватара пользователя
Алексей Пикуров
Простите, я не понял, о чём вы спросили.
Аватара пользователя
mupkos
Я имею ввиду очистить полностью историю сообщений в конференциях и приватах, а остальное оставить.
Аватара пользователя
Алексей Пикуров
Да, в консоли сервера. Команды "remove confs" и "remove privates".
Аватара пользователя
Алексей Пикуров
Сделали некоторые исправления, возможно, это не связано с вашей проблемой, но тем не менее.
viewtopic.php?p=48164#p48164
Аватара пользователя
mupkos
Вроде исправил записи в таблице confs_idx, переиндексировал все таблицы в базе history.db, но проблема с отображением протоколов в админке осталась. Так что все-таки воспользовался командой remove confs, почистили локальные кэши на клиентах, вроде пока все нормально. В любом случае спасибо за участие. Закрываем тему.
Аватара пользователя
Алексей Пикуров
Просто переиндексация таблиц не поможет, там много синтетических индексов и связанных данных. Ок, закрываем тему.