On-line: гостей 4. Всего: 4 [подробнее..]
АвторСообщение
Dima
администратор




Пост N: 2728
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.03.13 11:27. Заголовок: Leto DB Server (продолжение 9)


Продолжаем тут

Спасибо: 0 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]


sashaBG
постоянный участник




Пост N: 121
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 26.03.13 11:27. Заголовок: И все таки иногда падает LetoDB у меня !


Pasha
вот лог:

User: 192.168.120.18 PLASMENT3 ccw.Exe
Command: close
Unrecoverable error 6005: Exception error: %s

Exception Code:C0000005
Exception Address:0040CE5D
EAX:202E7665 EBX:0000000A ECX:010B523C EDX:0000000A
ESI:00E0AEC8 EDI:010B523C EBP:010AFD8C
CS:EIP:001B:0040CE5D SS:ESP:0023:010AFD8C
DS:0023 ES:0023 FS:003B GS:0000
Flags:00010206
CS:EIP: 3B 50 04 73 E9 33 C0 5D C3 55 8B EC 51 53 56 57
SS:ESP: 010AFDA8 00405C17 00E0AEC8 0000000A 010B523C 01161170 009D33D8 010AFDF8 004036D7 01161170 0000000A 010AFE6C 010B523C 009D33D0 010D3D44 010AFDD4

C stack:
EIP: EBP: Frame: OldEBP, RetAddr, Params...
0040CE5D 010AFD8C 010AFDA8 00405C17 00E0AEC8 0000000A 010B523C 01161170 009D33D8
00405C17 010AFDA8 010AFDF8 004036D7 01161170 0000000A 010AFE6C 010B523C 009D33D0 010D3D44 010AFDD4 00430FC0
004036D7 010AFDF8 010AFE24 0040732A 00DFA58C 01161170 010B523C 009D33D5 00000040 010D3D44 010B523C 00DFA58C
0040732A 010AFE24 010AFE7C 00407605 010B523C 00DFA58C 01161170 010AFE6C 01375B96 00DFA58C 01375B9D 6C656B69
00407605 010AFE7C 010AFEA8 0040C8D1 00DFA58C 01375B9D 01375B96 00000015 00DFA58C 00000001 00000001 0000000C
0040C8D1 010AFEA8 010AFED4 0040D650 00DFA58C 004B4BFC 00FB0000 009D2C34 00012C94 00000138 83126E98 40DD3958
0040D650 010AFED4 010AFFA4 004B49F8 00000001 00000000 00000000 009D2C34 00000094 00000005 00000001 00000A28
004B49F8 010AFFA4 010AFFB4 004B4A2B 009D2C34 004B4BFC
004B4A2B 010AFFB4 010AFFEC 7C80B713 009D2C34 00000000 00000000 009D2C34 7FFDC000 8A62C600 010AFFC0 898616B8


