Непонятные ошибки Первасива

Обсуждение технических вопросов по продуктам Novell

Непонятные ошибки Первасива

Сообщение Andrew Tarasov » 11 мар 2004, 15:16

Есть сервер NW4.11sp9. После перехода с Btrieve 6.15 на Pervasive 2000i sp4 на консоль сервера стали периодически вываливаться сообщения:
NWMKDE-103: System Error: 115.23.0 File: Vol:Dir/NameFile.dat,
где NameFile.dat один из активно используемых в данный момент базных файлов. При этом софт на рабочих станциях ни о каких ошибках в своей работе с этими файлами не сообщает. На сайтах Novell и Pervasive я не нашел разъяснений по этой ошибке. Пересоздание и лечение упоминаемых на консоле файлов не устраняют появления этих сообщений.
Кто знает расшифровки кодов ошибок?
Где копать: конфликты серверного софта, ошибки железа или как пишут в некоторых tid-ах по родственным ошибкам - проблемы turbo FAT?
Аватара пользователя
Andrew Tarasov
 
Сообщения: 18
Зарегистрирован: 28 июн 2002, 12:13
Откуда: Ижевск

Обычно при установке клиентов ставится документация.

Сообщение Boris Morozov » 12 мар 2004, 01:03

Конкретно вашей ошибки я там не нашел, но очень похоже на проблемы с Turbo FAT. Ключевое слово turbodis.nlm
Boris Morozov
 
Сообщения: 1333
Зарегистрирован: 05 июн 2002, 22:24
Откуда: Минск

Re: Непонятные ошибки Первасива

Сообщение Лебедев Виктор » 15 мар 2004, 11:58

Andrew Tarasov писал(а): На сайтах Novell и Pervasive я не нашел разъяснений по этой ошибке. Пересоздание и лечение упоминаемых на консоле файлов не устраняют появления этих сообщений.
Кто знает расшифровки кодов ошибок?


Это стоит поискать в программерском help-е, который "первасивы" отдельно выкладывают для скачивания. Ссылку сейчас не дам - не помню! Скачивал в 2001 году, как раз по такому поводу - по 115 ошибке (все сохранилось, размер файла 3,7Мб). Могу скинуть, если он не обнаружится у "первасивов".

Из "Code_msg.hlp" (входил в состав архива allhlps.zip). Похоже на правду)?
"103: The chunk offset is too big

The MicroKernel returns this status code in one of the following situations:

• A Get Direct/Chunk operation specified an offset beyond the end of the record, either explicitly or using the next-in-record bias to the subfunction value. Unless the MicroKernel returns this status code while processing the first chunk, the operation was partially successful. Check the data buffer length parameter immediately after the call to see how much data was retrieved (and therefore how many chunks).

• An Update Chunk operation specified an offset that is more than one byte beyond the end of the record. This status code indicates that the MicroKernel has made no changes to the record.

• An Update Chunk operation with an Append subfunction causes a record length to exceed its operating system file size limit. The MicroKernel has made no changes to the record.
"

Но! В "разруливании" проблемы участие принимал наш программист, а не я (как админ в данной ситуации). После того как программист ознакомился с "хелпом", он сказал что беда эта его. Сервер я не насиловал. Пинать программиста сейчас бесполезно - не помнит. С его слов он менял локацию по таблице. Ошибка возникала при обработке первой или последней записи в таблице. Вроде слова его с хелпом совпадают.
Лебедев Виктор
 
Сообщения: 133
Зарегистрирован: 05 июн 2002, 09:03
Откуда: Пермь

Это не 115 ошибка. Это внутренний код - который

Сообщение Boris Morozov » 17 мар 2004, 02:08

относится к системе ввода-вывода. Он расписан в описании сообщения nwmkde-103.
Все эти сообщения есть в документации, которая ставится при установке клиента Pervasive.
Нужно знать, какой код ошибки получает прикладная программа - оттуда надо начинать искать. Но если дело доходит до сообщения на консоли, то по мнению первазива явно что-то происходит с физической целостностью файла. Что происходит, если вы отключите turbo fat - ошибка остается или нет?
И добейтесь от прикладных программистов, чтобы они все-таки обрабатывали коды ошибок, они могут на них просто забить. В этом случае вы будете получать неверные результаты. Допустимых кодов совсем мало - но они есть (например 09 - конец файла, вполне штатная ситуация) . Все остальные ненормальные коды надо как-то фиксировать.
Boris Morozov
 
Сообщения: 1333
Зарегистрирован: 05 июн 2002, 22:24
Откуда: Минск

Re: Это не 115 ошибка. Это внутренний код - который

Сообщение Andrew Tarasov » 17 мар 2004, 14:42

