V7 Client Issues

Started by richard21, October 21, 2026, 11:28:37 PM

Previous topic - Next topic

richard21

Hi After upgrading to V7 I get a java error Cannot start java application (Java application class not found) this is on Windows 11

Alex Kirhenshtein

Hi,

It's know issue, will be fixed in 7.0.1. Most likely tomorrow.

Check https://github.com/netxms/netxms/issues/3778

richard21

Hi Alex,

Thanks for the quick reply.

Regards
Richard

mOba

Клиент 7.0.1 виснет, в логе:

09:20:18.306 [JobWorker-1] ERROR org.netxms.nxmc.base.jobs.Job - Exception in UI job - Неверный идентификатор объекта
org.netxms.client.NXCException: Неверный идентификатор объекта
   at org.netxms.client.NXCSession.waitForRCC(NXCSession.java:2304)
   at org.netxms.client.NXCSession.waitForRCC(NXCSession.java:2269)
   at org.netxms.client.NXCSession.getDciLastValue(NXCSession.java:6616)
   at org.netxms.nxmc.modules.datacollection.widgets.TableValueViewer.readData(TableValueViewer.java:300)
   at org.netxms.nxmc.modules.datacollection.widgets.BaseTableValueViewer$2.run(BaseTableValueViewer.java:331)
   at org.netxms.nxmc.base.jobs.Job.execute(Job.java:140)
   at org.netxms.nxmc.base.jobs.JobManager.lambda$submit$1(JobManager.java:110)
   at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.base/java.lang.Thread.run(Unknown Source)
09:20:18.329 [JobWorker-1] ERROR org.netxms.nxmc.base.jobs.Job - Exception in UI job - Неверный идентификатор объекта
org.netxms.client.NXCException: Неверный идентификатор объекта
   at org.netxms.client.NXCSession.waitForRCC(NXCSession.java:2304)
   at org.netxms.client.NXCSession.waitForRCC(NXCSession.java:2269)
   at org.netxms.client.NXCSession.getDciLastValue(NXCSession.java:6616)
   at org.netxms.nxmc.modules.datacollection.widgets.TableValueViewer.readData(TableValueViewer.java:300)
   at org.netxms.nxmc.modules.datacollection.widgets.BaseTableValueViewer$2.run(BaseTableValueViewer.java:331)
   at org.netxms.nxmc.base.jobs.Job.execute(Job.java:140)
   at org.netxms.nxmc.base.jobs.JobManager.lambda$submit$1(JobManager.java:110)
   at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.base/java.lang.Thread.run(Unknown Source)
09:20:19.678 [JobWorker-1] ERROR org.netxms.nxmc.base.jobs.Job - Exception in UI job - Неверный идентификатор метрики
org.netxms.client.NXCException: Неверный идентификатор метрики
   at org.netxms.client.NXCSession.waitForRCC(NXCSession.java:2304)
   at org.netxms.client.NXCSession.waitForRCC(NXCSession.java:2269)
   at org.netxms.client.NXCSession.getDciLastValue(NXCSession.java:6616)
   at org.netxms.nxmc.modules.datacollection.widgets.TableValueViewer.readData(TableValueViewer.java:300)
   at org.netxms.nxmc.modules.datacollection.widgets.BaseTableValueViewer$2.run(BaseTableValueViewer.java:331)
   at org.netxms.nxmc.base.jobs.Job.execute(Job.java:140)
   at org.netxms.nxmc.base.jobs.JobManager.lambda$submit$1(JobManager.java:110)
   at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.base/java.lang.Thread.run(Unknown Source)
09:20:19.703 [JobWorker-1] ERROR org.netxms.nxmc.base.jobs.Job - Exception in UI job - Неверный идентификатор метрики
org.netxms.client.NXCException: Неверный идентификатор метрики
   at org.netxms.client.NXCSession.waitForRCC(NXCSession.java:2304)
   at org.netxms.client.NXCSession.waitForRCC(NXCSession.java:2269)
   at org.netxms.client.NXCSession.getDciLastValue(NXCSession.java:6616)
   at org.netxms.nxmc.modules.datacollection.widgets.TableValueViewer.readData(TableValueViewer.java:300)
   at org.netxms.nxmc.modules.datacollection.widgets.BaseTableValueViewer$2.run(BaseTableValueViewer.java:331)
   at org.netxms.nxmc.base.jobs.Job.execute(Job.java:140)
   at org.netxms.nxmc.base.jobs.JobManager.lambda$submit$1(JobManager.java:110)
   at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
   at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.base/java.lang.Thread.run(Unknown Source)

Alex Kirhenshtein

Добрый день,

Эти ошибки к зависанию отношения не имеют. Их пишет фоновое обновление элемента дашборда "Table value" или вкладки "Table Last Value", которые ссылаются на удалённую ноду ("Неверный идентификатор объекта") или удалённый DCI ("Неверный идентификатор метрики"). Ошибка только пишется в лог, UI она не блокирует. Если перенастроить или удалить такой элемент, ошибки пропадут.

