Распространенные проблемы при обновлениях



Рекомендации по анализу проблем обновления

Ошибки обновления логируются в файлах:
    Сервер - \SetRetail10\acm\logs\crystals-trace-log.log

    Касса - \storage\crystal-conf\logs\ccm.log

Ошибки можно искать по ключевым словам: "Error", "Fail" и исходя из ошибок выявлять проблему с установкой обновления.


Сервер

Сервер не обновляется из-за ошибки обновления БД: не подключен язык plpgsql

Причины: 
В дистрибутиве одной из старых отсутствовал язык plpgsql,который требуется для обновления одного из патча
В логах серверного МУК \SetRetail10\acm\logs\crystals-trace-log.log
16.10 17:39:07 ERROR [ru.crystals.setretailx.configurator.server.updates.UpdatesManagerBean] DataBase update fail
16.10 17:40:32 WARN [ru.crystals.setretailx.configurator.server.persistence.PersistenceManagerBean] ERROR: syntax error at or near "EXTENSION"
СТРОКА 1:DROP EXTENSION plpgsql
16.10 17:40:32 WARN [ru.crystals.setretailx.configurator.server.persistence.PersistenceManagerBean] ERROR: language "plpgsql" does not exist

Как решить: 
1. Выполнить скрипт create language plpgsql; на БД set, set_operday
2. Запустить обновление заново

Не запускается служба МУК

Причины: 
При аварийном сбое компьютера или иным причинам, полностью очищается файл \SetRetail10\acm\topology.structure

Пример на ОС Windows, когда служба не запускается:


Как решить: 
1. Удалите файл topology.structure и запустите службу Менеджера Управления Конфигурацией. Файл будет создан заново.

2. Если необходимо заполнить поля с нужной версией для различных кейсов обновления, тогда в файле \SetRetail10\acm\topology.structure по образцу (красным отмечены комментарии, их вставлять не нужно).
[
  {
    "topologyAddress": "1.0.3250.0", -- топология магазина,  3250 - номер 
    "currentVersion": "10.2.8.3",    -- текущая версия
    "previousVersion": "",
    "planningVersion": "",
    "topologyPointIP": "172.16.3.250",--IP адрес сервера retail
    "type": "RETAIL", --тип магазина (Centrum или Retail)
    "updateTime": "May 27, 2015 1:33:25 PM", -- последняя дата апдейта
    "status": "IN_WORK", 
    "online": true,
    "lastActivity": 1432722805432 
  }
]

2. Сохраните файл и запустить службу

Не запускается служба сервера из-за ошибки в лог-файле "SET-OperDay.jar".component.SET/ODCloseService.START: Failed to start"

После обновления или отката служба сервера JBoss не запускается. В лог-файле отображается следующая ошибка:
25.04 07:29:34 INFO  [org.jboss.as.controller] JBAS014774: Service status report
JBAS014777:   Services which failed to start:      service jboss.deployment.subunit."Set10.ear"."SET-OperDay.jar".component.SET/ODCloseService.START: org.jboss.msc.service.StartException in service jboss.deployment.subunit."Set10.ear"."SET-OperDay.jar".component.SET/ODCloseService.START: Failed to start service
 
25.04 07:29:34 ERROR [org.jboss.as.server.deployment.scanner] {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.deployment.subunit.\"Set10.ear\".\"SET-OperDay.jar\".component.SET/ODCloseService.START" => "org.jboss.msc.service.StartException in service jboss.deployment.subunit.\"Set10.ear\".\"SET-OperDay.jar\".component.SET/ODCloseService.START: Failed to start service"}}}} 

Как решить
Данная ошибка означает, что, по каким-либо причинам в БД set таблицы od_shift, в поле shiftclose на записались даты закрытия смены по кассе до текущей даты обновления. Эти данные можно перевыгрузить с кассы или установить в ручную.

Касса

Касса не обнаружена в МУК (air-приложение)

Причины: 
1. В daemon_config.properties указан некорректный порт сервера / не указан IP-адрес сервера /номер кассы в топологии
2. Включен брандмауер Windows (или любой другой сетевой экран)
3. Заблокированы порты для МУК 

