Баги 1.2.3

Started by SKYnv, September 11, 2012, 07:27:18 PM

Previous topic - Next topic

SKYnv

1)
legacy console
predefined graphs Не открываются, вернее показывают пустое окно

Victor Kirhenshtein

Да, это может быть если созданы графики в новой консоли. Здесь совместимость только в одну сторону. Legacy консоли давно пора на свалку истории...

SKYnv

#2
Quote from: Victor Kirhenshtein on September 11, 2012, 07:57:08 PM
Да, это может быть если созданы графики в новой консоли. Здесь совместимость только в одну сторону. Legacy консоли давно пора на свалку истории...
ну свалка не свалка, а работает она порой гораздо стабильнее и быстрее ява )

после более плотных экспериментов посмотрю насчет багов. Так вроде все зацепилось нормально. Сейчас вот с Hook::ConfigurationPoll поэкспериментирую и спать, или на ночь оставлю.
пока вот такой набросал для теста

//rename node after configuration poll to snmp sysLocation
//if sysLocation is null then rename to node ip addres
//also 2 custom attrubuts will be setted
// you can use this attributs in events with %{attribute_name} macros

sub main()
{
trace(0,"hook executed");
trace(1,"hook executed");
  if $node->isSNMP
  {
   transport = CreateSNMPTransport($node);
    if (transport == null)
    return -1;

    oid_loc = ".1.3.6.1.2.1.1.6.0";  // sysLocation
    oid_uptime = ".1.3.6.1.2.1.1.3.0";  // uptime
    oid_name = ".1.3.6.1.2.1.1.5.0";  // sysname
   
   
    location = SNMPGetValue(transport, oid_loc);
    sysname = SNMPGetValue(transport, oid_name);
    uptime = SNMPGetValue(transport, oid_uptime);

    if (location != null && location !="" && location!=" ")
         RenameObject($node, location);
    else RenameObject($node, $node->ipAddr); //change name to node ip address
       
      if (sysname != null && sysname !="" && sysname !=" ")
          SetCustomAttribute($node, "sysname", sysname); //set custom attribute for node snmp sysName

      if (uptime != null)
          SetCustomAttribute($node, "uptime", SecondsToUptime(uptime/100)); //set custom attribute uptime for node
  }
}


2) Да кстати шрифт в WebUI в любом поле редактирования скриптов просто садистски маленький ))

SKYnv

странно, но использование в скриптах
transport = CreateSNMPTransport(node_object)


QuoteERROR: Script finished with error: Error 1 in "line line_number": Data stack underflow

Посмотрю еще утром на свежую голову.

sabonez

Доброго времени суток!