Для разбора самого зависания нужно:

1) что было открыто в момент зависания (какой дашборд или view), и клиент виснет полностью или только тормозит;
2) thread dump, снятый во время зависания:
jcmd <pid> Thread.print > nxmc-threads.txt(или jstack <pid>, оба из JDK; pid клиента покажет jcmd без аргументов);
3) полный лог клиента за этот период, а не только эти строки.

richard21

Quote from: Alex Kirhenshtein on October 21, 2026, 11:52:53 PMHi,

It's know issue, will be fixed in 7.0.1. Most likely tomorrow.

Check https://github.com/netxms/netxms/issues/3778

Hi Alex,

the upgrade to 7.0.1 looks to have fixed the issue I reported we have only just upgraded so are continuing to test

Regards
Richard

mOba

Quote from: Alex Kirhenshtein on October 26, 2026, 10:13:33 PM1) что было открыто в момент зависания (какой дашборд или view), и клиент виснет полностью или только тормозит;
2) thread dump, снятый во время зависания:
jcmd <pid> Thread.print > nxmc-threads.txt(или jstack <pid>, оба из JDK; pid клиента покажет jcmd без аргументов);
3) полный лог клиента за этот период, а не только эти строки.

1) Клиент не отвечает как и на самих DCI может , так и при открывании определенных Информационных панелей.
2-3) в клиенте нет встроенного jcmd , поэтому посмотреть PID процесса на Windows не получается

Alex Kirhenshtein

JVM клиента на Windows работает внутри процесса nxmc.exe, отдельного java.exe нет, поэтому PID нужен от nxmc.exe: Task Manager → Details, колонка PID, или

tasklist /fi "imagename eq nxmc.exe"
С клиентом поставляется JRE, а не JDK, поэтому jcmd в комплекте нет. Достаточно скачать zip-архив JDK той же major-версии (Temurin или Zulu, установка не нужна; версия встроенного JRE указана в файле jre\release в каталоге клиента) и во время зависания запустить его от того же пользователя Windows, под которым работает клиент:

<путь к JDK>\bin\jcmd.exe <pid> Thread.print > nxmc-threads-1.txt
Лучше снять 2-3 дампа с интервалом в несколько секунд.

Лог клиента лежит в %USERPROFILE%\.nxmc4\nxmc.log - нужен целиком, за период с зависанием.

ilyamart38

Аналогичная проблема. Клиент 7.0.1 виснет, обычно в инфраструктуре во время клика на ноде или контейнере.
По совету ИИ собрал дамп во время зависания приложения
"C:\Tools\jdk-25\bin\jcmd.exe" 25328 Thread.print > "%USERPROFILE%\Desktop\nxmc-threads-1.txt"
После анализа дампа ИИ выдает такой вывод:

QuoteЧто именно зависло
Главный поток main, который обрабатывает события пользовательского интерфейса, находится в состоянии:
java.lang.Thread.State: BLOCKED (on object monitor)
    at org.netxms.nxmc.modules.alarms.widgets.AlarmList$4.run(AlarmList.java:353)
    - waiting to lock <0x000000070f800000> (a java.util.HashMap)
    at org.eclipse.swt.widgets.Display.runTimer(Display.java:4260)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3748)


Одновременно фоновый поток JobWorker-2 выполняет обработку списка аварий:
at org.netxms.nxmc.modules.alarms.widgets.AlarmList.filterAndLimit(AlarmList.java:1078)
    at org.netxms.nxmc.modules.alarms.widgets.AlarmList$31.run(AlarmList.java:1112)
    - locked <0x000000070f800000> (a java.util.HashMap)


Обрати внимание: это один и тот же объект HashMap. Фоновый поток JobWorker-2 удерживает его, а главный поток ждёт освобождения. При этом фоновый поток сам ожидает выполнения операции в UI-потоке через Display.syncExec().

Получается взаимная блокировка:
1. UI-поток ждёт монитор HashMap, удерживаемый JobWorker-2.
2. JobWorker-2 ждёт, пока UI-поток выполнит синхронную операцию syncExec().
3. UI-поток не может обработать эту операцию, потому что заблокирован на первом шаге.
Это объясняет, почему окно перестаёт реагировать на клики и почему дампы, снятые с интервалом, практически идентичны. Проблема находится в клиентской обработке списка аварий (AlarmList), а не в создании сетевых объектов на сервере.
Надеюсь это хоть как-то поможет в решении проблемы.

mOba

Quote from: Alex Kirhenshtein on October 27, 2026, 05:18:34 PMЛучше снять 2-3 дампа с интервалом в несколько секунд.

Лог клиента лежит в %USERPROFILE%\.nxmc4\nxmc.log - нужен целиком, за период с зависанием.

Получилось по данной инструкции. 1- поток - работает ок в панели. в которой нет уведомлений, 2 и 3 потоки - завис клиент