View Issue Details

IDProjectCategoryView StatusLast Update
0001023SAS.ПланетаБаг / Bugpublic10-10-2012 11:43
ReporterGarl Assigned Tovdemidov  
PriorityurgentSeveritymajorReproducibilitysometimes
Status closedResolutionfixed 
PlatformWindowsOS7OS VersionProfessional
Product Version110418 
Target Version120808Fixed in Version120808 
Summary0001023: При одновременном запуске двух копий программы удаляются все метки
Descriptionпо пунктам:
1) из quicklaunch запускается по двойному клику 2 копии программы.

естественно файл с метками огромный и машина загружена конвертированием и файловыми операциями по самые гланды
обе копии запускаются крайне медленно порядка 10-15 секунд
в иотоге запускаются обе

2) закрываем первую копию. открываем во второй копии параметры меток и видим что метки исчезли..

и вот тут одно но:

файл с метками пока не закрыть программу , всё ещё содержит данные, а как только мы программу закрываем, она перезаписывает метки!
Additional Informationпредложение или задавать вопрос при закрытии программы с пустыми метками и наличием "набитого" marks.sml
или не перезаписывать его(что неправильно)
или создавать что нибудь типа .loc файла на время монопольной работы с файлом меток
или не давать запускать вторую копию программы из одного и того же места с одним и тем же названием .exe

предложения рассматриваются.
подтверждения бага ожидаются.
Tagsдоступ

Activities

bk99

26-10-2011 14:51

reporter   ~0004185

Во ты попал!
И что - все свои метки похерил?!
Сочувствую!

Примерил ситуёвину на себя и содрогнулся!
(Проверить не решился)

Garl

26-10-2011 15:55

manager   ~0004186

это уже воспроизведение бага к которому был готов.
ситуацию спасло то что метку были заблаговременно скопированы на домашний комп.

zed

26-10-2011 16:42

manager   ~0004187

>не давать запускать вторую копию программы
Сделать в виде опции, включённой по умолчанию. Причём, не просто с одним и тем же именем exe или одной и той же папки, а глобально: http://www.delphisources.ru/pages/faq/base/only_one_app_instance2.html

Garl

26-10-2011 16:54

manager   ~0004188

Last edited: 26-10-2011 17:15

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

Fetser

26-10-2011 17:11

reporter   ~0004189

Совершенно верно метки удаляются если две копии закрывать в том же порядке что и запускаешь. Если сначала закрыть вторую копию потом первую метки остаются и такая неприятность только в последней ночной сборке.
в версии 111022.4467 всё нормально

vasketsov

26-10-2011 17:36

manager   ~0004190

А какие именно операции при запуске программы требуют монопольный доступ к меткам и почему? Налицо два читателя меток, которые по идее не должны друг другу гадить. Мало ли какое приложение ещё захочет вычитать из-под саса метки.

Garl

26-10-2011 17:54

manager   ~0004191

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

vasketsov

26-10-2011 19:32

manager   ~0004192

>читает(считай монопольно)
не вижу логики в монопольном чтении меток при старте программы

>проверка на занятость фала бы не помешала
ну в общем случае конечно не помешала бы, но это как бы уже немного другой вопрос (не вторичный, не первичный, а просто ортогональный ненужной блокировке меток от параллельного чтения)

Tolik

27-10-2011 06:37

manager   ~0004193

Надо запрещать запуск двух программ (даже с разным именем) из одной папки, а из разных папок запрещать не надо.

Snake

27-10-2011 06:57

reporter   ~0004194

Одновременное использование файла с метками может произвести к путанице.
Например две программы №1 и №2 прочитали файл с метками.
Далее в программе №1 добавили метку, после чего закрываем программу №1 и она сохраняет "свои" метки, а программа №2 об добавленой метке ничего не знает и при закрытии перезапишет файл "своими" метками. Таким образом добавленая метка пропала.
А если добавлялись и удалялись метки в обоих программах, то вообще кошмар.
Тут на мой взгляд нужно:
1.либо существенно усложнять программу, назначать главную копию программы (сервер) и она будет обрабатывать сообщения об добавлении/удалении/изменении метки и предавать информацию в другие копии программы (клиенты).(усложнение это всегда новые ошибки, а иногда переписывание огромной части программы, что в свою очередь опять приводит к новым ошибкам)
2.либо все изменения сохранять в дополнительный временный файл котрый будет доступен всем копиям, а копия программы которая будет закрыта последней "решает", какие изменения записать в конечный файл.(тоже достаточное усложнение)
3.либо первая программа имеет полный доступ к метка, а все копии только чтение. (самый простой вариант), только решить вопрос с проверкой на занятость файла и дождатся пока освободится.

