Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Новый топик    Ответить
 Многопользовательская работа в GTM  [new]
albert_kon
Member

Откуда: Караганда
Сообщений: 11
Добрый день всем!
Начал пробовать GTM, и столкнулся с проблемой, которой ни в MSM, ни в Cache не было.
Проблема вот в чём:
Если первый терминальный пользователь, запустивший рутину GTM закроет свой терминал, а второй пользователь при этом работает, то при входе третьего пользователя возникает ошибка:

$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, и рутину:
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
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"
21 мар 19, 15:30    [21839740]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13245
albert_kon
Если первый терминальный пользователь, запустивший рутину GTM закроет свой терминал, а второй пользователь при этом работает, то при входе третьего пользователя возникает ошибка ...

Поскольку с таким вообще не сталкивались, хотя задачка у нас многопользовательская и многоджобовая, придется тебе показать тестовый вариант такой программки.

Тогда такое можно будет легко потестить и дать какие-то рекомендации.
А может, в процессе создания тестового примера, ты и сам поймешь в чем проблема. Т.е. она точно не в ГТ.М...
22 мар 19, 07:40    [21840296]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
albert_kon
Member

Откуда: Караганда
Сообщений: 11
krvsa, там все просто:

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 стоят права на чтение и запись для владельца и для группы.
22 мар 19, 08:38    [21840313]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13245
albert_kon, небольшие уточнения по действиям...

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

Все так?

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

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  
22 мар 19, 14:47    [21840844]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2080
Не вижу никаких проблем.
Хоть тыщу терминалов...

К сообщению приложен файл. Размер - 60Kb
22 мар 19, 15:00    [21840866]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2080
Можно закрыть и открыть сколько угодно..
Ничего не происходит.
В смысле , что работает как и должно быть.
22 мар 19, 15:05    [21840873]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
albert_kon
Member

Откуда: Караганда
Сообщений: 11
Valeriu,
а что у вас показывает Ubuntu после перезагрузки ?

ipcs
и
ps aux | grep 'mumps'

есть mumps-процессы какие-то ?
22 мар 19, 15:46    [21840950]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
albert_kon
Member

Откуда: Караганда
Сообщений: 11
krvsa,

да, все так

У вас не вылетает ошибка ?
22 мар 19, 15:46    [21840951]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2080
albert_kon,

У меня только стоит CentOS 6.4
+
[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]#
22 мар 19, 15:59    [21840978]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2080
Извиняюсь, я не читал внимательно.
Это у меня процессы запущенных терминалов
22 мар 19, 16:03    [21840988]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
albert_kon
Member

Откуда: Караганда
Сообщений: 11
Valeriu,

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

судя по картинкам, вход всегда происходил под пользователем root.
У меня в примере user1,user2,user3
22 мар 19, 16:03    [21840989]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
albert_kon
Member

Откуда: Караганда
Сообщений: 11
Valeriu,

да, желательно бы сразу после загрузки
22 мар 19, 16:05    [21840993]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2080
albert_kon,

После перезагрузки
[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

?
22 мар 19, 16:16    [21841015]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
albert_kon
Member

Откуда: Караганда
Сообщений: 11
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
22 мар 19, 17:15    [21841130]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
albert_kon
Member

Откуда: Караганда
Сообщений: 11
Valeriu
У вас висят процессы ?
Пробовали снять командой :
mupip stop
?

Процессы вроде бы не висят...
Для mupip stop где можно посмотреть process-id ? Я пробовал по разному, но всегда у меня всегда ответ " No such process".

А что у вас в
source /usr/gtm63A/uci/sys
можно полюбопытствовать ?
22 мар 19, 17:26    [21841150]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2080
albert_kon,

Для mupip stop где можно посмотреть process-id

Первый терминал:
[root@GTM ~]# source /usr/gtm63A/uci/sys
[root@GTM gtm63A]# gtm

GTM>d ^terminal

Read any symbol:


Второй:
[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:


можно полюбопытствовать ?

можно.
#################### 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
22 мар 19, 17:41    [21841187]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
albert_kon
Member

Откуда: Караганда
Сообщений: 11
У меня пока по прежнему. Если под одним пользователем все запускать, то ошибки нет и у меня.
Под разными пользователями - ошибка.

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

Видимо где-то тут разгадка. Пока ищу. Отпишусь как найду.
23 мар 19, 11:03    [21841578]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13245
albert_kon
У меня пока по прежнему. Если под одним пользователем все запускать, то ошибки нет и у меня.
Под разными пользователями - ошибка.

У нас настроено только для одного пользователя...
Все работает.

Напрягать админа под эту проблему не хотел.
25 мар 19, 07:58    [21842399]     Ответить | Цитировать Сообщить модератору
 Re: Многопользовательская работа в GTM  [new]
albert_kon
Member

Откуда: Караганда
Сообщений: 11
Результат какой-то всё же я получил:
На YottaDB r1.24_x86_64 под Ubuntu 18.04
тестовый пример работает как положено:

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

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

Спасибо огромное krvsa и Valeriu !!!!!!
27 мар 19, 14:38    [21845119]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Ответить