Форум » LetoDB, HbNetio. » Leto DB Server (продолжение) » Ответить

Leto DB Server (продолжение)

alkresin: Только что открыл на Sourceforge новый проект - Leto DB Server - https://sourceforge.net/projects/letodb Это мультиплатформенный ( Windows, Unix/Linux ) сервер баз данных, предоставляющий клиентским программам доступ к dbf/cdx файлам, находящимся на удаленном сервере ( можно и на локальном компьютере запускать - в отладочных целях ). В общем, как ADS :). Проект - на стадии разработки, не все даже базовые функции еще реализованы, до оптимизации дело еще не дошло. Но работает :). Крутится у меня на сервере несколько дней, подключал до 15 клиентов, пока не падает. Мои программы работают с ним нормально. Преимущества по сравнению с обычным файл-сервером: 1) Безопасность - базы могут быть в каталоге, недоступном для клиентских компьютеров - никто их случайно не удалит и не повредит. 2) Поскольку базы открываются серверной программой, а не клиентской, ее целостности ничего не грозит при случайном отключении клиентского компьютера. 3) значительное уменьшение сетевого траффика. 4) Должен быть, по идее, выигрыш в скорости. 5) Возможность контроля за пользователями с помощью утилиты manage ( можно придумать и другие формы контроля ). 6) Можно будет сделать транзакции, stored procedures на Харборе, ... и вообще все в наших руках :). Кто хочет участвовать в разработке, тестировании - пишите.

Ответов - 316, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All

Dima: leo Такой же вопрос можно задать и про ADS. Лучше всего попробовать самому Leto DB Server.

sashaBG: Привет Всем ! Уже 5 месяцов как 3 из моих клиентов перешли на мою новую версию бухучета пока никаких проблем не замечено Я использую MiniGUI Ext + Harbour + LetoDB + RPC функциональност от HBNETIO Есть серверная часть , в которой включен сервер с HBNETIO , и мой RPC функции . Заоодно етот модуль управляет и LetoDB ( Start , Stop , Manager.exe , просмотр Log файла и т.д.) ну и Клиент Моя программа зовется "АЛМА" я даже в честь етого сервера новую версию окрестил "АЛМА ЛЕТО"

sashaBG: alx_on Я большой фанат МАКОВ , у меня Хакинтош (ASUS P5QL-PRO , C2D7200 , GF9500 , Leopard 10.5.8) все работает без проблем наверное год и Macbook Pro 17'' У тебя программа консольная на МАКЕ или что то другое ?


alx_on: sashaBG Harbour + ( QT + HbQt ) Win,Linux,MacOSX

alx_on: alkresin Александр, помогите плз разобраться. Может у Вас появится идея. У нас сейчас активно тестируется работа с LetoDB (сервер на win) и стабильно раз в день (два раза через день) лето падает. Причем в самых неожиданных местах. Тестеров 5-10 человек. Одновременно открытых таблиц (на всех) 15-200. Например, одно место: Unrecoverable error 6005: Exception error: %s Exception Code:C0000005 Exception Address:004AAB64 EAX:00000000 EBX:0137BF3C ECX:013F38BC EDX:00000000 ESI:013F39C0 EDI:0000000D EBP:003D66E4 CS:EIP:001B:004AAB64 SS:ESP:0023:01B8F910 DS:0023 ES:0023 FS:003B GS:0000 Flags:00010202 CS:EIP: 0F B7 04 78 89 2C 24 01 D0 89 44 24 04 E8 0A 78 SS:ESP: 003D66E4 018E4604 01B8FC60 004E1B37 018C4B74 01B9147C 01B914DC 004E1B37 01B914DC 00000008 01B8FC60 0000000A 00000000 003C653C 01B99535 0000000F Command: ord;02;18949;opdate;29579; Я нашел это место - оказалось в драйвере CDX (последний harbour из SVN) в функции hb_dbfGetValue() case HB_FT_DATE: if( pField->uiLen == 3 ) { hb_itemPutDL( pItem, HB_GET_LE_UINT24( pArea->pRecord + pArea->pFieldOffset[ uiIndex ] ) ); } else if( pField->uiLen == 4 ) { hb_itemPutDL( pItem, HB_GET_LE_UINT32( pArea->pRecord + pArea->pFieldOffset[ uiIndex ] ) ); } else { hb_itemPutDS( pItem, ( char * ) pArea->pRecord + pArea->pFieldOffset[ uiIndex ] ); <---- GPF!!! при попытке взять "pArea->pFieldOffset[ uiIndex ]" } break; Но при таком же тесте в течении 2-3 дней без лето ничего не падает.

sashaBG: alx_on У меня тоже такое случалось когда собираю LetoDB с версиями после 2.0.0 поетому я пока его собираю с Harbour 2.0.0 ChangeLog 13372 и не падает

alx_on: alkresin пишет: дополнительные ( не compound ) индексы использую только как временные, для одного сеанса работы и не разделяю их с другими экземплярами программы У меня это, к сожалению, норма Т. е. индексы всегда хранятся отдельно от таблиц (в отдельном каталоге) и они открываются принудительно каждый раз при открытии таблиц

alx_on: sashaBG пишет: Harbour 2.0.0 ChangeLog 13372 Почему именно эта ревизия?

alkresin: alx_on пишет: У нас сейчас активно тестируется работа с LetoDB (сервер на win) и стабильно раз в день (два раза через день) лето падает. В связи с тем, что сказал sashaBG, может, стоит попробовать откомпилировать сервер с другой версией Harbour ... У меня сейчас работают с letodb сервером 25 - 35 пользователей, 10 - 15 разных приложений, 40 - 60 dbf файлов. До недавнего времени использовал letodb от августа 2009, он практически не падал, было, пожалуй 2 таких случая за полгода. Когда недели 2-3 назад перешел на последнюю ( с CVS ) версию letodb, он стал падать раз в несколько дней, причем, как я заметил, это обычно происходило во время присоединения нового пользователя, и, как мне кажется, в том случае, если это Windows станция и пользователь запускал программу сразу после включения компьютера, как только появлялся рабочий стол, не дожидаясь полного окончания загрузки Windows. Я так и не понял пока, отчего это могло происходить. Сделал несколько мелких правок в hbip.c b letofunc.c ( Changelog 2010-05-25 11:40 UTC+0300 ), теперь жду результата, за прошедшие 3 дня еще ( тьфу-тьфу ) не падал. Я нашел еще одно место, которое потенциально может вызывать проблемы. Как вы знаете, в letodb сервере 2 потока. Один слушает сеть, опрашивает открытые сокеты, принимает с них информацию, анализирует команды и выполняет те из них, которые можно обработать на чистом С, без вызова RDD и прочих Harbour level функций, работающих с vm, стеком. 2-й поток обрабатывает остальные команды. Так вот, сейчас первый поток вызывает и функцию leto_CloseUS() - закрытие клиента, которая, если есть еще у него незакрытые areas, закрывает их, т.е. выполняет действия, предназначеннные для 2-го потока, что теоретически может вызвать неприятные коллизии. Это может происходить, если вы "убиваете" пользователя из manage или если связь с ним по какой-то причине внезапно обрывается ( при нормальном завершении задачи Harbour сам закрывает открытые areas и такого не происходит ).

alkresin: ( В продолжение к предыдущему ) Ну и, раз у вас индексы открываются так, как вы описали, то, учитывая эту ошибку в hs_openindex, даже не представляю, как оно вообще у вас работает...

sashaBG: alx_on Я не такой спец в C и поетому не стал копть в GPF а просто вернулся на stable версию Harbour с www.harbour-project.org Да конечно и мне тоже хочется скомпилировать все одной и той же весрии Harbour . Может господин Кресин действительно поможет !