zed

27-10-2011 07:00

manager   ~0004196

4. Либо хранить метки в базе данных, поддерживающей многопользовательский доступ к меткам.

Tolik

27-10-2011 08:08

manager   ~0004203

№3 вполне достаточно.

Garl

27-10-2011 08:33

manager   ~0004204

4 интереснее.

vdemidov

27-10-2011 08:38

manager   ~0004205

>4 интереснее.
И какой сервер баз данных ставить пользователю? Вообще подсистему меток нужно выносить в плагины. Я в последнее много делал в этом направлении, но пока далеко не все что нужно для этого.

zed

27-10-2011 11:51

manager   ~0004207

Last edited: 27-10-2011 11:52

>сервер баз данных
Если метки в сети и это некая корпоративная сеть, то однозначно MySQL, если просто нужно запускать несколько копий на одном компе, то можно и без сервера - BerkeleyDB. Кстати, начал эту берклевскую базу подробнее изучать и буду наверное пробовать делать кэш на ней.
 
>Вообще подсистему меток нужно выносить в плагины
Да, это лучше всего, так же как и подсистему кэша с подсистемой качалки :)

Fetser

27-10-2011 12:23

reporter   ~0004208

После реализации хотелки 0000033 (Загрузка меток через командную строку) Возможно хранение меток в виде файлов KMZ сортируя их по папкам. Конечно при возможности импорта сразу нескольких KMZ одновременно. Тогда необходимость в самой базе меток становится не так актуальна.
Выигрыш и в скорости работы с метками и в многопользовательском доступе (если разные пользователи одновременно работают с разными KMZ они не мешают друг другу.)вероятность одновременного сохранения KMZ с одним именем снижается в разы.

Issue History

Date Modified Username Field Change
26-10-2011 13:56 Garl New Issue
26-10-2011 14:51 bk99 Note Added: 0004185
26-10-2011 15:55 Garl Note Added: 0004186
26-10-2011 16:42 zed Note Added: 0004187
26-10-2011 16:54 Garl Note Added: 0004188
26-10-2011 17:11 Fetser Note Added: 0004189
26-10-2011 17:15 Garl Note Edited: 0004188
26-10-2011 17:36 vasketsov Note Added: 0004190
26-10-2011 17:54 Garl Note Added: 0004191
26-10-2011 19:32 vasketsov Note Added: 0004192
27-10-2011 06:37 Tolik Note Added: 0004193
27-10-2011 06:57 Snake Note Added: 0004194
27-10-2011 07:00 zed Note Added: 0004196
27-10-2011 08:08 Tolik Note Added: 0004203
27-10-2011 08:33 Garl Note Added: 0004204
27-10-2011 08:38 vdemidov Note Added: 0004205
27-10-2011 11:51 zed Note Added: 0004207
27-10-2011 11:52 zed Note Edited: 0004207
27-10-2011 12:23 Fetser Note Added: 0004208
29-10-2011 08:28 gpsMax Summary при одновременном запуске двух копий программы удаляются все метки => При одновременном запуске двух копий программы удаляются все метки
29-10-2011 08:33 gpsMax Additional Information Updated
28-06-2012 22:09 vdemidov Status new => resolved
28-06-2012 22:09 vdemidov Fixed in Version => 120808
28-06-2012 22:09 vdemidov Resolution open => fixed
28-06-2012 22:09 vdemidov Assigned To => vdemidov
28-06-2012 22:10 vdemidov Product Version .Nightly => 110418
28-06-2012 22:10 vdemidov Target Version => 120808
07-07-2012 11:56 gpsMax Tag Attached: доступ
10-10-2012 11:43 Tolik Status resolved => closed
08-08-2025 13:22 zed Category Баг => Баг / Bug