FAQ / Troubleshooting
Ошибка "CreateUser: User limit by license"
Ответ
Полный текст ошибки:
failed to execute cancelable worker.
See logs for more details — CreateUser: User limit by license.
Please contact your System Administrator.
В процессе импорта в Time добавляются в т.ч. пользователи, это может привести к исчерпанию лимита лицензии. Стоит отметить, что импортируются и учитываются все пользователи: users, deactivated users, bots.
Решение: обратитесь к вендору и запросите расширение лицензии.
Ошибка "Post.IsValid: Invalid message"
Ответ
Полный текст ошибки:
failed to execute cancelable worker. See logs for more details — Post.IsValid: Invalid message., id=6erfnwrhyiyfbptozr7px5ji7e
Скорее всего ошибка возникает из-за того, что длина сообщения превышает допустимое значение.
Решение: увеличьте параметр (ENV-переменная для time-server) TIME_SERVICESETTINGS_MAXPOSTSIZE
(укажите необходимое количество символов).
При выполнении импорта в Time как-то можно контролировать в консоли выполнения скрипта?
Ответ
Нет, такая возможность отсутствует.
На данный момент проверять состояние можно только периодическим просмотром выполнения джобы командой (см. Импорт данных в Time) или проверять наполнение базы данных sql-запросом.
Как остановить процесс импорта?
Ответ
Решение: сделать вызов Time API:
POST /api/v4/jobs/{job_id}/cancel
где:
job_id
— идентификатор джобы импорта (идентификатор пишется в лог при вызове командыtimectl import process
).
Как возобновить процесс импорта в случае ошибки?
Ответ
Решение: сделать вызов Time API:
POST /api/v4/jobs/{job_id}/rerun
где:
job_id
— идентификатор джобы импорта (идентификатор пишется в лог при вызове командыtimectl import process
).
Как пропустить все ошибки?
Ответ
Есть возможность пропустить все возникающие при импорте ошибки и не останавливать из-за них процесс импорта. Для этого активируйте параметр: TIME_IMPORTSETTINGS_ENFORCESKIPERROR: true
.
Для изменения параметра в SaaS инсталляции Time обратитесь в техническую поддержку.
Включайте этот параметр с осторожностью, потому что в случае возникновения проблем (БД, сеть и другие сервисы) может не импортироваться много данных, при этом джоба будет в статусе успешного завершения. Все ошибки вы сможете увидеть в логах по ключевой фразе import error
.
Как происходит маппинг пользователей, каналов и сообщений при импорте?
Ответ
- Пользователи — сопоставляются по username. Если пользователь с таким username существует, то при импорте обновятся данными из Slack.
- Каналы — сопоставляются по названию канала и команде, которая была указана при запуске трансформации. Если название канала на кириллице, то в качестве мечта берется идентификатор канала в Slack.
- Сообщения — сопоставляются по каналу и времени создания сообщения. Если канал с таким названием существует в Time, то сообщения будут попадать в него.
Можно ли импортировать отдельные каналы?
Ответ
Да, для этого нужно сформировать отдельный jsonl-файл (например, new_data.jsonl
):
- Создать новый jsonl-файл импорта.
- Добавить в новый файл строку
echo {"type":"version","version":1} >> new_data.jsonl
. - Переместить все строки с каналом из старого файла импорта в новый:
grep '"type":"channel"' data.jsonl | grep '"name":"{channel_name}"' >> new_data.jsonl
. - Переместить все сообщения из старого файла в новый:
grep '"type":"post"' data.jsonl | grep '"channel":"{channel_name}"' >> new_data.jsonl
.
Пользователи импортировались со способом авторизации через email, но в Slack они авторизовались через SSO
Ответ
Для массовой смены способа авторизации с email на ldap, saml или openid нужно вызвать timectl и следовать инструкциям в консоли:
timectl user migrate-auth -h
Ошибка "Unable to upload file. File is too large"
Ответ
Решение: необходимо увеличить в time-server лимит на размер загружаемого файла, это можно сделать с помощью параметра TIME_FILESETTINGS_MAXFILESIZE
(ENV-переменная для time-server).
Также, в случае если запросы на добавление файла идут через nginx, то нужно увеличить лимит и там: параметр client_max_body_size
.
Ошибка "importUser: An account with that email already exists"
Ответ
Полный текст ошибки:
importUser: An account with that email already exists.,
invalid input: entity: User field: email value: {email}
Решение:
-
Найти пользователя по email в БД Time
-
Найти пользователя по email в файле
data.jsonl
:grep {email} data.jsonl
-
Изменить username пользователя в Time из того, что нашли в п.2:
UPDATE users SET username = '{new_username}' WHERE email = '{email}'