On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
alkresin
moderator


Пост N: 31
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 31.01.08 11:36. Заголовок: Leto DB Server (продолжение)


Только что открыл на 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 на Харборе, ... и вообще все в наших руках :).

Кто хочет участвовать в разработке, тестировании - пишите.



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


alkresin
moderator


Пост N: 301
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.06.10 08:31. Заголовок: В присланном вами te..


В присланном вами test.dbf есть "нехорошая запись" ( recno() = 61 ) с несимвольной информацией - похоже, битая. После индексирования она становится 1-й и при Gotop() на нее получается ошибка - этим объясняется, почему с descending все работает ( первой становится другая запись ). После удаления этой записи и упаковки все работает нормально. Это, впрочем, не отменяет того факта, что ошибка возвращаться не должна - надо смотреть, в чем дело.

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


Пост N: 302
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.06.10 09:48. Заголовок: Исправил я это дело,..


Исправил я это дело, проблема была в битом поле типа DATE.
Кстати, Александр, начал я смотреть ваши изменения - что-то вы в common_c.c форматирование сбили, там теперь разделитель строк не r\n, а \r\r\n

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


Пост N: 61
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 02.06.10 09:58. Заголовок: alkresin пишет: раз..


alkresin пишет:

 цитата:
разделитель строк не r\n, а \r\r\n


Знаю :)
я уже пытался выложить изменения, но меня опередили и теперь опять синхронизирую

уффф, выложил
проверьте плз

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


Пост N: 303
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.06.10 10:38. Заголовок: уффф, выложил провер..



 цитата:
уффф, выложил
проверьте плз


С common_c.c все в порядке.

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


Пост N: 62
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 02.06.10 11:16. Заголовок: alkresin пишет: Исп..


alkresin пишет:

 цитата:
Исправил я это дело, проблема была в битом поле типа DATE.


Может быть более жесткую проверку сделать (только цифры)? Может возникнуть аналогичная ситуация, но символ будет, например, больше пробела

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


Пост N: 304
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.06.10 12:11. Заголовок: Может быть более жес..



 цитата:
Может быть более жесткую проверку сделать (только цифры)? Может возникнуть аналогичная ситуация, но символ будет, например, больше пробела


Нет особой необходимости. Вообще говоря, там достаточно было добавить проверку на \0, беда была именно в этом. Сервер передавал 8 нулей из битой записи, а клиент, а ведь \0 в первом байте - признак пустого поля. Клиент, обнаружив его, начинал читать следующее поля со следующего байта - и запутался.

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





Пост N: 12
Зарегистрирован: 16.12.08
ссылка на сообщение  Отправлено: 02.06.10 13:06. Заголовок: после изменений в фа..


после изменений в файле funcleto.h

#define hb_cdp_page hb_cdppage()
#if defined(HB_ERRCODE)
typedef HB_ERRCODE ERRCODE;
#endif

не компилится в xHarbour (121_6714)
если вернуть назад, всё нормально проходит
перед этим была одна ошибка в препроцесоре в файле server.prg, она и осталась, причина ошибки пока непонятна.


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


Пост N: 305
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.06.10 13:18. Заголовок: Александр, после пос..


Александр, после последних изменений появилась проблема ( с 2010-06-01 16:45 UTC+0300 Alexander Kresin ) работает нормально, я сейчас проверил. См. сообщение на letodb-developers@lists.sourceforge.net:

In test_ta.prg i add dbskip()

...
AddNakl( 1, Date(), { 1400.5, 28632.28, 800.51 } )
AddNakl( 2, Date(), { 58003, 930.5 } )
? "Records has been added"
dbskip()
...

and get
Error LETO/1000 Data type error
...
and letodb_crash.log

Сервер падает. Где-то у вас ошибка закралась...

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


Пост N: 306
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.06.10 13:25. Заголовок: И еще вопрос по изме..


И еще вопрос по изменениям в протоколе:
он изменился только для файлов с количеством полей > 256, или для всех ? Т.е., могу ли я компилировать приложения с новой версией, не трогая сервер ( у меня нет файлов с таким большим количеством полей ) ?

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


Пост N: 63
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 02.06.10 13:41. Заголовок: alkresin пишет: мог..


alkresin пишет:

 цитата:
могу ли я компилировать приложения с новой версией


Да.
Фактически это не изменение, а исправление