Modules:
0x00400000 0x000DE000 d:\letodb\letodb.exe
0x7C900000 0x000AF000 C:\WINDOWS\system32\ntdll.dll
0x64D00000 0x0003F000 C:\Program Files\AVAST Software\Avast\snxhk.dll
0x7C800000 0x000F6000 C:\WINDOWS\system32\KERNEL32.dll
0x71AD0000 0x00009000 C:\WINDOWS\system32\WSOCK32.DLL
0x71AB0000 0x00017000 C:\WINDOWS\system32\WS2_32.dll
0x77DD0000 0x0009B000 C:\WINDOWS\system32\ADVAPI32.dll
0x77E70000 0x00092000 C:\WINDOWS\system32\RPCRT4.dll
0x77FE0000 0x00011000 C:\WINDOWS\system32\Secur32.dll
0x77C10000 0x00058000 C:\WINDOWS\system32\msvcrt.dll
0x71AA0000 0x00008000 C:\WINDOWS\system32\WS2HELP.dll
0x7E410000 0x00091000 C:\WINDOWS\system32\USER32.DLL
0x77F10000 0x00049000 C:\WINDOWS\system32\GDI32.dll
0x71A50000 0x0003F000 C:\WINDOWS\system32\mswsock.dll
0x662B0000 0x00058000 C:\WINDOWS\system32\hnetcfg.dll
0x71A90000 0x00008000 C:\WINDOWS\System32\wshtcpip.dll
0x69450000 0x00016000 C:\WINDOWS\system32\faultrep.dll
0x77C00000 0x00008000 C:\WINDOWS\system32\VERSION.dll
0x769C0000 0x000B4000 C:\WINDOWS\system32\USERENV.dll
0x76360000 0x00010000 C:\WINDOWS\system32\WINSTA.dll
0x5B860000 0x00055000 C:\WINDOWS\system32\NETAPI32.dll
0x76F50000 0x00008000 C:\WINDOWS\system32\WTSAPI32.dll
0x77920000 0x000F3000 C:\WINDOWS\system32\SETUPAPI.dll
0x77F60000 0x00076000 C:\WINDOWS\system32\SHLWAPI.dll
0x773D0000 0x00103000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll
0x5D090000 0x0009A000 C:\WINDOWS\system32\comctl32.dll
0x77B40000 0x00022000 C:\WINDOWS\system32\Apphelp.dll

LetoDB у меня работает как демон а не как сервиз не знаю может в етом проблема

сначала я кинулся убирать AVAST но не в нем проблема , несмотря что он враждебно относится к LetoDB .

иногда падает при закрытии одной обласи или всех рабочих облостей со стороны клиента . Лечится ето через Leto_Commit() перед закрытием
на локаьном соединении ето нельзя воспроизвести только через сеть. Ошибка получается не кажды раз .

В етих модулях которые вызвали падение я не использую транзакции.



Спасибо: 0 
Профиль
AlexMyr



Пост N: 793
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 26.03.13 11:41. Заголовок: При сборке manage.pr..


При сборке manage.prg с помощью manage.hbp получаю

 цитата:

hbmk2: Warning: Non-portable parameter:
'{mingw|mingw64}-l../../lib/${hb_plat}/${hb_comp}/librddleto.a' in
manage.hbp:18. Use '-L..\..\lib\win\mingw -lrddleto' option(s) instead.
hbmk2: Warning: Non-portable parameter:
'{mingw|mingw64}-l${hwgui_dir}lib/${hb_plat}/${hb_comp}/libhwgui.a' in
manage.hbp:19. Use '-Llib\win\mingw -lhwgui' option(s) instead.
hbmk2: Warning: Non-portable parameter:
'{mingw|mingw64}-l${hwgui_dir}lib/${hb_plat}/${hb_comp}/libprocmisc.a'
in manage.hbp:20. Use '-Llib\win\mingw -lprocmisc' option(s) instead.
hbmk2: Warning: Non-portable parameter:
'{mingw|mingw64}-l${hwgui_dir}lib/${hb_plat}/${hb_comp}/libhbxml.a' in
manage.hbp:21. Use '-Llib\win\mingw -lhbxml' option(s) instead.
hbmk2: Compiling Harbour sources...
manage.prg(52) Error F0029 Can't open #include file 'hwgui.ch'
hbmk2: Error: Running Harbour compiler (embedded). 1
(c:\dev\harbour\bin\harbour.exe) -n2 manage.prg -n -w -q0 -es2 -o..\..\bin\win\m
ingw\.hbmk\win\mingw\ -ic:\dev\harbour\include -i..\..\include -iinclude



Собираю таким hbp, с помощью соответствующих hbc файлов

 цитата:

${hwgui_dir}/hwgui.hbc
../../rddleto.hbc

-inc
-mt

manage



И еще, для свежего hwgui надо добавить hwg_ к след. ф-ям
hbmk2: Error: Referenced, missing, but unknown function(s): SENDMESSAGE(),
GETEDITTEXT(), MSGSTOP(), MSGYESNO()


