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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.04.2015, 15:44   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Что сделать, чтобы сбросить кэш кода класса, который выполняется при вызове сервиса
ax2012. есть класс RetailTransactionServiceOrders и метод searchCustomerOrderList
этот метод вызывается из класса RetailTransactionService
который, в свою очередь, реализует на X++ логику поиска заказов для serviсе
который, в свою очередь вызывается из POS


вчера для отладки я изменил код в этом методе.
сегодня удалил код из слоя sys

но сервис все равно работает по старому!!!

по-видимому где-то есть кэш кода. Подозреваю, что это dll-библиотеки.

Делалось:
* Инкрементная компиляция в CIL
* AOS перезагружался
* у пользователя галочка "выполнять в CIL" включалась/выключалась
* IIS перезагружался
* кэши в средствах разработки сбрасывались. все 4 = словарь, элементы и прочее

Что нужно сделать, чтобы сбросить кэш кода и заставить сервис выполнять текущую версию кода?

=====================
Похожая тема: Не обновляется класс при пакетной обработке
Старый 03.04.2015, 15:50   #2  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от mazzy Посмотреть сообщение
вчера для отладки я изменил код в этом методе. сегодня удалил код из слоя sys
Делалось: Инкрементная компиляция в CIL
Замечено, что инкрементная компиляция CIL подхватывает только объекты с более поздней, чем какая-то там, датой изменения, а когда удаляешь модифу с текущего слоя разработки, возвращаясь к стандарту, инкрементный CIL этого "не видит". Надо полностью CIL пересобрать.
Цитата:
Сообщение от mazzy Посмотреть сообщение
* у пользователя галочка "выполнять в CIL" включалась/выключалась
Это влияет только на логику, выполняющуюся в клиентской сессии на сервере. А сервисы, как и пакетные задания, всегда выполняются в CIL - они по-другому в 2012 не умеют.
За это сообщение автора поблагодарили: mazzy (2), trud (1).
Старый 03.04.2015, 15:50   #3  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Перед запуском AOS папку XPPIL удаляли?
__________________
Ivanhoe as is..
Старый 03.04.2015, 15:58   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Надо полностью CIL пересобрать.
пля... спасибо.

Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Перед запуском AOS папку XPPIL удаляли?
нет. это тестовая у клиента. там несколько человек крутится...
Старый 03.04.2015, 15:58   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Замечено, что инкрементная компиляция CIL подхватывает только объекты с более поздней, чем какая-то там, датой изменения, а когда удаляешь модифу с текущего слоя разработки, возвращаясь к стандарту, инкрементный CIL этого "не видит". Надо полностью CIL пересобрать.
А если не хочется / нет времени полную пересборку делать ?
После удаления модифы, сделать фиктивные изменения в коде на нижнем слое (добавив коммент), чтобы код переехал на usr и дата модификации стала бы текущей. И сделать инкрементный CIL. Так поможет ?
Старый 03.04.2015, 16:11   #6  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Если уже встретили "глюк" с CIL - то лучшее решение (самое быстрое) - удалить XPPIL, запустить АОС и сделать полную сборку CIL. На нормальной системе это займет минут 15-20 максимум.
__________________
Ivanhoe as is..
Старый 04.04.2015, 13:02   #7  
Kabardian is offline
Kabardian
Талантливый разгвоздяй
Аватар для Kabardian
 
424 / 338 (12) ++++++
Регистрация: 14.12.2008
Адрес: Москва
Записей в блоге: 14
Нагуглил статью по теме: AX for Retail 2012: Customizing the Transaction Service. Цитирую коммент оттуда:
Цитата:
For some reason (mainly related to the .Net Business Connector) the X++ code is sometimes cached and it is difficult to force it to take the new code.

The best way that I've found to force it to take the new code is to restart the Windows Process Activation Service in your local services on your Real-Time Service machine.
Т. е. нужно перезапустить службу Windows Process Activation Service и кэш должен сброситься.

Последний раз редактировалось Kabardian; 04.04.2015 в 13:10.
За это сообщение автора поблагодарили: Logger (6).
Старый 08.04.2015, 13:25   #8  
axotnik88 is offline
axotnik88
Участник
 
