AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 20.01.2010, 09:46   #21  
AlGol ist offline
AlGol
Участник
 
277 / 93 (4) ++++
Registriert seit: 24.12.2001
Ort: Тверь.
Как вариант, понимая трагичность ситуации в этой процедуре, было бы логично сбрасывать кеш InventTable сразу после обнаружения ошибки в процедуре вставки.

Т.е. сделать что-то подобное:

X++:
void process(container)
{
// ....

inventTable.insert();

if (- )
{
 flush inventTable;
 throw error();
}
//....
}
Alt 20.01.2010, 09:51   #22  
AlGol ist offline
AlGol
Участник
 
277 / 93 (4) ++++
Registriert seit: 24.12.2001
Ort: Тверь.
Zitat:
Zitat von kashperuk Beitrag anzeigen
Пришлось бы каким-то образом отслеживать на уровне ядра, какие записи вставлялись в этой транзакции, и удалять из кэша только эти записи - ведь прост очищать кэш тоже не очень кошерно
Вопрос спорный, что хуже: полная очистка кеша таблицы или возврат несуществующих записей.
Чтобы не брать ответственность на себя это можно просто вынести как настройку производительности системы. А уж администратор пусть сам решает в каком режиме ему работать.
Alt 20.01.2010, 10:17   #23  
Logger ist offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3.985 / 3273 (117) ++++++++++
Registriert seit: 12.10.2004
Ort: Москва
Blog-Einträge: 2
Zitat:
Я думаю, что это очень сложно грамотно исправить на уровне МС.
Пришлось бы каким-то образом отслеживать на уровне ядра, какие записи вставлялись в этой транзакции, и удалять из кэша только эти записи - ведь прост очищать кэш тоже не очень кошерно
Думаю что достаточно будет при любых откатах транзакций сбрасывать кеш таблиц, в которые шла вставка. Похоже этого будет достаточно. - Простой и надежный вариант получился.
Alt 20.01.2010, 11:29   #24  
Maximin ist offline
Maximin
NavAx
NavAx Club
 
415 / 361 (13) ++++++
Registriert seit: 09.10.2002
Ort: Москва
Zitat:
Думаю что достаточно будет при любых откатах транзакций сбрасывать кеш таблиц, в которые шла вставка. Похоже этого будет достаточно. - Простой и надежный вариант получился.
Собственно, я так и сделал.
Вчера почему-то сброс кэша после очередной обработанной таблицы/неудачной транзакции не работал, сегодня после глобальной компиляции заработало. По методу вызова Dictionary::flushTable на сервере. Это по сути - тот же SysFlushData (который внутри тоже вызывает Dictionary::dataFlush), только с аргументом,позволяющим указать конкретную таблицу, см. мой предыдущий пост. Кстати, думаю, можно и чуть допилить SysFlushData чтобы он обращал внимание на args и если там что-то есть (tableId или record), то сбрасывал кэш только по нужной таблице. Впрочем, при наличии самого Dictionary::dataFlush(_tableId) это не очень-то и нужно.
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты...
Stichworte
ax3.0, ax4.0, cache, баг, кэширование, ошибка

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Баг стандартного механизма перекрытия лукапа miklenew DAX: Программирование 5 09.04.2009 14:40
Не корректно сохраняет запись в inventTable Starling DAX: Программирование 8 31.03.2008 15:30
reNameItemId для InventTable DreamCreator DAX: Программирование 9 26.12.2006 10:11
Программно записи в InventTable djoker DAX: Программирование 8 02.12.2004 16:59
Не отображается товары в Form\InventTable! Zelenhof DAX: Программирование 6 15.01.2003 17:55

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 09:08 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.