← Zurück

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

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

trader.TableRegistry.AnonymousOrdersLog.Revision = NewRevisionNumber;

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (9)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Alexander
Alexander

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

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

Maxim
Maxim Autor

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

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

Maxim
Maxim Autor

Докладываю.

Задать вручную номер ревизии нет возможности. Насколько я понял, помимо номера ревизии, необходимо еще задать 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
Alexander

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

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

Maxim
Maxim Autor

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

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

Alexander
Alexander

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

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

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

Maxim
Maxim Autor

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

  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
Alexander

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

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

Ещё раз повторюсь -

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

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

Maxim
Maxim Autor

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

Alexander Mukhanchikov: Ещё раз повторюсь -

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

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

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