Универсальный валидатор (рутинг, адресация) на базе конвертации в СГ

Ты ж вроде сказал цикл 30 дней? Я и поменял 300 на 30. :slight_smile:
Метод MapConversionTask#isSourceUpdateNeeded
https://github.com/sergeyastakhov/OSM/blob/master/osm2dcm/src/main/java/ru/sergeyastakhov/osm2dcm/MapConversionTask.java#L287

Хорошо, вынесем. Там ещё 7 дней фигурирует, тоже выносим?

Настройка config.properties/sourceDir

Ну он упомянут в history.txt и значит подошёл под условие метода isSourceUpdateNeeded

Там кроме кода возврата проверяется ещё успешность обновления. После его успешного завершения isSourceUpdateNeeded должен возвращать false, иначе там всё зациклится нафиг.

Да, вынеси пожалуйста оба параметра
30 - это то что я всем обещал. 300 - это то что есть сейчас.

ага, то есть если я напишу

sourceDir=d:\osm\osm_data_src

взлетит?

или надо sourceDir=d:\osm\osm_data\_src
Это вообще что за синтаксис?)

Да, обратные слэши надо удваивать. Можно написать с прямыми, их удваивать не нужно. Винда их поддерживает наравне с обратными.

Стандартные файлы properties в Java. :slight_smile:
Формат тут расписан: http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html#load(java.io.Reader)

Понял, сейчас буду пробовать)

Готово - http://files.mail.ru/7DA77502B15843A0AF932E8990BC4ECA
Код проверки опять переехал, теперь он в отдельном классе PeriodMapUpdatePolicy

Так, попробовал.

Вроде задышало, но пока тест не совсем полноценный - на ноутбуке не стоит осмозис, и make обламывается. Завтра буду внедрять на комп, на котором быстрая версия валидатора.

Ну и мне надо кое-что подкрутить, типа zOsmStat, чтобы он свой лог раскладывал по папкам)

Вопросы. Очередь должна быть отсортирована сперва по приоритету, потом по дате последней попытки. Сейчас так?
И можно сделать форматирование history.txt? Я неформатированный как-то не очень понимаю.)

Ну и надо что-то решать по железу, нужно 4 а лучше 8 гигов ОЗУ на процессорное ядро, а сейчас всего 4 Гиг рам.

Первоначальная очередь - да, условие сортировки можно увидеть в MapConversionTask.PRIORITY_SORT, сам запуск сортировки в MapConverter#doConversion()

Но если какое-то задание нуждается в обновлении source, то задание перекидывается в очередь обновлений и помещается обратно в конец очереди обработки только после успешного выполнения обновления, поэтому итоговый порядок выполнения конвертации может быть другой. Это позволяет освободить потоки обработки на занятие собственно обработкой, чтобы карты, требующие обновлений не тормозили другие, которым оно не нужно.
Если такой алгоритм не годится - скажи как лучше его поменять.

ок, сделаю.

если у этой карты больший приоритет (1), то вполне нормально, что она тормознет все другие, с меньшим приоритетом (6). К тому же сейчас все приоритеты временные, после успешного обновления сбрасываются в 6.

А когда оно выполнится, это обновление? когда пройдут все задания, не нуждающиеся в обновлениях source?

Проблема в том, что обновление одного source, от которого зависит несколько карт может заблокировать вообще всю обработку до своего завершения.
Я просто не знаю характерное время этих обновлений. Если они выполняются быстро - то можно и блокировать, потери времени будут небольшими. А вот если долго, то комп будет всё это время простаивать в ожидании, в то время как он мог бы заняться полезным делом.

Ещё можно перейти к очередям с приоритетами, тогда конвертация приоритетной карты запустится сразу после завершения обновления и освобождения очередного обработчика.

Обновление будет выполнятся параллельно с конвертацией других карт. А вот конвертация карт с обновлённым source уже будет после заданий без обновлений.

Добавил форматирование history - http://files.mail.ru/8813F2D528284DFDA98947100C1B57FC

Кажется я понял что нужно)

То что обновление выполняется параллельно с конвертацией других карт, это очень хорошо. Но после того как обновление source завершилось, задание должно переместиться не в конец очереди конвертаций, а в начало, и конвертация должна начаться сразу же, как одно из процессорных ядер освободится.

ок, это должно быть просто, вечером сделаю.

Супер, спасибо!

Багу нашел. съехали параметры вызова make.bat.

должно быть:
1=LT-FULL 2=“Lithuania” 3=LT-FULL 4=local-1.pbf 5=no 6=“–codepage=1251 --translit” 7=“” 8=299 9=2100324

Сейчас есть:
1=LT-FULL 2=Lithuania 3=LT-FULL 4=local-1.pbf 5=no 6=“–codepage=1251 --translit” 7=299 8=2100324 9=

7 - это ViewPoint, причем в кавычках.
2 - тоже в кавычках.

если это поправить, то может даже уже взлетит)

P.S.
zOsmStat, мало того что на VB6, так еще и не реентерабельный. Пишет в statistics.dat и в statistics.xml

Очередь с приоритетами добавил, параметры запуска поправил - http://files.mail.ru/8D456A7BC2FA44A290266C265BBF53B5

А это обязательно? Сейчас кавычки добавляются только при необходимости (наличие пробелов и т.п.).

Не нашёл Самарскую область на этой странице http://peirce.zkir.ru/qa

2 Sergey Astakhov,
Поставил в процесс, на peirce.zkir.ru/qa.

Может и не обязательно, посмотрим что получится. :slight_smile:

2 RSergei
Это мы экспериментируем, прямо на живых людях, см. выше. Должно скоро пересобраться.