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

Откуда:
Сообщений: 60
Гуру, подскажите:

Импортирую новый класс в неймспейс, #class(%SYS.Namespace).ListAll начинает показывать неймспейс два раза, как "USER" и как его implied namespace ("c:\InterSystems\Cache\mgr\user"). Такое происходит только на продакшен, на всех остальных тестовых базах не происходит. В чем может бьть дело?

Cache for Windows (x86-64) 2016.1
15 дек 17, 16:25    [21037490]     Ответить | Цитировать Сообщить модератору
 Re: Implied namespace and GetAll  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1517
alatalo
... начинает показывать неймспейс два раза, как "USER" и как его implied namespace ("c:\InterSystems\Cache\mgr\user").
Это не два раза, а две большие разницы:
USER в данном случае - действительно область (namespace)
c:\InterSystems\Cache\mgr\user - implied namespace базы данных USER.

Почему же для некоторых БД показывается implied namespace? Простой опыт показал, что это происходит, когда кто-либо с момента старта Cache выполнил в него переход, e.g.:
zn "^^c:\InterSystems\Cache\mgr\user"
Поскольку продакшен сервер вы перезагружаете нечасто, он помнит об этом, в отличие от ваших прочих серверов.

Кстати, список областей не замусоривается implied namespace-ами, если пользоваться:
do List^%SYS.NAMESPACE(.nsplist, 4, Remote, DontConnect)
 ; где 
 ; 4 - "так надо"
 ; if Remote = 1 - учитывать области, отображённые в удалённые БД (ECP)
 ; if DontConnect = 1 - не пытаться подключаться к удалённым БД.
Запрос List класса %SYS.Namespace имеет те же параметры Remote и DontConnect и ведёт себя так же.
15 дек 17, 17:05    [21037725]     Ответить | Цитировать Сообщить модератору
 Re: Implied namespace and GetAll  [new]
alatalo
Member

Откуда:
Сообщений: 60
Ну мы переход из области в область таким образом уж точно никогда не делаем, ни в коде, ни вручную.

Alexey Maslov
Поскольку продакшен сервер вы перезагружаете нечасто, он помнит об этом, в отличие от ваших прочих серверов.

Неа. Всё затейлевее - на сервере 50+ областей, импортируем апдейт наших классов в одну из них и она сразу появляется в списке как implied. Делаем импорт тех же классов тем же способом в тестовую базу той же версии - такого не происходит.

Из комментов на community.intersystems.com я так понимаю, что это какое-то безобидное поведение системы. Так что вроде все что мне нужно сделать, это учитывать, что GetAll может так себя вести.
16 дек 17, 16:15    [21039313]     Ответить | Цитировать Сообщить модератору
 Re: Implied namespace and GetAll  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1517
alatalo,

Почему же "неа"? Keith Avery высказал предположение сходное моему: когда вы импортируете в контексте БД, по сути вы тоже делаете переход в implied namespace. А John Murray напомнил, что такое поведение ListAll() вполне себе документировано. Если не секрет: почему отдаёте предпочтение этой функции перед безупречной List()?
18 дек 17, 00:05    [21041322]     Ответить | Цитировать Сообщить модератору
 Re: Implied namespace and GetAll  [new]
alatalo
Member

Откуда:
Сообщений: 60
Alexey Maslov,

>Почему же "неа"
потому что происходящее никак не связано с перезагрузками. Происходит только на продакшен.

>такое поведение ListAll() вполне себе документировано
да,да, с этим все понятно. Вопрос был в том что вызывает их появление, или даже - почему только на продакшене. Но уже расслабились и больше не следим.

>почему отдаёте предпочтение этой функции перед безупречной List()
она была первым что попалось на глаза. С вашей помощью теперь знаем что есть и другие варианты :)

>когда вы импортируете в контексте БД
а мы этого не делаем

Кстати:
>Простой опыт показал, что это происходит, когда кто-либо с момента старта Cache выполнил в него переход, e.g.:
>zn "^^c:\InterSystems\Cache\mgr\user"
чтобы так делать, этот кто-то либо большой оригинал, либо у него должны быть на это очень веские причины
22 дек 17, 11:01    [21054596]     Ответить | Цитировать Сообщить модератору
 Re: Implied namespace and GetAll  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1517
alatalo
>когда вы импортируете в контексте БД
а мы этого не делаем...
Судя по местоимению "мы", вы не единственный автор кода. Следовательно, вы полностью представляете себе, что делает весь ваш код. Снимаю (воображаемую) шляпу, респект.
22 дек 17, 12:29    [21054874]     Ответить | Цитировать Сообщить модератору
 Re: Implied namespace and GetAll  [new]
alatalo
Member

Откуда:
Сообщений: 60
Alexey Maslov,

>вы не единственный автор кода.
не единственный, но во-первых нас немного, а во-вторых, я руку на пульсе плотно держу :)

в сторону: уведомления об ответах на почту мне одному не приходят? вроде в настройках все выставлено
22 дек 17, 13:16    [21055022]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Ответить