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


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

trader.TableRegistry.AnonymousOrdersLog.Revision = NewRevisionNumber;

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


Теги:


Спасибо:


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;
}

  1. Второй тезис

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

  1. Третий тезис

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

  1. Из этих трех тезисов я прихожу к выводу, что для того, что бы загружать данные с 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