alx_on: alkresin пишет: даже не представляю, как оно вообще у вас работает... Я вообще не представлял что оно будет на работать на маке, но ведь работает хотя в коде есть конкретные вставки только под win и linux (я не вникал что там, приоритет пока на вин-платформу) по поводу индексов: просто переоткрывает и память переинициализирует (вопрос насколько корректно?) стоит попробовать откомпилировать сервер с другой версией Harbour не могу - многое завязано на новой версии (например, HbQT) Может это быть связано с массовой переделкой типов (ULONG на HB_MAXINT и т.д.)? если связь с ним по какой-то причине внезапно обрывается вот, кстати, по поводу связи: если хоть на миг связь прерывается (например, комп почти успел уйти в сон, но почти успели двинуть мышой ), то все соединения с лето на клиенте рвутся (соответственно ни работать дальше нельзя, ни закрыть нормально, куча ошибок выходит на каждую открытую таблицу)

alkresin: alx_on пишет: не могу - многое завязано на новой версии (например, HbQT) Так перекомпилите только сервер, клиенты пусть остаются как есть. Может это быть связано с массовой переделкой типов (ULONG на HB_MAXINT и т.д.)? Если вы перекомпилите сервер с другой версией Harbour и он перестанет падать, тогда будет иметь смысл подумать об этом. вот, кстати, по поводу связи: если хоть на миг связь прерывается (например, комп почти успел уйти в сон, но почти успели двинуть мышой ), то все соединения с лето на клиенте рвутся Хм.. А что, связь прерывается при уходе в сон ? Я сейчас специально 2 раза вышел при открытой программе в ждущий режим ( через Пуск...Выключение ) - после пробуждения все работало как прежде. А вообще при прерывании связи клиент принудительно отключается, а что еще с ним делать ?

alx_on: alkresin пишет: Если вы перекомпилите сервер с другой версией Harbour Надо будет попробовать. На какой версии остановиться? Я сейчас специально 2 раза вышел при открытой программе в ждущий режим странно... у меня все отвалилось при прерывании связи клиент принудительно отключается, а что еще с ним делать ? Подождать какое то время, например, и переподключать. Но это так, мечты... PS может быть такая ситуация: на сетевом уровне пакет (строка с командой) пришла не полностью?

alkresin: alx_on пишет: Надо будет попробовать. На какой версии остановиться? Предлагаю какую-нибудь до появления mt, у меня, например, 1.01 стоит. PS может быть такая ситуация: на сетевом уровне пакет (строка с командой) пришла не полностью? Такая ситуация предусмотрена. Сервер опрашивает сокет, пока не обнаружит конца пакета. Сокет отключается и клиент удаляется только в случае если в результате опроса сокета была возвращена ошибка.

alx_on: alkresin пишет: Сокет отключается и клиент удаляется Имелось в виду падение сервера, т.е. разбор неполной строки с командой

alx_on: alkresin пишет: Предлагаю какую-нибудь до появления mt, у меня, например, 1.01 стоит Подскажете точные ключи компиляции для винды (чтобы быть уверенным в результате) можно и для linux И плюс для самого лета PS там на компилятор есть ограничение? Я использую mingw почти последний

alkresin: alx_on пишет: Подскажете точные ключи компиляции для винды (чтобы быть уверенным в результате) можно и для linux Я не ставлю никаких своих дополнительных ключей, что есть в стандартных файлах конфигурации, то и использую. То же для лета - один к одному как на CVS. PS там на компилятор есть ограничение? Я использую mingw почти последний С mingw не пробовал, ничего не могу сказать. Клиентов я компилирую с Borland 5.5, а сервер у меня на Линукс.

alx_on: sashaBG пишет: собираю с Harbour 2.0.0 ChangeLog 13372 Попробовал с 2.0 Не компиляет! funcleto.h:138: error: redefinition of typedef ‘HB_ERRCODE’ harbour2.0/include/hbapi.h:473: error: previous declaration of ‘HB_ERRCODE’ was here Придется разбираться :)

alkresin: alx_on пишет: Имелось в виду падение сервера, т.е. разбор неполной строки с командой Разбора неполной строки быть не может - протокол предусматривает определение конца пакета и пока этот конец не будет определен, разбор строки не начнется.



полная версия страницы