82 / 18 (1) ++
Регистрация: 05.06.2012
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Если уже встретили "глюк" с CIL - то лучшее решение (самое быстрое) - удалить XPPIL, запустить АОС и сделать полную сборку CIL. На нормальной системе это займет минут 15-20 максимум.
+1, но я еще изначально папку переименовую, и создаю такую же. Бывает удаление XPPIL занимает до 10 мин.
За это сообщение автора поблагодарили: Logger (1).
Старый 08.04.2015, 13:34   #9  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Папку, конечно, переименовываем, чтобы не ждать. Создавать не нужно - создатся сама.
__________________
Ivanhoe as is..
За это сообщение автора поблагодарили: mazzy (2).
Старый 08.04.2015, 15:20   #10  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от axotnik88 Посмотреть сообщение
я еще изначально папку переименовую, и создаю такую же. Бывает удаление XppIL занимает до 10 мин.
Обычно тормозит не столько удаление файлов сборки и отладочной информации в XppIL (пара тысяч файлов), сколько удаление XppIL\Source (пара-тройка сотен тысяч файлов). Подкаталог Source можно не удалять - на работу приложения он не влияет и вообще заполняется, только если на АОСе включена отладка.
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Папку, конечно, переименовываем, чтобы не ждать. Создавать не нужно - создатся сама.
Ранние сборки ядра AX 2012/2012 R2 не хотели запускаться в случае отсутствия каталога bin\XppIL и умели создавать лишь подкаталоги внутри bin\XppIL.
За это сообщение автора поблагодарили: mazzy (2), Logger (1), Kabardian (2).
Старый 08.04.2015, 15:45   #11  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,909 / 5730 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Еще есть неплохой вариант:Если в модельной базе данных оттрункейтить таблицу SysXPPAssemblies, то AOS будет просто игнорировать все существующие сборки и при выполнении Full Compile, аккуратненько их перестроит. (Правда, часть ключевых сборок он перестраивает прямо при запуске). Так что не надо ничего удалять - они сами отваляются если попрыгать
Кстати, усечение таблицы происходит во много-много раз быстрее чем удаление кучи сборок с диска.
За это сообщение автора поблагодарили: Logger (3), Ace of Database (2), Ivanhoe (1), gl00mie (2).
Старый 16.04.2015, 08:36   #12  
UNRW is offline
UNRW
Участник
 
383 / 67 (3) ++++
Регистрация: 16.09.2004
Адрес: Москва
Цитата:
Сообщение от axotnik88 Посмотреть сообщение
+1, но я еще изначально папку переименовую, и создаю такую же. Бывает удаление XPPIL занимает до 10 мин.
rd PATH /s /q
работает раз в 10 быстрее чем удалять через проводник
За это сообщение автора поблагодарили: Logger (1), Ivanhoe (1).
Старый 29.04.2015, 11:27   #13  
solo_vv is offline
solo_vv
Участник
 
3 / 10 (1) +
Регистрация: 10.05.2012
вопрос в продолжении темы
Коллеги, подскажите, пожалуйста.
Перед запуском AOS папку XPPIL удаляю (переименовываю). Запускаю AOS папка XPPIL создается но пустая. Заполняется только при полной сборке CIL. Я так понимаю, что если она пустая то заполняться должна при запуске AOS. Так? Если так, что необходимо что она заполнялась?
Старый 29.04.2015, 12:01   #14  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
А сколько вы ждали после запуска АОСа, прежде чем прийти к выводу, что XppIL не заполняется до полной сборки CIL? В зависимости от того, есть ли скомпилированное в CIL приложение в базе модели (в таблице SysXPPAssemblies) или нет, АОС при запуске с пустым каталогом XppIL может сам автоматом начать полную компиляцию CIL, а она требует большой подготовительной работы до того, как начнут генериться сборки, в частности, длительное время заполняется каталог XppIL\XML.
Старый 29.04.2015, 12:06   #15  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Скорее всего вопрос про конкретный случай. Реально не заполняется папка. Права на папку есть. При старта АОС плохо ругается, что не находит важных сборок (и сам их не создает). Аналогичное поведение на вновь установленном АОС. Версия ядра что R2 CU6, что R2 CU8.

Никто не сталкивался?
__________________
Ivanhoe as is..
Старый 29.04.2015, 12:28   #16  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
В таких случаях помогает Process Monitor - может, АОС лезет куда-то не туда, может, ОС его "посылает" при попытке записать что-то в XppIL... Вообще же было бы полезно привести примеры ругани на отсутствующие сборки.
Старый 29.06.2015, 15:01   #17  
solo_vv is offline
solo_vv
Участник
 
3 / 10 (1) +
Регистрация: 10.05.2012
Цитата:
Сообщение от gl00mie Посмотреть сообщение
А сколько вы ждали после запуска АОСа, прежде чем прийти к выводу, что XppIL не заполняется до полной сборки CIL? В зависимости от того, есть ли скомпилированное в CIL приложение в базе модели (в таблице SysXPPAssemblies) или нет, АОС при запуске с пустым каталогом XppIL может сам автоматом начать полную компиляцию CIL, а она требует большой подготовительной работы до того, как начнут генериться сборки, в частности, длительное время заполняется каталог XppIL\XML.
ждали до 30 минут.
Старый 29.06.2015, 15:04   #18  
solo_vv is offline
solo_vv
Участник
 
