Two questions: 1) Do normal map tiles 'expire'? It'd be ideal if the app could check whether tiles were up to date if they're older than a certain age and still being used, though if that isn't possible just having an option to flush them after a year or so would be good.
2) Don't copy-on-write filesystems have terrible performance for databases? I read older versions of BTRFS were notorious, and Sailfish has an oldish one...
Files with a lot of random writes can become heavily fragmented (10000+ extents) causing trashing on HDDs and excessive multi-second spikes of CPU load on systems with an SSD or large amount a RAM.
I'm wondering whether creating a subvol without COW for the maps, or perhaps just tuning down the write frequency massively in the config file might help performance (not sure I'm brave enough to try the former - and I'm certainly not suggesting anyone else should, unless they know what they're doing...)
Disable it by mounting with nodatacow. This implies nodatasum as well. COW may still happen if a snapshot is taken. However COW will still be maintained for existing files, because the COW status can be modified only for empty or newly created files.
Love the app, but hitting some weird problems on sqlite where it seems to refuse to load tiles it has clearly loaded before. Still, I realise it's early days yet for the port. I'll try to capture some debug output if I can.
This is a log from when the database seems to 'lock up', apparently refusing to load tiles it has already downloaded. I'm not 100% sure how to trigger it, but generally scrolling around and zooming in and out in an area I haven't yet downloaded works reliably eventually. I've left it in that state for 1/2 hour probably, and it doesn't recover - though interestingly, it does seem to be able to load other tiles sometimes (e.g. if I zoom really far out) - it just seems to choke on certain particular areas of map, but after closing the program and relaunching it, and sometimes even just by zooming out then back in again, those areas of map will draw fine.
http://pastebin.com/dVuPYC4k Quite a few examples of this: Code: Traceback (most recent call last): File "modules/gui_modules/gui_qt5/gui_qt5.py", line 302, in _selectImageProviderCB return self._imageProviders[providerId].getImage(imageId, requestedSize) File "modules/gui_modules/gui_qt5/gui_qt5.py", line 599, in getImage log.exception() TypeError: exception() missing 1 required positional argument: 'msg' 2015-08-13 00:53:58,644 ERROR mod.gui.qt5: tile image provider: loading tile failed 2015-08-13 00:53:58,652 ERROR mod.gui.qt5: mainMap/mapnik/13/4094/2727 2015-08-13 00:53:58,655 ERROR mod.gui.qt5: (-1, -1) 2015-08-13 00:53:58,658 ERROR mod.gui.qt5: image loading failed, imageId: tile/mainMap/mapnik/13/4094/2727 Traceback (most recent call last): File "modules/gui_modules/gui_qt5/gui_qt5.py", line 579, in getImage download=False) File "modules/mod_mapTiles/mod_mapTiles.py", line 211, in getTile tileData = self._storeTiles.getTileData(lzxy) File "modules/mod_storeTiles.py", line 369, in getTileData return self._getTileDataFromSqlite(lzxy) File "modules/mod_storeTiles.py", line 385, in _getTileDataFromSqlite result = self.getTileFromDb(lookupConn, dbFolderPath, lzxy) File "modules/mod_storeTiles.py", line 455, in getTileFromDb (z, x, y)) sqlite3.OperationalError: database is locked
Traceback (most recent call last): File "modules/gui_modules/gui_qt5/gui_qt5.py", line 302, in _selectImageProviderCB return self._imageProviders[providerId].getImage(imageId, requestedSize) File "modules/gui_modules/gui_qt5/gui_qt5.py", line 599, in getImage log.exception() TypeError: exception() missing 1 required positional argument: 'msg' 2015-08-13 00:53:58,644 ERROR mod.gui.qt5: tile image provider: loading tile failed 2015-08-13 00:53:58,652 ERROR mod.gui.qt5: mainMap/mapnik/13/4094/2727 2015-08-13 00:53:58,655 ERROR mod.gui.qt5: (-1, -1) 2015-08-13 00:53:58,658 ERROR mod.gui.qt5: image loading failed, imageId: tile/mainMap/mapnik/13/4094/2727 Traceback (most recent call last): File "modules/gui_modules/gui_qt5/gui_qt5.py", line 579, in getImage download=False) File "modules/mod_mapTiles/mod_mapTiles.py", line 211, in getTile tileData = self._storeTiles.getTileData(lzxy) File "modules/mod_storeTiles.py", line 369, in getTileData return self._getTileDataFromSqlite(lzxy) File "modules/mod_storeTiles.py", line 385, in _getTileDataFromSqlite result = self.getTileFromDb(lookupConn, dbFolderPath, lzxy) File "modules/mod_storeTiles.py", line 455, in getTileFromDb (z, x, y)) sqlite3.OperationalError: database is locked
Side note: Due to a bug, it seems it's currently impossible to send the logs via the Jolla mail client using gmail, unless you rename them (removing the #). https://together.jolla.com/question/...ent-via-gmail/
I guess there wont be any further updates for modRana for Meego!?? Is it possible to use offline map data, lets say from here http://download.geofabrik.de/ ?