View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0002044SAS.Планета[All Projects] Багpublic21-07-2013 12:4503-11-2013 19:25
ReporterPapazol 
Assigned Tovdemidov 
PrioritynormalSeveritytweakReproducibilityhave not tried
StatusresolvedResolutionfixed 
PlatformWindowsOSXPOS VersionProfessional SP3
Product Version.Nightly 
Target Version131111Fixed in Version131111 
Summary0002044: Неожиданно прекращается загрузка в режиме Интернет+Кэш
DescriptionВ указанном режиме двигаюсь по снимку. Сначала тайлы нормально скачиваются и появляются на экране. Через некоторое время (не уверен, что дело тут во времени) после очередного сдвига карты пустые тайлы остаются пустыми, программа пишет, что осталось 0, дальнейшее движение карты не приводит к заполнению пустых тайлов. Однако с помощью Insert+ЛКМ тайлы загружаются. Если закрыть программу, а затем снова открыть, загрузка возобновляется.
Используется кэш Беркли неверсионный.
TagsNo tags attached.
Attached Files? file icon SASPlanet.Debug.elf [^] (74,974 bytes) 02-08-2013 11:12

- Relationships
parent of 0002068resolvedvdemidov Избавиться от пересоздания IBitmapProvider в слоях 

-  Notes
(0012157)
Garl (manager)
21-07-2013 13:23

такое поведение замечено не только на беркли
при сдвиге карт ыопределяется что надо скачать 32 тайла, затем сдвигам обратно (там где надо скачать 2-3 тайа) и бац! осталось скачать 0 тайлов!!!
хотя 2-3 так и осталиь не скачаными...
(0012246)
vdemidov (manager)
31-07-2013 08:22

Нужно воспроизвести в дебажной версии. Сейчас там должны перехватываться ексепшены в фоновых потоках.
(0012278)
vdemidov (manager)
02-08-2013 11:13

Кажись у меня самого воспроизвелось.
(0012297)
vdemidov (manager)
07-08-2013 08:20

Итог изысканий: нужно или добавлять в листенеры синхронизазаторы, чтобы избежать вызова полсле того как владелец начал удаляться, или по возможности избегать ситуаций, когда удаляется владелец листенера, сейчас это происходит при пересоздании IBitmapProvider-ов, которое чаще всего происходит при обновлении векторных тайлов. Второй вариант мне нравится больше, тем более что он совпадает с моими планами, но и первым придется скорее всего воспользоваться.
(0012315)
vasketsov (manager)
09-08-2013 10:46

Может быть по первому варианту тебе даже удастся сделать один легковесный объект типа

TCancellableOperation = record
private
  FOperationID: Integer;
  FCancelNotifier: INotifierOperation;
strict private
  function GetIsCancelled: Boolean;
public
  property IsCancelled: Boolean read GetIsCancelled;
end;

или аналогичный интерфейсный объект, чтобы его одного передавать как const вместо пары

const AOperationID: Integer;
const ACancelNotifier: INotifierOperation;

?

Смысл в том, чтобы передавать всё для отбоя в рамках одной сущности, и чтобы она же проверяла сама себя внутри IsCancelled на кончину, без ненужного вытаскивания наружу OperationID и CancelNotifier.

А возможно и байт как флаг смерти владельца туда можно будет всунуть.
(0012316)
vdemidov (manager)
09-08-2013 10:57

Не, я такого делать не хочу. Пару
const AOperationID: Integer;
const ACancelNotifier: INotifierOperation;
можно передать в любую dll на любом языке без проблем, а тот рекорд, который предлагаешь ты чисто делфовая структура, а интерфейсный объект ИМХО не стоит создавать каждый раз, но вообще уже есть такая вещь называется INotifierOneOperation.
(0012317)
vasketsov (manager)
09-08-2013 11:06

>можно передать в любую dll на любом языке без проблем
Если честно - не вижу принципиальных отличий в передаче. Там SizeOf как у обычного record-а, все эти IsCancelled вообще никуда не упираются. При передаче только как const вообще никаких проблем не прогнозируется.

>вообще уже есть такая вещь называется INotifierOneOperation
А почему тогда он в тех же экспортах не используется, ведь экспорт всегда как одна операция прерывается?
(0012318)
vdemidov (manager)
09-08-2013 11:15

>>можно передать в любую dll на любом языке без проблем
>Если честно - не вижу принципиальных отличий в передаче. Там SizeOf как у обычного record-а, все эти IsCancelled вообще никуда не упираются. При передаче только как const вообще никаких проблем не прогнозируется.
Может быть, но мне лень переделывать.

>А почему тогда он в тех же экспортах не используется, ведь экспорт всегда как одна операция прерывается?
Потому что позже появилось. Да и даунлодер и тп. расчитаны именно на пару AOperationID, ACancelNotifier.
(0012319)
vdemidov (manager)
09-08-2013 11:16

PS: В данном инциденте это полный оффтопик ибо никакого отношения к проблеме не имеет.

- Users who viewed this issue
User List Anonymous (1492x)
Total Views 1492
Last View 26-01-2020 00:00

- Issue History
Date Modified Username Field Change
21-07-2013 12:45 Papazol New Issue
21-07-2013 13:23 Garl Note Added: 0012157
31-07-2013 08:22 vdemidov Note Added: 0012246
31-07-2013 08:22 vdemidov Status new => feedback
02-08-2013 11:12 vdemidov File Added: SASPlanet.Debug.elf
02-08-2013 11:13 vdemidov Note Added: 0012278
02-08-2013 11:13 vdemidov Status feedback => confirmed
02-08-2013 11:13 vdemidov Target Version => 131111
07-08-2013 08:20 vdemidov Note Added: 0012297
07-08-2013 08:28 vdemidov Assigned To => vdemidov
07-08-2013 08:28 vdemidov Status confirmed => assigned
09-08-2013 06:58 vdemidov Relationship added parent of 0002068
09-08-2013 10:46 vasketsov Note Added: 0012315
09-08-2013 10:57 vdemidov Note Added: 0012316
09-08-2013 11:06 vasketsov Note Added: 0012317
09-08-2013 11:15 vdemidov Note Added: 0012318
09-08-2013 11:16 vdemidov Note Added: 0012319
03-11-2013 19:25 vdemidov Status assigned => resolved
03-11-2013 19:25 vdemidov Fixed in Version => 131111
03-11-2013 19:25 vdemidov Resolution open => fixed



Copyright © 2007 - 2020 SAS.Planet Team