Спасибо: 0 
Профиль
santy





Пост N: 175
Зарегистрирован: 16.12.08
ссылка на сообщение  Отправлено: 26.03.13 12:24. Заголовок: Скачал последнюю вер..


Скачал последнюю версию. (v 1.350.2.116 2013/03/24)
Собрал под Harbour для Watcom. Создал daemon, service, lib, dll ошибок нет (с __BM и без).

Под xHarbour нужно переделать BEGIN SEQUENCE на try catch в файле server.prg.

Для теста взял VC2003 и Harbour создал сервис ошибок нет тольки варнинги.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 197
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.03.13 08:01. Заголовок: Pasha Есть такая сит..


Pasha
Есть такая ситуация (версия letodb $Id: Changelog,v 1.350 2011/04/21 18:00:52 ptsarenko Exp $).
таблица letodb LastRec 2500, RecSize 1567 :
1-ый клиент листает MiniGui browse - соединение быстрый internet
2-ой клиент делает запросы с модемного соединения GPRS:
 
1. время выполнения 30-40 сек., первый клиент нормально работает
while ! eof()
aAdd(aArr, {RecNo(), Fld1, Fld2, Fld3})
skip
enddo

2. время выполнения 2-3 сек., у первого клиента клинит browse на это время
leto_udf('UDF_RecordsNo') - возвращает массив записей {RecNo1, ...}

3. время выполнения 4-5 сек., у первого клиента клинит browse на это время
leto_udf('UDF_RecordsNo', 'Fld1,Fld2,Fld3') - возвращает массив записей {{RecNo, Fld1,Fld2,Fld3}, ...}

Function UDF_RecordsNo(nUseArea, cParam)
...
while ! eof()
aAdd(aArr, RecNo()) // или aAdd(aArr, {RecNo, Fld1, Fld2, Fld3})
skip
enddo
Return leto_AtoC(aArr) // или bk_A2S(aArr)

Вопрос - есть ли механизм для применения в цикле while чтобы передавать управление letodb и не клинить работу др.клиента, может специальиный skip надо применять или это дохлое дело ... ?

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 2801
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 28.03.13 09:06. Заголовок: Так это же старая ве..


Так это же старая версия letodb с двумя потоками, в которой все запросы выполняет один поток. В этой версии ничего сделать нельзя. Надо использовать rel-1-mt ветвь

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 198
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.03.13 09:15. Заголовок: Pasha пишет:В этой в..


Pasha пишет:
 цитата:
В этой версии ничего сделать нельзя.

Я так и думал.

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2892
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 28.03.13 10:08. Заголовок: Pasha А во сколько ..


Pasha
А во сколько потоков сегодня работает Leto сервер ?

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 2802
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 28.03.13 11:37. Заголовок: Сейчас для каждого с..


Сейчас для каждого соединения создается отдельный поток

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2894
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.03.13 00:28. Заголовок: Dima Юзер создал пе..


Pasha
Юзер создал переменную на сервере
leto_varSet( "main","var_int",100 )
И трах бах комп у него "упал" , переменная останется на сервере ?

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 2803
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.03.13 09:34. Заголовок: Dima пишет: И трах ..


Dima пишет:

 цитата:
И трах бах комп у него "упал" , переменная останется на сервере ?



Нет, сервер увидит, что соединение отвалилось, и закроет его со всеми данными коннекта, в том числе очистит созданные переменные.

Спасибо: 0 
Профиль
PSP
постоянный участник


Пост N: 851
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 29.03.13 09:39. Заголовок: Паша, какой таймаут ..


Паша, какой таймаут перед сбросом соединения отвалившегося клиента? И касается ли это заблокированных этим клиентом записей?

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2895
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.03.13 09:43. Заголовок: Pasha Это правильно..


