AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Администрирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.07.2007, 15:25   #1  
snirk is offline
snirk
Участник
 
36 / 12 (1) ++
Регистрация: 11.07.2007
Столкнулся с непонятной проблемой, которая, как мне кажется, связана с кэшированием. Суть в том, что при изменении данных (и не только) Аксапта в некоторых случаях (не всегда) использует старые или вообще неизвестно откуда появившиеся данные. Причем в один и тот же момент разные клиенты видят разную информацию. Более конкретно в примерах :

Пример 1:
В таблице есть поле A, которое отображается на форме. И на форме, и через Обозреватель Таблицы видно, что значение поля для одной из строк = false, а при работе одного из методов, который правильно находит эту строку, значение этого поля = true (видно в Debugger-e). Совершенно непонятно откуда берется такое значение.
Проблему удалось решить очистив кэш на сервере и перезагрузив клиента.

Пример 2:
Изменил код в методе одного из классов, сохранил, откомпилировал. Но при работе с моего компа вызывается старый, неизмененный метод (Debugger в него сваливается). При этом на других компах видят мой новый метод. Перезагрузка Аксапты не помогла. Проблему так и не решили.

И куча похожих багов, которые повторяются постоянно...

Вообще непонятно в чем проблема, где искать корни и самое главное как исправить. Так было не всегда - только последнюю неделю. Никаких изменений в настройках связанных с кэшированием не было. Единственное - около месяца назад создали кластер AOS-ов, но недели 3 все работало нормально.

Если у кого есть мысли, очень прошу высказаться - проблема серьезно мешает работать.

Заранее спасибо.
Старый 20.07.2007, 07:55   #2  
vesna dba is offline
vesna dba
Участник
 
147 / 16 (1) ++
Регистрация: 16.02.2007
у нас проблемы с расхождением в отображении данных на клиентах были, иногда.
в этих случаях всегда это было связано с кэшем, очистка кэша на клиенте решала проблему.

В вашем случае я думаю надо прокачивать тему с кластером AOS-ов - Как правильно вести разработку при наличии нескольких AOS-ов.
Попробуйте загасите один из них и воспроизведите проблеммную ситуацию.
__________________
Axapta 3.0 CIS SP3 CU1
---
Народу собралось - яблоку плюнуть негде!
Старый 20.07.2007, 11:36   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от snirk Посмотреть сообщение
Столкнулся с непонятной проблемой, которая, как мне кажется, связана с кэшированием.
Да, кэширование.
Да, так и должно быть.

Цитата:
Сообщение от snirk Посмотреть сообщение
Суть в том, что при изменении данных (и не только) Аксапта в некоторых случаях (не всегда) использует старые или вообще неизвестно откуда появившиеся данные. Причем в один и тот же момент разные клиенты видят разную информацию.
Да, это фича кэширования.
В кэше данные могут быть неактуальны. Но зато он быстрее.
Отсюда мораль - не надо жестко кэшировать часто меняющиеся данные.

Цитата:
Сообщение от snirk Посмотреть сообщение
В таблице есть поле A, которое отображается на форме. И на форме, и через Обозреватель Таблицы видно, что значение поля для одной из строк = false, а при работе одного из методов, который правильно находит эту строку, значение этого поля = true (видно в Debugger-e). Совершенно непонятно откуда берется такое значение.
И форма, и обозреватель могут брать данные по совершенно другому алгоритму.
Во-первых, они могут брать грязные данные, во-вторых, закэшированные.
См. режим кэширование NotInTTS.

Цитата:
Сообщение от snirk Посмотреть сообщение
Проблему удалось решить очистив кэш на сервере и перезагрузив клиента.
Должно было хватить либо очистки, либо перезагрузки.

Цитата:
Сообщение от snirk Посмотреть сообщение
Изменил код в методе одного из классов, сохранил, откомпилировал. Но при работе с моего компа вызывается старый, неизмененный метод (Debugger в него сваливается). При этом на других компах видят мой новый метод. Перезагрузка Аксапты не помогла. Проблему так и не решили.
Бизнес-логика тоже кэшируется.
Такое могло быть, если одни комьютеры работают с АОСом (а он держит бизнес-логику в кэше)
а другие работают с другим АОСом или в двухзвенке (тогда у них другой кэш)

Кэш бизнес-логики обновляется раз в 15-20 минут.
Надо было подождать, оно бы обновилось.
Либо нажать на пункт меню обновить AOD в Сервис \ Средства разработки \ ...

Цитата:
Сообщение от snirk Посмотреть сообщение
И куча похожих багов, которые повторяются постоянно...
А зачем вы так программируете ПОСТОЯННО?
Я надеюсь, что вы не программируете ПОСТОЯННО в рабочем приложении?
Почитайте implementation best practice с рекомендациями по поводу среды разработки, рабочей среды и о том, как правильно организовать процесс переноса доработок.

Цитата:
Сообщение от snirk Посмотреть сообщение
Вообще непонятно в чем проблема, где искать корни и самое главное как исправить.
В кэше.

Цитата:
Сообщение от snirk Посмотреть сообщение
Так было не всегда - только последнюю неделю. Никаких изменений в настройках связанных с кэшированием не было. Единственное - около месяца назад создали кластер AOS-ов, но недели 3 все работало нормально.

RTFM. У каждого АОСа свой кэш.

См. также ответы на этот же вопрос http://axforum.info/forums/showthread.php?t=19470
__________________
полезное на axForum, github, vk, coub.
Старый 20.07.2007, 13:32   #4  
snirk is offline
snirk
Участник
 
36 / 12 (1) ++
Регистрация: 11.07.2007
Спасиб, будем разбираться.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:42.