Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Устаревание классов / 9 сообщений из 9, страница 1 из 1
27.07.2007, 15:36
    #34689505
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Устаревание классов
Все-таки, по какому критерию при перекомпиляции каше считает, что класс устарел?
Я пока закономерности не вижу.

В каше 2007 проблема осталась :-(
...
Рейтинг: 0 / 0
27.07.2007, 15:47
    #34689554
SafeAndSound
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Устаревание классов
А что пишет? У меня было только "up-to-date".
...
Рейтинг: 0 / 0
28.07.2007, 06:37
    #34690526
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Устаревание классов
авторА что пишет?
так и пишет - компилишь класс А, пишет: класс Б устарел.
Причем я пытаюсь удалять глобал ^oddDEP, какием-то образом ответственный за связи. Но устаревание в нем не хранится, если уже каше поняло, что класс устарел, удалять глобал бесполезно.
Но с неудаленным глобалом вообще почти нечего скомпилить нельзя.

Закономерности в указании класса Б не вижу, иногда вообще непонятно, а он то к классу А какием боком?
На базах с одинаковой конфигурацией класс А может на одном скомпилиться нормально, а на втором сказать, что устарело.

Чем для меня опасна для меня эта ситуация?
1.Например я закатываю небольшие изменения на рабочую базу, например редко используемую csp-страничку. Страничка не компилится, показывает,что какой-то класс устарел. Матерюсь, начинаю компилить класс Б, показывает на класс С. Класс С один из корневых. Оставлять в таком (непонятно скомпилировлось или нет - непонятно) состоянии неприятно. Ночную работу мне не оплачивают, нажимаю компилить класс А вместе со связанными, предварительно удалив глобал ^oddDEP, понимая, что падают процессы, большинство из которых не в транзакции. Флаги fv при длительной компиляции не помогают.

2.Если я все-таки соберусь сделать закачку и компиляцию классов ночью, я рискую на утро вообще получить выведенную из рабочего состояния базу.
...
Рейтинг: 0 / 0
30.07.2007, 07:50
    #34691488
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Устаревание классов
Сомнительно что удаление глобала для системы проходить бесследно...

Нужно смотреть с какими параметрами компилируете... У студии достаточно забавные ключи.

Для csp - флагов "cd" из терминального d $system.OBJ или d $system.CSP (хотя их лучше все таки классами распространять) достаточно.

Для редких случаев "cdru".

Все остальное записить от "плетения" классов.
...
Рейтинг: 0 / 0
30.07.2007, 09:26
    #34691603
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Устаревание классов
Без удаления глобала каше вообще компилит только через CompileAll
Иначе ей циклично кажется, что кто-то из классов А,Б,С устарел и ни один из них она не компилит.
Но почему ей так кажется и откуда она берет эту информацию?
Что вообще означает устаревание классов?
...
Рейтинг: 0 / 0
30.07.2007, 09:38
    #34691631
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Устаревание классов
Информацию она берет из Super, полей-ссылок и в том числе SQL запросов внутри класса.

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

Чем чаще делать CompileAll да еще и без "u" тем хуже будет потом.
...
Рейтинг: 0 / 0
30.07.2007, 10:03
    #34691676
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Устаревание классов
В принципе, понятно, откуда он берет информацию о связности.
Super, поля-ссылки, используемые в коде классы.
Также при компилляции класса Б, если в нем есть ссылки на класс А, в классе А прописываются связки на класс Б. Для этого, как понимаю, и нужен отдельный глобал oddDEP, все остальные связи можно просчитать во время компилляции.

Когда базовый класс компилен позже своих потомков - это понятно, потомки устарели, но это явно не единственная причина устаревания.
А если классы А и Б друг друга используют и при компиляции класса А автоматически стареет класс Б? Потом, при компиляции класса С, в котором используются А и Б,пойдут проблемы, что один из классов устарел?

У нас вся база скомпилирована через CompileAll("-u") при переносе из каше 4.1.
Это теперь вечное проклятье :'(?
или CompileAll("u") мне поможет?
Сделал, в первый раз что-то компилила, второй раз ничего. Интересно, помогло?
...
Рейтинг: 0 / 0
14.08.2007, 19:10
    #34727748
Rus000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Устаревание классов
такая же фигня.
а что говорит суппорт?
...
Рейтинг: 0 / 0
14.08.2007, 21:36
    #34727882
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Устаревание классов
Саппорт говоит, вроде есть како-то adhoc, но под нашу версию он не сделан.
Обещали переделать под нашу каше, а если не поможет - разбираться дальше.

Пока могу посоветовать
d isuptodate^%occClass("myclassname",,0,1)
для определения того, что же устарело.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Устаревание классов / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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