Pasha
Это правильно
А объявленная юзером переменная будет доступна другим юзерам ?
То есть если с одной станции я создал переменную vasiapupkin а с другой
пытаются войти и тоже создать такую же переменную , я могу проверить
существование этой переменной созданной другим юзером ?
Просто с помощью этих переменных хочу контролировать вход юзеров
в программу. В программе не должно быть 2-х активных юзеров с одним логином.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 2804
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.03.13 11:40. Заголовок: Dima пишет: А объяв..


Dima пишет:

 цитата:
А объявленная юзером переменная будет доступна другим юзерам ?



Честно говоря, поддержку переменных делал не я, и сам я их не использую.
Насколько я понял по сырцам, здесь важен флаг создания переменной: 4-й параметр функции leto_VarSet
Если установлен флаг LETO_VOWN, то это переменная именно этого юзера, и при закрытии соединения она будет удалена.
Иначе переменная останется.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 2805
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.03.13 11:45. Заголовок: PSP пишет: Паша, ка..


PSP пишет:

 цитата:
Паша, какой таймаут перед сбросом соединения отвалившегося клиента? И касается ли это заблокированных этим клиентом записей?



Точно не скажу, какое-то значение по умолчанию, предусмотренное в hbsocket. Но если я принудительно снимаю клиентскую программу, сервер сразу это видит и закрывает это соединение со всеми его данными, в том числе блокировками записей.

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2896
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.03.13 11:46. Заголовок: Pasha Хорошо а как ..


Pasha
Хорошо а как тогда организовать на уровне Leto сервера что бы нельзя было зайти в программу с одним
логином более 1 раза ?
Кинулся было к варианту с переменными но как оказалось они не общедоступны...
Можно конечно и по старинке сделать но хотелось более красиво реализовать.

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 2806
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.03.13 12:05. Заголовок: Почему не общедоступ..


Почему не общедоступны ? Примерно так:

if leto_VarGet("users", cUserID) == nil
leto_VarSet("users", cUserID, value)
// только надо флаги правильно указать
else
quit
endif

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2897
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.03.13 12:15. Заголовок: Pasha Понял. Пробну..


Pasha
Понял. Пробну. Спасибо !

Как часто вызывать LETO_CONNECT() ?
Перед каждым USE или достаточно 1 раз в начале программы ?

RddInfo( RDDI_REFRESHCOUNT, <lSet>,, [nConnection] ) это глобальная установка
или нужно ее указывать при открытии каждой базы ?

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2898
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.03.13 12:18. Заголовок: Pasha пишет: // тол..


Pasha пишет:

 цитата:
// только надо флаги правильно указать


Про флаги можно подробнее ?! Какой что означает...

 
#define LETO_VCREAT 1
#define LETO_VOWN 2
#define LETO_VDENYWR 4
#define LETO_VDENYRD 8
#define LETO_VPREVIOUS 1



Есть пожелание :)
Добавить в возвращаемый массив LETO_MGGETINFO 18 элементом серийный номер винта с которого стартовал LetoDB сервер ,
ну или системного винта. Говорю о функции volserial()
А еще лучше MAC адрес сетевой платы !!!
То есть нужен любой уникальный ID оборудования , что бы прогу можно было привязать , зная что ее
ни кто не упрет на лево (минуя разработчика).

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 2807
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 29.03.13 13:25. Заголовок: Dima пишет: Как час..


Dima пишет:

 цитата:
Как часто вызывать LETO_CONNECT() ?
Перед каждым USE или достаточно 1 раз в начале программы ?



Надо один раз вызывать.


 цитата:
RddInfo( RDDI_REFRESHCOUNT, <lSet>,, [nConnection] ) это глобальная установка
или нужно ее указывать при открытии каждой базы ?



Глобальная установка, для всех р/о

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2899
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.03.13 13:45. Заголовок: Pasha Понял. А что..


Pasha
Понял.

А что насчет этого ? Ну очень интересно

Dima пишет:

 цитата:
Про флаги можно подробнее ?! Какой что означает...



Dima пишет:

 цитата:
Есть пожелание :)



Спасибо: 0 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 96
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет