View Issue Details

IDProjectCategoryView StatusLast Update
0002044SAS.ПланетаБаг / Bugpublic03-11-2013 19:25
ReporterPapazol Assigned Tovdemidov  
PrioritynormalSeveritytweakReproducibilityhave not tried
Status resolvedResolutionfixed 
PlatformWindowsOSXPOS VersionProfessional SP3
Product Version.Nightly 
Target Version131111Fixed in Version131111 
Summary0002044: Неожиданно прекращается загрузка в режиме Интернет+Кэш
DescriptionВ указанном режиме двигаюсь по снимку. Сначала тайлы нормально скачиваются и появляются на экране. Через некоторое время (не уверен, что дело тут во времени) после очередного сдвига карты пустые тайлы остаются пустыми, программа пишет, что осталось 0, дальнейшее движение карты не приводит к заполнению пустых тайлов. Однако с помощью Insert+ЛКМ тайлы загружаются. Если закрыть программу, а затем снова открыть, загрузка возобновляется.
Используется кэш Беркли неверсионный.
TagsNo tags attached.
Attached Files
SASPlanet.Debug.elf (74,974 bytes)

Relationships

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

Activities

Garl

21-07-2013 13:23

manager   ~0012157

такое поведение замечено не только на беркли
при сдвиге карт ыопределяется что надо скачать 32 тайла, затем сдвигам обратно (там где надо скачать 2-3 тайа) и бац! осталось скачать 0 тайлов!!!
хотя 2-3 так и осталиь не скачаными...

vdemidov

31-07-2013 08:22

manager   ~0012246

Нужно воспроизвести в дебажной версии. Сейчас там должны перехватываться ексепшены в фоновых потоках.

vdemidov

02-08-2013 11:13

manager   ~0012278

Кажись у меня самого воспроизвелось.

vdemidov

07-08-2013 08:20

manager   ~0012297

Итог изысканий: нужно или добавлять в листенеры синхронизазаторы, чтобы избежать вызова полсле того как владелец начал удаляться, или по возможности избегать ситуаций, когда удаляется владелец листенера, сейчас это происходит при пересоздании IBitmapProvider-ов, которое чаще всего происходит при обновлении векторных тайлов. Второй вариант мне нравится больше, тем более что он совпадает с моими планами, но и первым придется скорее всего воспользоваться.

vasketsov

09-08-2013 10:46

manager   ~0012315

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

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.

А возможно и байт как флаг смерти владельца туда можно будет всунуть.

vdemidov

09-08-2013 10:57

manager   ~0012316

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

vasketsov

09-08-2013 11:06

manager   ~0012317

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

>вообще уже есть такая вещь называется INotifierOneOperation
А почему тогда он в тех же экспортах не используется, ведь экспорт всегда как одна операция прерывается?

vdemidov

09-08-2013 11:15

manager   ~0012318

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

>А почему тогда он в тех же экспортах не используется, ведь экспорт всегда как одна операция прерывается?
Потому что позже появилось. Да и даунлодер и тп. расчитаны именно на пару AOperationID, ACancelNotifier.

vdemidov

09-08-2013 11:16

manager   ~0012319

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

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
08-08-2025 13:22 zed Category Баг => Баг / Bug