3 / 10 (1) +
Регистрация: 10.05.2012
Цитата:
Сообщение от gl00mie Посмотреть сообщение
В таких случаях помогает Process Monitor - может, АОС лезет куда-то не туда, может, ОС его "посылает" при попытке записать что-то в XppIL... Вообще же было бы полезно привести примеры ругани на отсутствующие сборки.
Ошибка только одна:
Object Server 03: System.IO.FileNotFoundException: Could not load file or assembly 'Dynamics.Ax.Application' or one of its dependencies. The system cannot find the file specified.
File name: 'Dynamics.Ax.Application'
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.Assembly.Load(AssemblyName assemblyRef)
at Microsoft.Dynamics.Ax.MSIL.BatchILMethods..cctor()

=== Pre-bind state information ===
LOG: DisplayName = Dynamics.Ax.Application
(Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: Dynamics.Ax.Application | Domain ID: 2
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the assembly,
WRN: that consists of the simple name, version, culture, and public key token.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
LOG: Appbase = file:///C:/Program Files/Microsoft Dynamics AX/60/Server/WORK_2/Bin/
LOG: Initial PrivatePath = NULL
Calling assembly : Ax32Serv, Version=6.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Program Files\Microsoft Dynamics AX\60\Server\WORK_2\Bin\Ax32Serv.exe.Config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Dynamics AX/60/Server/WORK_2/Bin/Dynamics.Ax.Application.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Dynamics AX/60/Server/WORK_2/Bin/Dynamics.Ax.Application/Dynamics.Ax.Application.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Dynamics AX/60/Server/WORK_2/Bin/XppIL/Dynamics.Ax.Application.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Dynamics AX/60/Server/WORK_2/Bin/XppIL/Dynamics.Ax.Application/Dynamics.Ax.Application.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Dynamics AX/60/Server/WORK_2/Bin/VSAssemblies/Dynamics.Ax.Application.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Dynamics AX/60/Server/WORK_2/Bin/VSAssemblies/Dynamics.Ax.Application/Dynamics.Ax.Application.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Dynamics AX/60/Server/WORK_2/Bin/Dynamics.Ax.Application.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Dynamics AX/60/Server/WORK_2/Bin/Dynamics.Ax.Application/Dynamics.Ax.Application.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Dynamics AX/60/Server/WORK_2/Bin/XppIL/Dynamics.Ax.Application.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Dynamics AX/60/Server/WORK_2/Bin/XppIL/Dynamics.Ax.Application/Dynamics.Ax.Application.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Dynamics AX/60/Server/WORK_2/Bin/VSAssemblies/Dynamics.Ax.Application.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft Dynamics AX/60/Server/WORK_2/Bin/VSAssemblies/Dynamics.Ax.Application/Dynamics.Ax.Application.EXE.

Последний раз редактировалось solo_vv; 29.06.2015 в 15:14.
Старый 29.06.2015, 15:59   #19  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Цитата:
Сообщение от mazzy Посмотреть сообщение
но сервис все равно работает по старому!!!

Делалось:
* Инкрементная компиляция в CIL
Мы лечим так -
Убедится, что CIL собрался (если отработал за 5 секунд, делай full CIL)
Recycle Application Pool который отвечает за Real time service (Restart, iisreset и прочее как правило не помогает).

Папку XppIL в R3 удалять не надо, full CIL итак все делает правильно. Ну и Аксапту запускать из под админа надо всегда.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
Старый 29.06.2015, 16:04   #20  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Ранние сборки ядра AX 2012/2012 R2 не хотели запускаться в случае отсутствия каталога bin\XppIL и умели создавать лишь подкаталоги внутри bin\XppIL.
Было такое, на какой версии не помню. Дал права на всю папку c AX аккаунту под которым AOS запуcкается - все заработало. Повторюсь, версию не помню....может было на R3, может нет.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
Теги
cil, xppil, инкрементная компиляция, инкрементный cil, кеш, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Channel9: Peter Villadsen and Gustavo Plancarte: X++ to MSIL Blog bot DAX Blogs 30 24.08.2010 17:11
Метод "SendMail" в COM-объекте класса "Dundas.mailer" возвратил код ошибки 0x80004005 (E_FAIL), который означает: The RCPT command failed. The specified account does not exist. Андрей К. DAX: Программирование 3 10.07.2009 16:08
Метод 'SendMail' в COM-объекте класса 'Dundas.mailer' возвратил код ошибки 0x80004005 (E_FAIL), который означает: The HELLO command failed. Andrew Akhmetov DAX: Программирование 4 09.04.2008 13:24
Отображение названия вместо кода! demID DAX: Программирование 31 05.10.2004 00:03
Оптимизация кода X++ Владимир Максимов DAX: Программирование 8 19.01.2004 15:24

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

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

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