powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Многопользовательская работа в GTM
19 сообщений из 19, страница 1 из 1
Многопользовательская работа в GTM
    #39789670
albert_kon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем!
Начал пробовать GTM, и столкнулся с проблемой, которой ни в MSM, ни в Cache не было.
Проблема вот в чём:
Если первый терминальный пользователь, запустивший рутину GTM закроет свой терминал, а второй пользователь при этом работает, то при входе третьего пользователя возникает ошибка:

Код: plaintext
1.
2.
3.
$d(^a)=Error occurred: 150379986,ARM+4^ARM,%GTM-E-REQRECOV, Error accessing da
tabase /home/fireman/.fis-gtm/V6.3-007_x86_64/g/gtm.dat. Must be recovered on c
luster node docker.,%GTM-I-TEXT, Error with database control semaphore (IPC_STAT
),%SYSTEM-E-ENO22, Invalid argument
В описании ошибки сказано: Выполните операцию MUPIP JOURNAL RECOVER для решения этой проблемы.

Если же первый пользователь продолжает работать бесконечно, то проблем нет, но мне кажется это не совсем нормальная ситуация.
Подозреваю, что существуют какие-то дополнительные настройки для работы в многопользовательском режиме либо в самом GTM, либо в Линуксе. Не могу их найти. :-(

Версия GTM последняя : V6.3-007_x86_64. Ставил на чистую Ubuntu 18.04.
в профиле пользователя устанавливаю переменные окружения gtmroutines, gtmgbldir, gtm_linktmpdir, gtmdir,
затем запускаю стандартный gtmprofile, и рутину:
Код: plaintext
1.
source /usr/lib/fis-gtm/current/gtmprofile
/usr/lib/fis-gtm/V6.3-007_x86_64/utf8/mumps -r ^ARM

При загрузке линукса устанавливаю переменные окружения:
/etc/profile.d/gtm63.sh
Код: plaintext
1.
2.
3.
export gtm_chset=UTF-8
export LC_CTYPE=en_US.utf8
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
export gtm_icu_version="6.0"
...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39789880
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albert_konЕсли первый терминальный пользователь, запустивший рутину GTM закроет свой терминал, а второй пользователь при этом работает, то при входе третьего пользователя возникает ошибка ...
Поскольку с таким вообще не сталкивались, хотя задачка у нас многопользовательская и многоджобовая, придется тебе показать тестовый вариант такой программки.

Тогда такое можно будет легко потестить и дать какие-то рекомендации.
А может, в процессе создания тестового примера, ты и сам поймешь в чем проблема. Т.е. она точно не в ГТ.М...
...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39789891
albert_kon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa, там все просто:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
ARM ; test
 w !,"Read any symbol: " r *c  ; ждем ввода символа
 w !,$c(c) ; выводим введенный символ в терминал
 w !,"$d(^test)=",$d(^test),! ; проверяем наличие глобали (в этом месте ошибка и появляется)
 s ^test($ZD)=$R(100) ; запись в глобаль рандомного значения
 zwr ^test ; вывод на терминал глобали ^test
 w !,"Read any symbol: " r *c ; тут ждем действий других пользователей, пока они дойдут до этого места ***
 w !,$c(c)
 q  ; выходим, далее закрываем терминал

Если второй пользователь читал/писал в базу, остановился на ***, первый пользователь выходит из программы и терминала, то третий пользователь получает ошибку уже на попытке чтения $d(^test).

GTM устанавливал из-под пользователя gtmuser.
У каждого пользователя user1-user3 свой вход в Ubuntu, они находятся в общей группе gtmuser.

для файла базы данных gtm.dat стоят права на чтение и запись для владельца и для группы.
...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39790103
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albert_kon , небольшие уточнения по действиям...

Запускаем 3 терминала...
В первом запускаем программу и доходим до "Pause".
Потом то же повторяем во втором терминале...
Заканчиваем работу в первом терминале и закрываем его.
Пытаемся повторить действия в третьем терминале...

Все так?

Я немного переделал твою программку, сохранив суть.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
tmp ;
	w !,"Read any symbol: " r *c  
	w !,$c(c) 
	w !,"$d(^test)=",$d(^test),! 
	s ^test($ZD)=$R(100) 
	zwr ^test 
	w !,"Pause: " r *c 
	w !,$c(c)
	q  
...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39790121
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не вижу никаких проблем.
Хоть тыщу терминалов...
...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39790126
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно закрыть и открыть сколько угодно..
Ничего не происходит.
В смысле , что работает как и должно быть.
...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39790163
albert_kon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valeriu,
а что у вас показывает Ubuntu после перезагрузки ?

ipcs
и
ps aux | grep 'mumps'

есть mumps-процессы какие-то ?
...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39790164
albert_kon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

да, все так

У вас не вылетает ошибка ?
...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39790171
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albert_kon,

У меня только стоит CentOS 6.4
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
[root@GTM ~]# source /usr/gtm63A/uci/sys
[root@GTM gtm63A]# ps -ef | grep mumps
root      4236  4223  0 13:42 pts/3    00:00:00 /usr/gtm63A/mumps -direct
root      4271  4258  0 13:43 pts/4    00:00:00 /usr/gtm63A/mumps -direct
root      4319     1  0 13:53 ?        00:00:00 /usr/gtm63A/mumps -direct
root      4464  4451  0 14:42 pts/1    00:00:00 /usr/gtm63A/mumps -direct
root      4499  4486  0 14:43 pts/2    00:00:00 /usr/gtm63A/mumps -direct
root      4523  4503  0 14:43 pts/5    00:00:00 grep mumps
[root@GTM gtm63A]# ipcs

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x00000000 10059776   root       777        1178402816 17
0x00000000 10223617   root       666        4194304    4

------ Semaphore Arrays --------
key        semid      owner      perms      nsems
0x00000000 0          root       600        1
0x00000000 32769      root       600        1
0x00000000 15630338   apache     600        1
0x00000000 15663107   apache     600        1
0x00000000 20611076   root       777        127
0x2b1f0e7b 20905989   root       777        3
0x00000000 20938758   root       666        3

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages
0x00000000 65536      root       777        0            0
0x00000000 98305      root       777        0            0

[root@GTM gtm63A]#

...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39790178
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь, я не читал внимательно.
Это у меня процессы запущенных терминалов
...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39790179
albert_kon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valeriu,

Спасибо что откликнулись и Вам и krvsa !

судя по картинкам, вход всегда происходил под пользователем root.
У меня в примере user1,user2,user3
...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39790183
albert_kon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valeriu,

да, желательно бы сразу после загрузки
...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39790192
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albert_kon,

После перезагрузки
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
[root@GTM ~]# ps -ef | grep mumps
root      2147  2127  0 15:00 pts/0    00:00:00 grep mumps
[root@GTM ~]# ipcs

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status

------ Semaphore Arrays --------
key        semid      owner      perms      nsems
0x00000000 0          root       600        1
0x00000000 32769      root       600        1
0x00000000 65538      apache     600        1
0x00000000 98307      apache     600        1

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages

[root@GTM ~]#




У вас висят процессы ?
Пробовали снять командой :
mupip stop

?
...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39790218
albert_kon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valeriu,

У меня вот такая петрушка:

После перезагрузки все пусто:
gtmuser@gtmserver:~$ ps -ef | grep mumps
gtmuser 1341 1092 0 19:34 pts/0 00:00:00 grep --color=auto mumps
gtmuser@gtmserver:~$ ipcs

------ Очереди сообщений --------
ключ msqid владелец права исп. байты сообщения

------ Сегменты совм. исп. памяти --------
ключ shmid владелец права байты nattch состояние

------ Массивы семафоров --------
ключ semid владелец права nsems

После входа двух пользователей видим, что user1 является владельцем семафора:
gtmuser@gtmserver:~$ ps -ef | grep mumps
user1 1697 1436 0 19:36 pts/1 00:00:00 /usr/lib/fis-gtm/V6.3-007_x86_64/utf8/mumps -r ^ARM
user2 1843 1797 0 19:37 pts/2 00:00:00 /usr/lib/fis-gtm/V6.3-007_x86_64/utf8/mumps -r ^ARM

gtmuser 1845 1092 0 19:37 pts/0 00:00:00 grep --color=auto mumps
gtmuser@gtmserver:~$ ipcs

------ Очереди сообщений --------
ключ msqid владелец права исп. байты сообщения

------ Сегменты совм. исп. памяти --------
ключ shmid владелец права байты nattch состояние
0x00000000 294912 user1 666 4640768 1
0x00000000 327681 user1 777 1048576 1
0x00000000 360450 user1 666 7520256 2
0x00000000 458755 user2 666 4640768 1
0x00000000 491524 user2 777 1048576 1

------ Массивы семафоров --------
ключ semid владелец права nsems
0x2b4a8c88 196608 user1 777 3
0x00000000 229377 user1 666 3

После выхода user1 из терминала семафор пустой, но user1 кое-где остался:
gtmuser@gtmserver:~$ ps -ef | grep mumps
user2 1843 1797 0 19:37 pts/2 00:00:00 /usr/lib/fis-gtm/V6.3-007_x86_64/utf8/mumps -r ^ARM
gtmuser 1850 1092 0 19:38 pts/0 00:00:00 grep --color=auto mumps
gtmuser@gtmserver:~$ ipcs

------ Очереди сообщений --------
ключ msqid владелец права исп. байты сообщения

------ Сегменты совм. исп. памяти --------
ключ shmid владелец права байты nattch состояние
0x00000000 360450 user1 666 7520256 1
0x00000000 458755 user2 666 4640768 1
0x00000000 491524 user2 777 1048576 1

------ Массивы семафоров --------
ключ semid владелец права nsems

После ошибки - уже user3 является владельцем семафора, следы от user1 так и остаются:
gtmuser@gtmserver:~$ ps -ef | grep mumps
user2 1843 1797 0 19:37 pts/2 00:00:00 /usr/lib/fis-gtm/V6.3-007_x86_64/utf8/mumps -r ^ARM
gtmuser 1992 1092 0 19:39 pts/0 00:00:00 grep --color=auto mumps
gtmuser@gtmserver:~$ ipcs

------ Очереди сообщений --------
ключ msqid владелец права исп. байты сообщения

------ Сегменты совм. исп. памяти --------
ключ shmid владелец права байты nattch состояние
0x00000000 360450 user1 666 7520256 1
0x00000000 458755 user2 666 4640768 1
0x00000000 491524 user2 777 1048576 1

------ Массивы семафоров --------
ключ semid владелец права nsems
0x2b4a8c88 262144 user3 777 3

Процессы не висят, но в итоге остался какой-то сегмент памяти за user1.
Возможно все это и не говорит ни о чём, просто не знаю где еще копать. :-(

При завершении программы вторым пользователем вот еще что сейчас заметил:
%GTM-E-CRITSEMFAIL, Error with semaphores for region /home/gtmuser/.fis-gtm/V6.3
-007_x86_64/g/gtm.dat
%GTM-E-SYSCALL, Error received from system call gds_rundown SEMCTL failed to get
ftok_semval -- called from module /usr/library/V63007/src/gds_rundown.c at line
318
%SYSTEM-E-ENO22, Invalid argument
%GTM-E-NOTALLDBRNDWN, Not all regions were successfully rundown
%GTM-E-GVRUNDOWN, Error during global database rundown
...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39790228
albert_kon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ValeriuУ вас висят процессы ?
Пробовали снять командой :
mupip stop
?
Процессы вроде бы не висят...
Для mupip stop где можно посмотреть process-id ? Я пробовал по разному, но всегда у меня всегда ответ " No such process".

А что у вас в
source /usr/gtm63A/uci/sys
можно полюбопытствовать ?
...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39790245
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albert_kon,

Для mupip stop где можно посмотреть process-id
Первый терминал:
Код: sql
1.
2.
3.
4.
5.
6.
[root@GTM ~]# source /usr/gtm63A/uci/sys
[root@GTM gtm63A]# gtm

GTM>d ^terminal

Read any symbol:



Второй:
Код: sql
1.
2.
3.
4.
5.
6.
7.
[root@GTM ~]# source /usr/gtm63A/uci/sys
[root@GTM gtm63A]# ps -ef | grep mumps
root      2421     1  0 16:18 ?        00:00:00 /usr/gtm63A/mumps -direct
root      2535  2522  0 16:23 pts/0    00:00:00 /usr/gtm63A/mumps -direct
root      2591  2570  0 16:26 pts/1    00:00:00 grep mumps
[root@GTM gtm63A]# mupip stop
ID:



можно полюбопытствовать ?
можно.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
#################### UCI ############################
cd /usr/gtm63A
gtm_dist="/usr/gtm63A"; export gtm_dist
gtmgbldir="/usr/gtm63A/mumps.gld"; export gtmgbldir
if [ "" = "UTF-8" -o "" = "utf-8" ] ; then
        if [ -e /usr/gtm63A/utf8 ] ; then
                gtm_dist="/usr/gtm63A/utf8"; export gtm_dist
        fi
fi
gtmroutines="/usr/gtm63A"; export gtmroutines
gtm="/usr/gtm63A/mumps -direct"; export gtm
mupip="/usr/gtm63A/mupip"; export mupip
lke="/usr/gtm63A/lke"; export lke
gde="/usr/gtm63A/mumps -r ^GDE"; export gde
dse="/usr/gtm63A/dse"; export dse
PATH=$PATH:$gtm_dist
...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39790389
albert_kon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня пока по прежнему. Если под одним пользователем все запускать, то ошибки нет и у меня.
Под разными пользователями - ошибка.

Скачал виртуалку с установленной на GT.M Vista, и вот там видно, что несмотря на то, что процессы запущены от самого пользователя (user1),
семафорами владеет группа (gtmuser)

Видимо где-то тут разгадка. Пока ищу. Отпишусь как найду.
...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39790740
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
albert_konУ меня пока по прежнему. Если под одним пользователем все запускать, то ошибки нет и у меня.
Под разными пользователями - ошибка.
У нас настроено только для одного пользователя...
Все работает.

Напрягать админа под эту проблему не хотел.
...
Рейтинг: 0 / 0
Многопользовательская работа в GTM
    #39792355
albert_kon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Результат какой-то всё же я получил:
На YottaDB r1.24_x86_64 под Ubuntu 18.04
тестовый пример работает как положено:

Каждый пользователь входит-выходит сколько угодно раз, семафор сохраняется за первым вошедшим.
После последнего вышедшего семафор освобождается, и т.д. независимо от того кто первый вошел.
Этого я и добивался.

Какой-то глюк возможно был в той версии GTM V6.3-007_x86_64.

Спасибо огромное krvsa и Valeriu !!!!!!
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Многопользовательская работа в GTM
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]