Ручное выставление Revision
Atom Ответить
26.07.2012


Всем привет.
Пробую вручную выставить значение Revision:

trader.TableRegistry.AnonymousOrdersLog.Revision = NewRevisionNumber;

Но при этом после старта экспорта данные все равно приходят с самого начала, а не после номера NewRevisionNumber
Надо какие нибудь дополнительные действия?
Или это баг?

Теги:


Спасибо:




9 Ответов
Alexander

Фотография
Дата: 26.07.2012
Ответить


Максим, у тебя у самого есть доступ к исходникам Плазы, так что посмотри и отпишись как решить данный вопрос :)

Чтоб у других он не возникал.
Спасибо:

Maxim

Фотография
Дата: 26.07.2012
Ответить


Зачем изобретать велосипед?
Если это фича, а не баг, и кто-то знает ответ, то зачем копаться в исходниках? :)

Если никто не знает ответа, то покопаюсь.
Результат доложу.
Автор топика
Спасибо:

Maxim

Фотография
Дата: 31.07.2012
Ответить


Докладываю.

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

На текущий момент сделал вот такой вот костыль.
Код

String _fileName = "Revisions\\FORTS_ORDLOG_REPL.xml";

if (File.Exists(_fileName))
{
	XmlDocument xmlDoc = new XmlDocument();
	xmlDoc.Load(_fileName);
	xmlDoc.GetElementsByTagName("value")[0].InnerText = "13131309904";
	xmlDoc.Save(_fileName);
}


К разработчикам: по возможности реализуйте плз способ выставления LifeNumber вручную.
Автор топика
Спасибо:

Alexander

Фотография
Дата: 04.08.2012
Ответить


LifeNumber - это другое
Ты отключаешь автоматическое сохранение ревизий через Trader.RevisionManager.Interval = TimeSpan.Zero?

Смотри в сторону RevisionManager, как он сохраняет и восстанавливает ревизии.
Спасибо:

Maxim

Фотография
Дата: 04.08.2012
Ответить


Alexander Mukhanchikov Перейти

Ты отключаешь автоматическое сохранение ревизий через Trader.RevisionManager.Interval = TimeSpan.Zero?

Не совсем понял вопрос. Зачем отключать ревизию?
Вначале я пытался вообще не использовать автоматическое сохранение ревизии.
Как писал выше, я вручную задавал номер ревизии для таблицы и запускал экспорт.
Это не сработало.
После этого я включил автоматическое сохранение ревизии и перед стартом экспорта
в файле просто заменяю номер ревизии на тот, который мне нужен.


Alexander Mukhanchikov Перейти

LifeNumber - это другое
Смотри в сторону RevisionManager, как он сохраняет и восстанавливает ревизии.

Именно в RevisionManager я и пытался найти, как возобновить закачку данных
с нужного мне номера ревизии. Обкопался в исходниках. И насколько я смог разобраться
в них, пришел к выводу, что только задать номер нужной ревизии недостаточно.
Необходимо еще задать правильный номер LifeNumber.
Автор топика
Спасибо:

Alexander

Фотография
Дата: 04.08.2012
Ответить


Отключать надо не ревизию, а автоматическое сохранение ревизий. Для того чтобы одно не мешало другому.

Задавать надо перед стартом экспорта, а не возобновлять что-то.


Если меняешь в файле номер ревизии - как раз посмотри где конкретно этот номер проставляется и куда в PlazaRevisionManager.
Спасибо:

Maxim

Фотография
Дата: 04.08.2012
Ответить


У меня как-то не очень получается донести мои мысли.

1) Первый тезис.

PlazaRevisionManager я исследовал в первую очередь.
Часть когда из метода LoadState:

Код

stream.LifeNum = revisions.First;

foreach (var table in tables)
{
	var revision = revisions.Second.TryGetValue2(table.Name);

	if (revision != null)
		table.Revision = (long)revision;
}



2) Второй тезис

Как писал выше.
Я пытался задать номер ревизии вручную: trader.TableRegistry.AnonymousOrdersLog.Revision = NewRevisionNumber;
После этого запустить экспорт.
Но при этом все равно данные начинали приходит с самого начала, а не с NewRevisionNumber


3) Третий тезис

В файлах xml в которых сохраняется номер последней ревизии, по какой-то причине сохраняют еще и LifeNum.


4) Из этих трех тезисов я прихожу к выводу, что для того, что бы загружать данные с NewRevisionNumber
необходимо помимо trader.TableRegistry.AnonymousOrdersLog.Revision задавать еще и stream.LifeNum.
Но stream.LifeNum снаружи задать нельзя.
Автор топика
Спасибо:

Alexander

Фотография
Дата: 04.08.2012
Ответить


Я тоже не был услышан. Надо не выводы делать, а конкретно разбираться с тем что имеем.

Ты меняешь в xml файле значения ревизии, LifeNum не трогаешь. Так?

Ещё раз повторюсь -
1) необходимо остановить автоматическое сохранение и загрузку ревизий как я писал выше
2) после этого необходимо установить ревизию и запустить экспорт.

Сейчас одно накладывается на другое.
Спасибо:

Maxim

Фотография
Дата: 04.08.2012
Ответить


Alexander Mukhanchikov Перейти

Ты меняешь в xml файле значения ревизии, LifeNum не трогаешь. Так?

Да.
LifeNum не трогаю.
Меняю только номер ревизии


Alexander Mukhanchikov Перейти

Ещё раз повторюсь -
1) необходимо остановить автоматическое сохранение и загрузку ревизий как я писал выше
2) после этого необходимо установить ревизию и запустить экспорт.

Сейчас одно накладывается на другое.


Одно с другим не накладывается.
Когда я экспериментировал и вручную задавал номер ревизии через
trader.TableRegistry.AnonymousOrdersLog.Revision = NewRevisionNumber;
то в этом случае автоматическое сохранение и загрузку ревизий не работала и была отключена.
Автор топика
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy