Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Многопользовательская работа в GTM / 19 сообщений из 19, страница 1 из 1
21.03.2019, 15:30
    #39789670
albert_kon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопользовательская работа в GTM
Добрый день всем!
Начал пробовать 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
22.03.2019, 07:40
    #39789880
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопользовательская работа в GTM
albert_konЕсли первый терминальный пользователь, запустивший рутину GTM закроет свой терминал, а второй пользователь при этом работает, то при входе третьего пользователя возникает ошибка ...
Поскольку с таким вообще не сталкивались, хотя задачка у нас многопользовательская и многоджобовая, придется тебе показать тестовый вариант такой программки.

Тогда такое можно будет легко потестить и дать какие-то рекомендации.
А может, в процессе создания тестового примера, ты и сам поймешь в чем проблема. Т.е. она точно не в ГТ.М...
...
Рейтинг: 0 / 0
22.03.2019, 08:38
    #39789891
albert_kon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопользовательская работа в GTM
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
22.03.2019, 14:47
    #39790103
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопользовательская работа в GTM
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
22.03.2019, 15:00
    #39790121
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопользовательская работа в GTM
Не вижу никаких проблем.
Хоть тыщу терминалов...
...
Рейтинг: 0 / 0
22.03.2019, 15:05
    #39790126
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопользовательская работа в GTM
Можно закрыть и открыть сколько угодно..
Ничего не происходит.
В смысле , что работает как и должно быть.
...
Рейтинг: 0 / 0
22.03.2019, 15:46
    #39790163
albert_kon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопользовательская работа в GTM
Valeriu,
а что у вас показывает Ubuntu после перезагрузки ?

ipcs
и
ps aux | grep 'mumps'

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

да, все так

У вас не вылетает ошибка ?
...
Рейтинг: 0 / 0
22.03.2019, 15:59
    #39790171
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопользовательская работа в GTM
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
22.03.2019, 16:03
    #39790178
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопользовательская работа в GTM
Извиняюсь, я не читал внимательно.
Это у меня процессы запущенных терминалов
...
Рейтинг: 0 / 0
22.03.2019, 16:03
    #39790179
albert_kon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопользовательская работа в GTM
Valeriu,

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

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

да, желательно бы сразу после загрузки
...
Рейтинг: 0 / 0
22.03.2019, 16:16
    #39790192
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопользовательская работа в GTM
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
22.03.2019, 17:15
    #39790218
albert_kon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопользовательская работа в GTM
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
22.03.2019, 17:26
    #39790228
albert_kon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопользовательская работа в GTM
ValeriuУ вас висят процессы ?
Пробовали снять командой :
mupip stop
?
Процессы вроде бы не висят...
Для mupip stop где можно посмотреть process-id ? Я пробовал по разному, но всегда у меня всегда ответ " No such process".

А что у вас в
source /usr/gtm63A/uci/sys
можно полюбопытствовать ?
...
Рейтинг: 0 / 0
22.03.2019, 17:41
    #39790245
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопользовательская работа в GTM
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
23.03.2019, 11:03
    #39790389
albert_kon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Многопользовательская работа в GTM
У меня пока по прежнему. Если под одним пользователем все запускать, то ошибки нет и у меня.
Под разными пользователями - ошибка.

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

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

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

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

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

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


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