Дополню список багов новой версии :(

Debian Squeeze, netxmsd падает при загрузке карт:

[12-Sep-2012 10:32:30] Loading templates...
[12-Sep-2012 10:32:30] Loading agent policies...
[12-Sep-2012 10:32:30] Loading network maps...

Program received signal SIGSEGV, Segmentation fault.
0xb7a14ee0 in rawmemchr () from /lib/i686/cmov/libc.so.6
(gdb) backtrace
#0  0xb7a14ee0 in rawmemchr () from /lib/i686/cmov/libc.so.6
#1  0xb7a099f7 in ?? () from /lib/i686/cmov/libc.so.6
#2  0xb79fd533 in vsscanf () from /lib/i686/cmov/libc.so.6
#3  0xb79ec80b in sscanf () from /lib/i686/cmov/libc.so.6
#4  0xb7f5ff16 in NetworkMapLink::parseBendPoints (this=0xb6db5f48, data=0x0) at link.cpp:156
#5  0xb7eb8164 in NetworkMap::CreateFromDB (this=0xb6db5cf8, dwId=23122) at netmap.cpp:333
#6  0xb7ed7f9b in LoadObjects () at objects.cpp:1208
#7  0xb7eb58ea in Initialize () at main.cpp:728
#8  0x08048e4c in main (argc=4, argv=0xbffffdd4) at netxmsd.cpp:459

Карт сети нарисовал уже много, потому терять будет жалко.  :D

Victor Kirhenshtein

Ага, поправлю сейчас. Как workaround, попробуйте в базе сделать такой запрос:

UPDATE network_map_links SET bend_points='' WHERE bend_points is NULL;

После этого сервер падать не должен.

А что за база кстати?

sabonez

#6
База Mysql, таблицы myisam, charset=cp1251. Объем 2 Гига примерно.

WA сейчас пробую, по результатам отпишусь.

PS. Все ОК, сервер завелся. Спасибо!

SKYnv

Quote from: SKYnv on September 11, 2012, 08:39:01 PM
странно, но использование в скриптах
transport = CreateSNMPTransport(node_object)


QuoteERROR: Script finished with error: Error 1 in "line line_number": Data stack underflow

Посмотрю еще утром на свежую голову.

В общем да, все скрипты с Snmp  Что работали в прошлой версии, теперь не хотя.
ошибка таже

а например такой скрипт

EnumerateNodes(FindObject(1));

sub EnumerateNodes(rootObject)
{
    foreach(node : GetObjectChildren(rootObject))
    {
        if (classof(node) == "Node")
        {
               
             transport = CreateSNMPTransport(node);
               if (transport == null)
               return -1;

               oid_loc = ".1.3.6.1.2.1.1.6.0";  // location
               location = SNMPGetValue(transport, oid_loc);

               if (location != null && location !="" && location!=" ")
            {
               RenameObject(node, location);
               println("Object ".node->ipAddr." renamed to ".location);
            }
            else
             {
               RenameObject(node, node->ipAddr);
               println("Object ".node->ipAddr." renamed to ".node->ipAddr);
             }


        }
        else if (classof(node) == "NetObj")
        {
            EnumerateNodes(node);
        }
    }
}

падает на строке
Quoteelse if (classof(node) == "NetObj")
в предыдущей версии работал на ура.

в чем может быть причина?

Victor Kirhenshtein

Разобрался - это я неудачно исправил ошибку с n=n-1. Сейчас поправлю и сделаю новый билд.

SKYnv

Quote from: Victor Kirhenshtein on September 12, 2012, 11:31:03 AM
Разобрался - это я неудачно исправил ошибку с n=n-1. Сейчас поправлю и сделаю новый билд.

ну вот )) спасибо ждёмс ))

Victor Kirhenshtein

Выложил обновленные исходники:  https://www.netxms.org/download/archive/netxms-1.2.3.1.tar.gz. Попробуйте.

SKYnv

Quote from: Victor Kirhenshtein on September 12, 2012, 12:07:16 PM
Выложил обновленные исходники:  https://www.netxms.org/download/archive/netxms-1.2.3.1.tar.gz. Попробуйте.
и еще, это у меня комп глючит или в трее nxmc иконка от legacy console?

Victor Kirhenshtein

Иконка там неправильная, но и не от старой консоли тоже. Поправлю.

SKYnv

#13
Quote from: Victor Kirhenshtein on September 12, 2012, 01:40:40 PM
Иконка там неправильная, но и не от старой консоли тоже. Поправлю.

и так по невнимательности в configuration hook
написал
Quoteif (node->isSNMP)
заместо
Quoteif ($node->isSNMP)
понятное дело что ничего не работало, но скрипт выполнялся, просто данный цикл игнорировался и ошибок нигде не писалось. Тяжело для отладки.

Ну и дальше
transport = CreateSNMPTransport(node);
    if (transport == null)
    return -1;
   

не возвращало ошибку, хотя переменная Node не инициализированна и возвращается null

Давненько кстати у меня вкладка ports пустая (белый лист), думал баги, на 1.2.3.1 тоже девственно чиста.

уф, hook прекрасно отрабатывает.
Теперь начну экспериментировать с вызовом евентов из скрипта.

Есть кстати вопрос-предложение. Написать скрипт для поиска регрессов в парсере скриптов? Могу заняться в принципе на выходных, опыта правда в данной области не было, но принцип то один у всех )

Victor Kirhenshtein

Quote from: SKYnv on September 12, 2012, 04:47:46 PM
Есть кстати вопрос-предложение. Написать скрипт для поиска регрессов в парсере скриптов? Могу заняться в принципе на выходных, опыта правда в данной области не было, но принцип то один у всех )

Да, это было бы хорошо. Скрипты используются все активней и активней, и баги вылезают очень занятные.