View Issue Details

IDProjectCategoryView StatusLast Update
0002504SACS.ПланетаБаг / Bugpublic16-04-2015 00:24
ReporterLeontiy Assigned Tovasketsov  
PriorityhighSeveritycrashReproducibilityalways
Status closedResolutionwon't fix 
PlatformWindowsOSXPOS VersionSP3
Summary0002504: При работе на сетевом диске в многопользовательском режиме метки сохраняются у последнего кто вышел из программы
DescriptionУстановил SACS.Planet.Nightly.140202.783 на сетевой диск. При работе двух пользователей метки сохраняются у того кто вышел из программы последний. При выходе первого выскакивает сообщение в трее: "windows - ошибка отложенной записи. Не удалось сохранить все данные файла \путь к файлу\MarksDB.sqlitedb-shm. Часть данных потеряна. Эта ошибка может быть вызвана отказом оборудования компьютера или сетевого подключения. Попытайтесь сохранить".
TagsNo tags attached.

Relationships

related to 0002420 closedvasketsov Сохранение меток в многопользовательском режиме 

Activities

zed

24-09-2014 06:57

manager   ~0014673

А потому что SQLite не предназначен для работы на сетевых дисках.

Leontiy

24-09-2014 10:23

reporter   ~0014674

Ясно! А в ближайшем будущем можно ожидать такой работы от SAS/SACS? Или имеется другой способ работы на сетевых дисках?

zed

24-09-2014 18:33

manager   ~0014675

Кто ж его знает, что там будет в будущем и чего от него можно ожидать. Следите за ночнушками.

Leontiy

24-09-2014 22:46

reporter   ~0014676

Буду следить и ждать реализации! Спасибо за разъяснение.

vasketsov

24-11-2014 18:46

manager   ~0014992

Напишите сюда, что именно у Вас в файлике MarksDB.sqlitedb.conn.sql содержится.

>SQLite не предназначен для работы на сетевых дисках
Ну, всё же не всё настолько плохо.

vasketsov

24-11-2014 18:48

manager   ~0014993

Референсное содержимое должно быть такое:
PRAGMA page_size=1024
;
PRAGMA cache_size=100000
;
PRAGMA main.journal_mode=WAL
;
PRAGMA synchronous=NORMAL
;

zed

24-11-2014 19:22

manager   ~0014996

> Ну, всё же не всё настолько плохо.

По крайней мере на виндах, всё плохо.

Atomic Commit In SQLite

9.1 Broken Locking Implementations

SQLite uses filesystem locks to make sure that only one process and database connection is trying to modify the database at a time. The filesystem locking mechanism is implemented in the VFS layer and is different for every operating system. SQLite depends on this implementation being correct. If something goes wrong and two or more processes are able to write the same database file at the same time, severe damage can result.

We have received reports of implementations of both Windows network filesystems and NFS in which locking was subtly broken. We can not verify these reports, but as locking is difficult to get right on a network filesystem we have no reason to doubt them. You are advised to avoid using SQLite on a network filesystem in the first place, since performance will be slow. But if you must use a network filesystem to store SQLite database files, consider using a secondary locking mechanism to prevent simultaneous writes to the same database even if the native filesystem locking mechanism malfunctions.

The versions of SQLite that come preinstalled on Apple Mac OS X computers contain a version of SQLite that has been extended to use alternative locking strategies that work on all network filesystems that Apple supports. These extensions used by Apple work great as long as all processes are accessing the database file in the same way. Unfortunately, the locking mechanisms do not exclude one another, so if one process is accessing a file using (for example) AFP locking and another process (perhaps on a different machine) is using dot-file locks, the two processes might collide because AFP locks do not exclude dot-file locks or vice versa.

vasketsov

24-11-2014 19:52

manager   ~0014997

Читать надо тут:
http://sqlite.org/wal.html
Но в принципе ты прав, 100% работа не гарантируется.
Для настоящей многопользовательской работы надо в СУБД метки совать.
Но пока совсем не до этого.

vasketsov

24-11-2014 19:56

manager   ~0014998

Попробуйте программу установить не на сетевой диск, а каждому локально.
После этого в ini пропишите пути до карт, меток и т.п., которые должны соответствовать общему сетевому диску.
Поработайте.
О результатах доложите.

vasketsov

16-04-2015 00:23

manager   ~0015586

Пожалуй закрою, чтобы не висело.
Всё равно скоро метки в СУБД уедут.

Issue History

Date Modified Username Field Change
24-09-2014 06:52 Leontiy New Issue
24-09-2014 06:57 zed Note Added: 0014673
24-09-2014 10:23 Leontiy Note Added: 0014674
24-09-2014 18:33 zed Note Added: 0014675
24-09-2014 22:46 Leontiy Note Added: 0014676
24-11-2014 18:46 vasketsov Note Added: 0014992
24-11-2014 18:48 vasketsov Note Added: 0014993
24-11-2014 18:53 vasketsov Relationship added related to 0002420
24-11-2014 19:22 zed Note Added: 0014996
24-11-2014 19:52 vasketsov Note Added: 0014997
24-11-2014 19:56 vasketsov Note Added: 0014998
16-04-2015 00:23 vasketsov Note Added: 0015586
16-04-2015 00:23 vasketsov Status new => closed
16-04-2015 00:24 vasketsov Assigned To => vasketsov
16-04-2015 00:24 vasketsov Resolution open => won't fix
08-08-2025 13:22 zed Category Баг => Баг / Bug