Ошибку с DbSkip() поправил (тупо else пропустил как то )

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


Пост N: 307
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.06.10 13:51. Заголовок: А на CVS исправления..


А на CVS исправления еще не запостили ?

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


Пост N: 64
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 02.06.10 13:55. Заголовок: alkresin пишет: А н..


alkresin пишет:

 цитата:
А на CVS исправления еще не запостили ?


Выложил

У меня все равно где то падает собака!
Поймать не могу
(переход на harbour 1.01 для меня - -как совсем крайний случай :) )

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


Пост N: 308
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 02.06.10 14:01. Заголовок: Так а падает на harb..


Так а падает на harbour 1.01 или не проверяли ? Я согласен, что откат на старую версию - не выход, но такая проверка может подтолкнуть в правильном направлении.
P.S. Падает и без установленных MSVS Redistributable ?

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


Пост N: 65
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 02.06.10 14:37. Заголовок: alkresin пишет: Так..


alkresin пишет:

 цитата:
Так а падает на harbour 1.01 или не проверяли ?


Пока руки не дошли

 цитата:
P.S. Падает и без установленных MSVS Redistributable ?


Скорее всего молча пропускает ошибки
Потому как с MSVS Redistributable отладчик (gdb) показывает ошибку примерно такого плана:
неверный вызов (или неверные параметры вызова, точно не помню) С-функций (или библиотечных)
Т.е. более жесткая проверка параметров вызова стандартных библиотечных функций

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


Пост N: 66
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 02.06.10 16:53. Заголовок: Проявляется при инте..


Проявляется при интенсивной нагрузке с одной машины (3 задачи с обработкой больших файлов, десятки тысяч записей)


Два падение на win-сервере

1.

(gdb) bt
#0 0x0041cb21 in dlmalloc ()
#1 0x0028670c in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
Скрытый текст


2.
Starting program: D:\letodb.exe
[New Thread 912.0x864]
[New Thread 912.0x96c]
warning: Invalid parameter passed to C runtime function.

warning: Invalid parameter passed to C runtime function.



Падение на Mac-сервер

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x2019825c
0x0001d231 in hb_ip_rfd_set (hSocket=-1) at ../main/src/letodb/common/hbip.c:894
894 FD_SET( hSocket, &rd_fds );

Конкретно в этом случае
incoming = hb_ipAccept( hSocketMain, -1, szBuffer, &lTemp );
вернула -1, что является ошибкой

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


Пост N: 67
Зарегистрирован: 07.07.09
ссылка на сообщение  Отправлено: 02.06.10 23:26. Заголовок: Выложил новые измене..


Выложил новые изменения
Обработка ошибки сети
Решение временное, надо по другому как то реализовать
Но как затычка пойдет

Проверьте у себя внимательно плз
Тестировал интенсивно у себя в течении часа. На последнем harbour с SVN!
То что раньше падало, максимум, через 20 минут - не упало!
Может совпало с погодой? :)
PS да, на предмет целостности данных не сильно смотрел, но вроде не должно это повлиять :)

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


Пост N: 309
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 03.06.10 09:12. Заголовок: Очень интересно! Здо..


Очень интересно! Здорово, что вы на это вышли, Александр.
Пожалуй, hb_ipAccept() стоит немного изменить. Получается, что если accept() завершился с ошибкой ( вернул -1 ), но последующий WSAGetLastError() ( или errno для Линукс ) вернул 0, то все вроде-бы в порядке и для этого -1 вызываются другие функции. А ситуация такая может быть, если между вызовами accept() и WSAGetLastError() вклинился другой thread со своими socket вызовами и библиотека сокетов не thread safe.

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


Пост N: 310
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 03.06.10 09:44. Заголовок: Я поменял немного hb..


Я поменял немного hb_ipAccept() в свете того, что писал ранее, надеюсь - будет работать.

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




Пост N: 1472
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 03.06.10 20:28. Заголовок: Поправил баг, связан..


Поправил баг, связанный с установкой кодовой страницы на сервере. По-видимому, он возник после добавления авторизации пользователей: 6-й и более параметры команды intro просто игнорировались

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




Пост N: 1473
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 03.06.10 20:40. Заголовок: Александр, наверное ..


Александр, наверное еще в srvleto.h - USERSTRU надо добавить:
USHORT uiVarsOwnCurr;


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