Как решить: 
0. Касса должна быть добавлена на сервере в Управление Продажами => Настройки магазина => Кассы
1. Исключить проблемы с сетевым экраном/портами (список портов Set10)
Отредактировать файл daemon_config.properties
#Sun Nov 09 14:01:18 MSK 2014
SQLExecScript=psql %s -U postgres -f %s
CCMIP=
SQLBackup=pg_dump -U postgres -i -Fc -c -f %s %s
WorkPath=/home/tc/storage/crystal-conf
MaxConnection=10
ServerPort=2005 -- порт сервера
log4j.appender.Console.layout.ConversionPattern=%d [%t] [%p,%c{1}] %m%n
CashPath=/home/tc/storage/crystal-cash
SocketStreamTimeout=30000
BroadcastPort=4444 -- порт Broadcast
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
ListenPort=4004 --порт кассы
TopologyAddress=1.0.701.16 -- указать номер магазина/кассы с учетом топологии (1.0.номер магазина.номер кассы)
SQLDropConnections=psql -U postgres -c "SELECT pg_terminate_backend(procpid)  FROM pg_stat_activity WHERE procpid <> pg_backend_pid();"
FoundServerIP=10.224.10.4 --указать IP-адрес сервера
SQLCreateDB=createdb -U postgres %s
PGPASSWORD=postgres
log4j.appender.Console.Threshold=INFO
SQLDropDB=dropdb -U postgres %s
SQLRestore=pg_restore -U postgres -i -c -d %s %s
log4j.rootCategory=INFO, Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
TopologyPrefix=1.0
BroadcastEnabled=yes
ServerIP=
3. Перезагрузить кассу cash restart

Касса при обновлении откатывается в момент апдейта скриптов БД  [версия 10.0.1.52]

Причины: 
В /storage/crystal-conf/daemon_config.properties указаны некорректный параметр пользователя от которого выполняются операции СУБД на кассе

Как решить: 
Отредактировать файл daemon_config.properties
#Sun Nov 09 14:01:18 MSK 2014
SQLExecScript=psql %s -U postgres -f %s
CCMIP=
SQLBackup=pg_dump -U postgres -i -Fc -c -f %s %s
WorkPath=/home/tc/storage/crystal-conf
MaxConnection=10
ServerPort=2005
log4j.appender.Console.layout.ConversionPattern=%d [%t] [%p,%c{1}] %m%n
CashPath=/home/tc/storage/crystal-cash
SocketStreamTimeout=30000
BroadcastPort=4444 
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
ListenPort=4004 --порт кассы
TopologyAddress=1.0.701.16
SQLDropConnections=psql -U postgres -c "SELECT pg_terminate_backend(procpid)  FROM pg_stat_activity WHERE procpid <> pg_backend_pid();"
FoundServerIP=10.224.10.4
SQLCreateDB=createdb -U postgres %s
PGPASSWORD=postgres
log4j.appender.Console.Threshold=INFO
SQLDropDB=dropdb -U postgres %s
SQLRestore=pg_restore -U postgres -i -c -d %s %s
log4j.rootCategory=INFO, Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
TopologyPrefix=1.0
BroadcastEnabled=yes
ServerIP=
2. Удаляем файл /storage/crystal-conf/daemon-state.xml
3. Перезагрузить кассу cash restart
4. Пробуем обновить кассу заново


Касса применила обновление, но при загрузке пишет предыдущую версию(до обновления) [версия 10.0.1.52]

Причины:
В /storage/crystal-conf/daemon_config.properties указаны некорректный путь до рабочей версии кассы crystal-cash