Boris Morozov писал(а):относится к системе ввода-вывода. Он расписан в описании сообщения nwmkde-103. Все эти сообщения есть в документации, которая ставится при установке клиента Pervasive.
Я извиняюсь, но перерыв все идущие с первасивом хелпы нашел только для MicroKernel Database Engine Status Codes - 103: The chunk offset is too big, а расшифровки внутренних кодов нет. Может не там ищу? Подскажите, пожалуйста. Иначе не ясно, что же предпринять.
Boris Morozov писал(а):Нужно знать, какой код ошибки получает прикладная программа - оттуда надо начинать искать. Но если дело доходит до сообщения на консоли, то по мнению первазива явно что-то происходит с физической целостностью файла.
Сообщений об ошибках от клиентской программы не поступают. Сам файл скорее жив, чем мертв, т.к. его несколько раз средствами первасива лечили. Кроме того каждый день создается новый файл с которым в основном и выполняется текущая работа.
Boris Morozov писал(а):Что происходит, если вы отключите turbo fat - ошибка остается или нет?
turbo fat отключен - ошибка осталась
Boris Morozov писал(а):И добейтесь от прикладных программистов, чтобы они все-таки обрабатывали коды ошибок, они могут на них просто забить. В этом случае вы будете получать неверные результаты. Допустимых кодов совсем мало - но они есть (например 09 - конец файла, вполне штатная ситуация) . Все остальные ненормальные коды надо как-то фиксировать.
А вот здесь есть интересный момент. В PVSW.LOG тип сообщения отмечен как I, что согласно документации - Information. Может поэтому и молчит клиентская программа, раз данное событие совсем и не ошибка!.
03-17-2004 10:25:06 NWMKDE 275942B0 NWMKDE.NLM SERV_NW I System Error: 115.23.0 File: VOL:DIR/FILENAME.DAT
Однако невозможно спокойно созерцать такие информационные сообщения, в который есть слова System Error. Имею большое желание сделать downgrade с 2000i на 2000sp2a. Поможет ли?
Аватара пользователя
Andrew Tarasov
 
Сообщения: 18
Зарегистрирован: 28 июн 2002, 12:13
Откуда: Ижевск

Документация ставиться штатно с виндовым клиентом

Сообщение Boris Morozov » 18 мар 2004, 00:08

Start Menu -> Pervasive SQL.... -> Documentation - > Pervasive SQL....
Открываем раздел Status Codes and Messages -> Messages -> MKDE
и на MKDE-103 видим

MKDE-103: System Error
The MicroKernel Database Engine returns this message when a system error occurs. See MKDE–2039: System Error: nn.nn.nn for more information.

MKDE–2039: System Error: nn.nn.nn
The MicroKernel returns this message when a system error occurs.

The MKDE uses the System Error messages to record unexpected errors resulting from an operating system call made by the MKDE. For example, if an error is returned when the MKDE makes a file
I/O call to the operating system, that error is recorded in the PVSW.LOG as a System Error.

The format of a system error is id.op.rc where:
Table 2-3 System Error Explanation
id Unique System Error identifier
op Btrieve operation being performed at the time
rc any unexpected return code from the operating system.


The id corresponds to a section of code in the MKDE where the OS call took place. There are different id ranges depending on which MKDE is being used:
Table 2-4 System Error Code Area
100-299 Common source base
300-399 NetWare
400-499 OS/2 (no longer supported)
500-599 Windows 16-bit (Win16 engine longer supported)
600-699 Windows NT/2000
700-799 Windows 95/NT


The common code base contains all the file I/O requests, variable allocations, caching, and so on. The platform specific ranges cover other file open, close, read, and lock requests. These codes can guide us to the portion of the MKDE code that was executing when the System Error occurred. For example, ids ranging from 110 - 124 correspond to the I/O Subsystem of the MicroKernel where disk I/O calls are made, and system errors with these ids usually correspond to file corruption problems. A list of ids is not available publicly because a list without the specific MKDE and knowledge of the code would not have much value.

The second piece of the system error is the operation code. This corresponds to the Btrieve request that was being processed when the error occurred. For example, a 5 is a GetEqual operation. Refer to the Pervasive.SQL Programmer's Reference for more information about Btrieve operation codes. If the system error occurs while the MKDE is performing some task that is not specifically associated with a Btrieve operation, the op will be set to -1.

The third piece of the system error is the OS return code. The meaning of the values reported here varies depending on the OS call made and the type of failure that occurred. A return code value of 0 for different IDs is likely to have different meanings, but in each case the OS did not return an actual error code. An example of a System Error where the OS return code is zero is when the OS call returns successfully, but the data returned by the call is not what was expected. In many cases, the appearance of an occasional System Error does not indicate a problem. It is likely that the operation being performed was retried without an error and processing continued normally.

