View Issue Details

IDProjectCategoryView StatusLast Update
0001874SAS.ПланетаХотелка / Feature requestpublic21-02-2014 21:08
ReporterParasite Assigned Tozed  
PrioritynormalSeveritytweakReproducibilityN/A
Status resolvedResolutionfixed 
PlatformWindowsOSServerOS Version2003
Product Version121010 
Target Version131111Fixed in Version131111 
Summary0001874: Berkeley cache: READ-ONLY
DescriptionДостала порча кэша при малейшем глюке САСа\системы и аварийном выходе по трем кнопкам, и последующие многодневные(!) проверки куч оного кэша при восстановлении. Любой зависон САСа и выход по трем кнопкам - извольте каждый раз восстановиться по всему активному на момент выхода кэшу. Это в моем случае занимает около недели причесывания кэша зедовой восстановлялкой - уж больно большой кэш...

Делать же его жестко рид-онли со стороны системы - чревато глюками уже в самом САСе.

Вот если бы сделать так, чтобы САС его мог открывать свой Беркли-кэш только на чтение...Никакая авария не страшна была бы.
Additional InformationПроблему разумлю в том, что кэш САСом всегда открывается как R\W - и при малейшей аварии извольте получить результаты в виде незавершенных сессий\транзакций и проч., даже если изменения кэша по факту даже и не планировалось.
TagsBerkeleyDB, ini, read only, БД, авария, краш, настройки, стабильность, только чтение
Attached Files
StorageConfig.ini (129 bytes)

Activities

zed

08-04-2013 17:21

manager   ~0011044

Вопрос, как это лучше сделать. Причём, нужно что-то универсальное, чтобы работало на любом кэше, а не только в Беркли.

Лучшее, что приходит на ум - создавать в папке с кэшем (cache\sat\) файлик abilities.ini и хранить там пользовательские настройки доступа к кэшу.

Вариант хранить эти настройки где-либо ещё (в zmp, к примеру) не прокатывает из-за возможности доступа к одному и тому же кэшу как из разных карт, так и из разных САСов, у которых могут быть абсолютно независимые настройки, и единственное, что их может объединять это папка с кэшем.

У кого какие мысли?

vasketsov

08-04-2013 17:55

manager   ~0011045

>создавать в папке с кэшем ... файлик .. и хранить там ... настройки доступа к кэшу
Абсолютно верное решение.
Несомненным плюсом будет автоподхватывание при использовании всяких вторичных точек разбора (типа линков и сетевых шар), а также эти настройки будут копироваться при миграции кэша или бэкапировании простым копированием файлов батником. Да и при работе менеджера кэша (который плевать хотел на zmp) тоже будут использоваться эти настройки.
Что-то смущает?

zed

08-04-2013 18:01

manager   ~0011046

Смущает то, что из САСа нельзя будет редактировать этот файлик. Т.е. менять настройки на лету. Иначе, придётся как-то изворачиваться с системой оповещения об изменениях (если такая вообще возможна). А хотелось бы управлять этим режимом прямо из настроек.

Плюс, надо как-то блокировать доступ на редактирование этого файлика, пока запущен хоть один экземпляр программы.

vasketsov

08-04-2013 18:20

manager   ~0011047

Так наоборот всё логично получается. Кэш как единая сущность - только для чтения. Эта настройка никакого отношения к конкретному сасу в принципе не может иметь. И на лету править это нелогично. Если запущены несколько сасов - надо пройти и во всех включить доступ, или как? А если между сасами доступа нет, и никак извещение не послать?

>хотелось бы управлять этим режимом прямо из настроек
Ну и будет что-то типа старых флагов в zmp )))

>что-то универсальное, чтобы работало на любом кэше
Зачем? Все файловые вроде как нормально реагируют на то, что права на запись оборваны (разве что неуместный вызов ForceDirectories может нагадить, но это отдельный вопрос). У СУБД свои настройки прав. Для SQLite есть возможность родной настройки работы без доступа на запись. Для GE и GC в принципе неприменимо, они без записи. Только беркли и остаётся. Так что имеет смысл что-нибудь именно для беркли придумать, не обязательно только readonly, там наверняка есть ещё специфичные настройки, например тот же размер страницы. Ну а появится BigData или LocalDB или Tokyo/Kyoto или ещё какая муть - там опять же будут _свои_ специфичные настройки. Заодно не будет проблем, если в одной папке хранить кэши разного типа и переключаться между ними (например один только для чтения, второй - нет).

vdemidov

08-04-2013 18:51

manager   ~0011050

Кстати, я давно хочу писать в папочку кэша информацию о проекции и типе данных, что бы оно выдавало предупреждение.

zed

08-04-2013 18:55

manager   ~0011051

Ну, если там начать сохранять content-type, то менеджеру кэша сильно полегчает - не нужно будет вручную прописывать расширение для каждого хранилища.