Как решить: 
Отредактировать файл daemon_config.properties
#Sun Nov 09 14:01:18 MSK 2014
SQLExecScript=psql %s -U postgres -f %s
CCMIP=
SQLBackup=pg_dump -U postgres -i -Fc -c -f %s %s
WorkPath=/home/tc/storage/crystal-conf
MaxConnection=10
ServerPort=2005
log4j.appender.Console.layout.ConversionPattern=%d [%t] [%p,%c{1}] %m%n
CashPath=/home/tc/storage/crystal-cash
SocketStreamTimeout=30000
BroadcastPort=4444 
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
ListenPort=4004 --порт кассы
TopologyAddress=1.0.701.16
SQLDropConnections=psql -U postgres -c "SELECT pg_terminate_backend(procpid)  FROM pg_stat_activity WHERE procpid <> pg_backend_pid();"
FoundServerIP=10.224.10.4
SQLCreateDB=createdb -U postgres %s
PGPASSWORD=postgres
log4j.appender.Console.Threshold=INFO
SQLDropDB=dropdb -U postgres %s
SQLRestore=pg_restore -U postgres -i -c -d %s %s
log4j.rootCategory=INFO, Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
TopologyPrefix=1.0
BroadcastEnabled=yes
ServerIP=
2. Удаляем файл /storage/crystal-conf/daemon-state.xml
3. Перезагрузить кассу cash restart
4. Пробуем обновить кассу заново

В МУК (air-приложение) статус кассы указан "Обновление запланировано" [версия 10.0.1.52]

Причины:
1. Если версия 10.0.1.52 из дистрибутива - то отсутствие папки /storage/crystal-conf/logs
2. Нет доступа до кассы 
2.1 Включен брандмауер Windows (или любой другой сетевой экран)
2.2.Заблокированы порты для МУК 
2.3. Нет доступа физически

Как решить: 
0. Касса должна быть в сети физически
1. Исключить проблемы с сетевым экраном/портами (список портов Set10)
2. Создать папку /storage/crystal-conf/logs
3. Перезагрузить кассу cash restart
4. Пробуем обновить кассу заново

Касса не может выполнить бэкап БД в момент обновления  [версия 10.2.X.X]

Причины:
Возникает, если в предыдущий раз был выполнен некорректный откат


Как решить: 
0. При нажатии на статус обновления кассы ознакомиться какую именно БД невозможно забэкапировать
UPDATE FAILED
11:17:06 15-05-2015Current status is BACKUP
Current pathes list is [pos-lenta_10.2.0.17_10.2.0.18, pos-lenta_10.2.0.18_10.2.0.20, pos-lenta_10.2.0.20_10.2.0.21, pos-lenta_10.2.0.21_10.2.0.23]
ERROR MESSAGE:
ru.crystals.cm.UpdateException: Error make backup
at ru.crystals.cm.AbstractConfigurationUpdater.doUpdate(AbstractConfigurationUpdater.java:226)
at ru.crystals.cm.AbstractConfigurationUpdater.start(AbstractConfigurationUpdater.java:92)
at ru.crystals.cm.cash.CashConfigurationManager.start(CashConfigurationManager.java:75)
at ru.crystals.cm.cash.CashConfigurationManager.main(CashConfigurationManager.java:48)
Caused by: ru.crystals.cm.UpdateException: Error process Linux command ([pg_dump, -h, localhost, -p, 5432, -U, postgres, -n, public, -Fc, -f, /home/tc/storage/crystal-conf/backups/backup_10.2.0.17_20150515_111706/catalog.dump, catalog]): pg_dump: schema with OID 72292 does not exist

1. Скопировать команду бэкапа из предыдущего сообщения и попытаться выполнить ее в командной строке
pg_dump, -h, localhost, -p, 5432, -U, postgres, -n, public, -Fc, -f, /home/tc/storage/crystal-conf/backups/backup_10.2.0.17_20150515_111706/catalog.dump, catalog
2. Команда вернет сообщение pg_dump: schema with OID 72292 does not exist

3. Скопировать цифровое значение OID (в нашем примере 72292)
4. Подключиться к БД catalog и выполнить скрипты:
delete from pg_type where typnamespace =72292;
delete from pg_class where relnamespace =72292;

Повторить шаги 1-4 ,т.к. OID значений может быть несколько
5. Как только, бэкапы всех БД (catalog, cash, user, discount, cards) успешно выполнятся в командной строке, можно приступать к обновлению через МУК

ċ
daemon_config.properties
(1k)
Тырнов Андрей,
23 дек. 2014 г., 7:04
Comments