SASGIS - SAS.Планета
View Issue Details
0003246SAS.Планета[All Projects] Багpublic27-06-2017 10:5729-08-2017 10:49
aflexus 
zed 
normalminoralways
resolvedfixed 
Windows7Ultimate
160707 
181221181221 
0003246: Управление кешем. Сброс даты тайла при импорте в БД
При импорте тайлов из обычного кеша в базу данных (проверено на sqlite и berkley), их дата в базе устанавливается как текущая.

Понятно, что при получении тайла из интернета так и должно быть. Но не при работе через "Управление кешем".


Интересно, что при экспорте ИЗ бд в обычный кеш, дата создания тайлов устанавливается та, что есть в базе. А вот обратно - нет.
No tags attached.
Issue History
27-06-2017 10:57aflexusNew Issue
15-08-2017 14:31zedNote Added: 0018028
15-08-2017 14:31zedAssigned To => zed
15-08-2017 14:31zedStatusnew => feedback
19-08-2017 14:13aflexusNote Added: 0018034
19-08-2017 14:13aflexusStatusfeedback => assigned
19-08-2017 14:14aflexusNote Edited: 0018034bug_revision_view_page.php?bugnote_id=18034#r7193
19-08-2017 14:15aflexusNote Edited: 0018034bug_revision_view_page.php?bugnote_id=18034#r7194
19-08-2017 14:21zedNote Added: 0018035
19-08-2017 14:25aflexusNote Added: 0018036
19-08-2017 14:33aflexusNote Edited: 0018036bug_revision_view_page.php?bugnote_id=18036#r7196
19-08-2017 14:35aflexusNote Edited: 0018036bug_revision_view_page.php?bugnote_id=18036#r7197
19-08-2017 14:40zedNote Added: 0018037
29-08-2017 10:48zedNote Added: 0018044
29-08-2017 10:49zedStatusassigned => resolved
29-08-2017 10:49zedFixed in Version => 181221
29-08-2017 10:49zedResolutionopen => fixed
29-08-2017 10:49zedProduct Version.Nightly => 160707
29-08-2017 10:49zedTarget Version => 181221
29-08-2017 10:49zedSummaryУправление кешем. Сброс даты тайла при импорте в бд. => Управление кешем. Сброс даты тайла при импорте в БД

Notes
(0018028)
zed   
15-08-2017 14:31   
У тайлов, которые хранятся на диске, есть 2 даты: дата создания и дата последнего изменения. И возможна ситуация, когда дата изменения меньше даты создания (т.е. первая "2014 год", а вторая "2017 год"). Такое происходит при копировании тайлов средствами Windows - дата создания всегда устанавливается равной текущей дате. Хотя в проводнике по прежнему отображается дата последнего изменения.

Далее, при чтении даты тайла в SAS считываются обе эти даты и выбирается максимальная. Видимо, именно из-за этого и возникает такая ситуация. Код выбора даты писал vasketsov и почему он решил использовать максимальную, а не минимальную дату, мне не известно. Но выбор был явный, это не случайная описка.

Соответственно, мне нужно от вас подтверждение, что вы наблюдаете именно такую ситуацию, где дата создания файла равна текущей дате и эта же дата попадает к БД при конвертировании. Или у вас другой случай и обе даты не равны текущей, но в БД всё равно записывается текущая.
(0018034)
aflexus   
19-08-2017 14:13   
(edited on: 19-08-2017 14:15)
Вот тесты

Импорт в бд тайлового кеша:

Last write time - Creation time - BD time
01.06.2015 0:00:00 - 02.06.2016 0:00:00 - 02.06.2016 (0:00:00)
01.07.2017 0:00:00 - 02.06.2016 0:00:00 - 01.07.2017 (0:00:00)

Экспорт из бд в дайловый кеш:

BD time - Last write time - Creation time
02.06.2016 (0:00:00) - 01.06.2016 21:00:00 - текущее
01.07.2017 (0:00:00) - 30.06.2017 21:00:00 - текущее

Время в скобочках в базе подразумевается, что именно такое (в саму базу не смотрел), ибо эти бд делал из файловых с предустановленным временем 0:00:00.

(0018035)
zed   
19-08-2017 14:21   
Т.е. в БД записывается максимальная дата тайла, а не текущая (как вы это описали в подробностях тикета). И вы хотите, чтобы записывалась минимальная?
(0018036)
aflexus   
19-08-2017 14:25   
(edited on: 19-08-2017 14:35)
Да, при импорте в БД так и есть - записывается масимальная дата из даты создания и даты последней записи в файл (даты изменения).

При экспорте дата изменения почти равна (минус три часа сдвига часового пояса пока не учитываем) дате тайла в бд, а вот дата создания устанавливается текущая. Что в целом, логично.

И вот тут получается ерунда. По-сути, датой тайла является дата его изменения. И при экспорте именно она и устанавливаетя. Но почему же тогда при импорте берется большее из значений?! Выходит, просто скопировав тайловый кеш 2010 года на другой диск и после импортировав его в БД, он, вдруг, становится кешем 2017-ого? Хотя если посмотреть на работу этого же самого "скопированного" кеша в самой программе, то он работает корректно (т.е. именно 2010 год, если фильтровать по дате)

Другими словами, при импорте в БД, более логично было бы брать не минимальную или максимальную, а именно дату ИЗМЕНЕНИЯ файла. Тогда даты тайлов при экспорте/импорте/копировании теряться не будут.

А вот почему до этого бралось максимальное значение из двух надо уточнить у vasketsov. Быть может что-то я не понимаю.

(0018037)
zed   
19-08-2017 14:40   
Мне тоже кажется логичным ориентироваться на дату изменения тайла. На дату же создания смотреть только если вдруг дата изменения отсутствует (если такое возможно). И сравнение дат на максимальную или минимальную вообще убрать. Тогда не будет никаких глюков с датой при импорте/экспорте. Но надо подумать, будут ли какие нюансы в других режимах работы (например, при перезакачке/обновлении тайлов) и не сломается ли тогда что-нибудь другое.
(0018044)
zed   
29-08-2017 10:48   
Убрал сравнение дат. Теперь SAS будет вначале смотреть на дату последнего изменения тайла, если эта дата по каким-то причинам не доступна, то потом будет проверяться дата создания тайла. Т.е. выбираться будет только одна из них, а не максимальная.