xromeo

13-04-2013 18:09

reporter   ~0011072

А я вот сейчас озадачен вариантом "Делать же его жестко рид-онли со стороны системы - чревато глюками уже в самом САСе." - вот хотелось бы, чтобы как раз в этом случае глюков в САСе не было. Актуально в случае расшаривания кэша с правами доступа "Только чтение" для использования на многих других компах в локальной сети. Сейчас кэш хранится тайловый, и проблем нет, но хотелось бы перегнать в Berkeley и чтобы эта схема по-прежнему работала.

zed

14-06-2013 12:12

manager   ~0011662

Итак, чтобы включить Read-Only режим для кэша Беркли, нужно:
- закрыть SAS
- создать файлик \cache_db\%имя_папки_с_кэшем%\StorageConfig.ini
- записать в тот файлик пару строк:
[BerkeleyDB]
IsReadOnly=1

Всё - при следующем запуске, кэш откроется только для чтения.

zed

14-06-2013 12:18

manager   ~0011663

Приложил файлик StorageConfig.ini со всеми дефолтными параметрами. Можно пробовать изменять. Единственное, рекомендую не трогать параметр DatabasePageSize на живом кэше.

Parasite

22-10-2013 14:12

administrator   ~0013115

Реально ли это делать по-зумно? Например, один зум качаем - а остальные (уже укачанные, у той же карты) как-то сделать R/O?

zed

22-10-2013 17:12

manager   ~0013116

Там каждый файл БД можно открывать в RO по-отдельности, но практического смысла это не имеет - SAS не открывает файлы БД до тех пор, пока ему действительно в них чего-то там не понадобится. Поэтому ты можешь открыть SAS на z1, загрузить область выделения, запустить закачку и ничего больше не трогать - у тебя будут открываться только те sdb, в которые реально нужно что-то записать и которые попадают в твою выделенную область. Ничего другого SAS открывать не станет. Поэтому реально ты рискуешь толь z1, а если и за него стрёмно - включи другую карту в гуе в RO (или RW), для осмотреться и стартануть закачку. Так что тут ничего выдумывать не нужно.

zed

21-02-2014 19:35

manager   ~0013837

Обращаю внимание, что первоначальная идея RO кэша сломана: 0002014:0013835 т.е. теперь эта настройка внезапно переместилась в zmp, что по моему мнению не есть хорошо.

vdemidov

21-02-2014 21:08

manager   ~0013839

Не совсем так. RO можно задать в zmp, в Maps.ini, а сейчас в StorageConfig.ini (поменялось только имя секции, раньше оно было в секции [BerkeleyDB], а сейчас будет в [Common]

Issue History

Date Modified Username Field Change
03-04-2013 16:27 Parasite New Issue
03-04-2013 16:27 Parasite Status new => assigned
03-04-2013 16:27 Parasite Assigned To => zed
07-04-2013 10:05 vdemidov Product Version => 121010
07-04-2013 10:05 vdemidov Target Version => 41xxxx
08-04-2013 17:21 zed Note Added: 0011044
08-04-2013 17:55 vasketsov Note Added: 0011045
08-04-2013 18:01 zed Note Added: 0011046
08-04-2013 18:20 vasketsov Note Added: 0011047
08-04-2013 18:51 vdemidov Note Added: 0011050
08-04-2013 18:55 zed Note Added: 0011051
13-04-2013 18:09 xromeo Note Added: 0011072
14-06-2013 12:12 zed Note Added: 0011662
14-06-2013 12:13 zed File Added: StorageConfig.ini
14-06-2013 12:18 zed Note Added: 0011663
15-06-2013 15:55 zed Status assigned => resolved
15-06-2013 15:55 zed Fixed in Version => 131111
15-06-2013 15:55 zed Resolution open => fixed
20-06-2013 06:58 vdemidov Target Version 41xxxx => 131111
07-08-2013 16:36 zed Tag Attached: BerkeleyDB
07-08-2013 16:36 zed Tag Attached: ini
07-08-2013 16:36 zed Tag Attached: БД
07-08-2013 16:36 zed Tag Attached: настройки
07-08-2013 21:41 cycler Tag Attached: авария
07-08-2013 21:41 cycler Tag Attached: краш
07-08-2013 21:41 cycler Tag Attached: стабильность
07-08-2013 21:44 cycler Tag Attached: read only
07-08-2013 21:44 cycler Tag Attached: только чтение
22-10-2013 14:12 Parasite Note Added: 0013115
22-10-2013 17:12 zed Note Added: 0013116
21-02-2014 19:35 zed Note Added: 0013837
21-02-2014 21:08 vdemidov Note Added: 0013839
08-08-2025 13:24 zed Category Хотелка => Хотелка / Feature request