If there is a problem that would cause an interruption in normal operation, the System Error would correspond to a Pervasive status code returned to the application. For example, attempting to access a physically corrupt file will produce a system error such as 116.5.0 and the application will receive a Status Code 2.

If you experience repeated occurrences of a specific system error, along with abnormal behavior of your application, and you do not find any documentation in our knowledge base about the error, you should contact Pervasive with a description of the system error and the symptoms of failure in the application, and we will provide more details about the system error in question.

The list of Win32 error codes is available on Microsoft's website at http://msdn.microsoft.com/library/en-us ... _codes.asp.

The main list of OS error codes is contained in the Microsoft file, winerror.h.



--------------------------------------------------------------------------------
Note
One common System Error on NetWare 4.x is a known problem in NetWare's Turbo FAT feature. This problem often manifests as error "MKDE-103 System Error 116.2.0." For more information on this particular topic, please see the following Pervasive Knowledge Base article:

http://support.pervasive.com/eSupport/p ... 508b5d6b61
--------------------------------------------------------------------------------

Из этого видно, что выполняется операция 23 - Get Direct/Chunk - обычная операция, но ее вполне можно заглючить и передать неверные параметры, она довольно хитрая. А раньше вполне возможно это не контролировалось. Также возможен мусор в параметрах запроса, который раньше не влиял, а теперь влияет. Кстати в API для ДОС, которое идет с SDK есть ошибка, которая проявляется иногда только под 2000 и XP.
При каком-то содержимом области параметров для DPMI вызова, которое по документации не используется идет жуткий сбой с идиотским сообщением от винды. Предварительная чистка области памяти решила проблему. Вполне возможно, что и ваша прикладная программа передает какой-то мусор в области памяти, который раньше спокойно пережевывался 6.15.
Boris Morozov
 
Сообщения: 1333
Зарегистрирован: 05 июн 2002, 22:24
Откуда: Минск

Re: Документация ставиться штатно с виндовым клиентом

Сообщение Andrew Tarasov » 19 мар 2004, 11:37

Boris Morozov писал(а):Start Menu -> Pervasive SQL.... -> Documentation - > Pervasive SQL....
Открываем раздел Status Codes and Messages -> Messages -> MKDE
и на MKDE-103 видим
MKDE-103: System Error
The MicroKernel Database Engine returns this message when a system error occurs. See MKDE–2039: System Error: nn.nn.nn for more information..
Нет у меня этого: после MKDE-98 идет сразу MKDE-1001. :(
Boris Morozov писал(а):MKDE–2039: System Error: nn.nn.nn
The MicroKernel returns this message when a system error occurs.
А на этой фразе заканчивается у меня расшифровка MKDE–2039. И дальше идет описание следующего сообщения MKDE. Видимо у нас разные клиентские установки. :cry:
Я ставил клиента из пакета Pervasive 2000i sp3 for Netware.
Boris Morozov писал(а):An example of a System Error where the OS return code is zero is when the OS call returns successfully, but the data returned by the call is not what was expected. In many cases, the appearance of an occasional System Error does not indicate a problem. It is likely that the operation being performed was retried without an error and processing continued normally.
Видимо это моя ситуация.
Boris Morozov писал(а):One common System Error on NetWare 4.x is a known problem in NetWare's Turbo FAT feature. This problem often manifests as error "MKDE-103 System Error 116.2.0."
Я уже отключил Turbo FAT и установил параметр Use FileIO Mutex=YES.
Я не совсем одинок в своей проблеме. Вот, например аналогичная ситуация:
http://groups.google.com.ru/groups?hl=r ... 3D115.23.0
Видимо придется поактивней попинать разработчиков софта.
Аватара пользователя
Andrew Tarasov
 
Сообщения: 18
Зарегистрирован: 28 июн 2002, 12:13
Откуда: Ижевск

Это документация из Pervasive 8.5

Сообщение Boris Morozov » 20 мар 2004, 00:59

Попробуйте пропатчить сервер и клиентов послепуками к SP4 - они на сайте лежат.
А по поводу прикладного софта - естественно разные версии по разному реагируют на глюки софта. Нам тоже пришлось кое-где подчистить при переходе на 7 первазив, но это действительно было исправлением ошибок софта, просто 6 это дело иногда проглатывала. Зато теперь придраться не к чему. Устойчивость софта просто поражает, причем мы не применяем никаких транзакций, триггеров, процедур и прочих SQL штучек.
Boris Morozov
 
Сообщения: 1333
Зарегистрирован: 05 июн 2002, 22:24
Откуда: Минск


Вернуться в Novell

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 58

cron