<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:SimSun;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:SimSun;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:"\@SimSun";
panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri","sans-serif";
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Dear MapProxy mail list subscribers,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I have been using MapProxy with Mapnik as source to serve and generate map tiles. <o:p></o:p></p><p class=MsoNormal>I am in a situation that every now and then, my OpenLayers frontend fails to load one or two tiles if the tile needs to be generated by Mapnik on the fly, resulting a blank square on my map. But a simple zooming in and out could make the missing tile to show correct. It makes me feel the tile has been generated, but just didn’t get sent to client.<o:p></o:p></p><p class=MsoNormal>I have been trying for a while but failed to resolve. I would like to ask your opinion on this problem.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><b>Environment:<o:p></o:p></b></p><p class=MsoNormal>Windows 7 x64<o:p></o:p></p><p class=MsoNormal>Python 2.7.6<o:p></o:p></p><p class=MsoNormal>MapProxy 1.6 and 1.5<o:p></o:p></p><p class=MsoNormal>Mapnik 2.2<o:p></o:p></p><p class=MsoNormal>Running MapProxy in “mapproxy-util serve-develop” or using IIS with isapi-wsgi.<o:p></o:p></p><p class=MsoNormal>OpenLayers in the MapProxy Demo page or new release of OpenLayers<o:p></o:p></p><p class=MsoNormal>Server and Client both on localhost<o:p></o:p></p><p class=MsoNormal>And my MapProxy yaml config:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-size:10.0pt'>services:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> demo:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> kml:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> tms:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> wmts:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> wms:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> md:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> title: MapProxy WMS Proxy<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> abstract: This is the fantastic MapProxy.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> online_resource: http://mapproxy.org/<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> contact:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> person: Your Name Here<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> access_constraints:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> The data is licensed as Creative Commons Attribution-Share Alike 2.0<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> (http://creativecommons.org/licenses/by-sa/2.0/)<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> fees: 'None'<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'>layers:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> - name: osm<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> title: Omniscale OSM WMS - osm.omniscale.net<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> sources: [osm_cache]<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> - name: mymap<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> title: mymapCounty<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> sources: [ac_cache]<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'>caches:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> osm_cache:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> grids: [GLOBAL_MERCATOR, global_geodetic_sqrt2]<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> sources: [osm_wms]<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> ac_cache:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> grids: [GLOBAL_MERCATOR, global_geodetic_sqrt2]<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> sources: [mymap]<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> cache:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> type: mbtiles<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> filename: C:\tileserver\deployment\cache\map.mbtiles<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> # or use the sqlite format<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> # ac_cache:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> # grids: [GLOBAL_MERCATOR, global_geodetic_sqrt2]<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> # sources: [mymap]<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> # cache:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> # type: sqlite<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'>sources:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> osm_wms:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> type: wms<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> req:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> url: http://osm.omniscale.net/proxy/service?<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> layers: osm<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> mymap:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> type: mapnik<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> mapfile: C:\tileserver\deployment\config\mapnik.xml<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> layers: street,rail,water,county<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> use_mapnik2: false<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'>grids:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> global_geodetic_sqrt2:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> base: GLOBAL_GEODETIC<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> res_factor: 'sqrt2'<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'>globals:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> cache:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> base_dir: './cache_data'<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> lock_dir: './cache_data/locks'<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> image:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt'> resampling_method: nearest<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><b>Console Exceptions:<o:p></o:p></b></p><p class=MsoNormal><b><o:p> </o:p></b></p><p class=MsoNormal>I have noticed there are three kind of runtime exception, I think at least one of them is related to my problem because when I see these exceptions I will get at least one blank tile.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>1,<o:p></o:p></p><p class=MsoNormal>Traceback (most recent call last):<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<o:p></o:p></p><p class=MsoNormal>roxy\wsgiapp.py", line 166, in __call__<o:p></o:p></p><p class=MsoNormal> resp = self.handlers[handler_name].handle(req)<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<o:p></o:p></p><p class=MsoNormal>roxy\service\base.py", line 30, in handle<o:p></o:p></p><p class=MsoNormal> return handler(parsed_req)<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<o:p></o:p></p><p class=MsoNormal>roxy\service\tile.py", line 81, in map<o:p></o:p></p><p class=MsoNormal> tile = layer.render(tile_request, use_profiles=tile_request.use_profiles, c<o:p></o:p></p><p class=MsoNormal>verage=limit_to, decorate_img=decorate_img)<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<o:p></o:p></p><p class=MsoNormal>roxy\service\tile.py", line 307, in render<o:p></o:p></p><p class=MsoNormal> dimensions=dimensions, with_metadata=True)<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<o:p></o:p></p><p class=MsoNormal>roxy\cache\tile.py", line 106, in load_tile_coord<o:p></o:p></p><p class=MsoNormal> created_tiles = creator.create_tiles([tile])<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<o:p></o:p></p><p class=MsoNormal>roxy\cache\tile.py", line 229, in create_tiles<o:p></o:p></p><p class=MsoNormal> created_tiles = self._create_meta_tiles(meta_tiles)<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<o:p></o:p></p><p class=MsoNormal>roxy\cache\tile.py", line 302, in _create_meta_tiles<o:p></o:p></p><p class=MsoNormal> created_tiles.extend(self._create_meta_tile(meta_tile))<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<o:p></o:p></p><p class=MsoNormal>roxy\cache\tile.py", line 310, in _create_meta_tile<o:p></o:p></p><p class=MsoNormal> with self.tile_mgr.lock(main_tile):<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<o:p></o:p></p><p class=MsoNormal>roxy\platform\cpython\lock.py", line 42, in __enter__<o:p></o:p></p><p class=MsoNormal> self.lock()<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<o:p></o:p></p><p class=MsoNormal>roxy\platform\cpython\lock.py", line 65, in lock<o:p></o:p></p><p class=MsoNormal> self._lock = self._try_lock()<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<o:p></o:p></p><p class=MsoNormal>roxy\platform\cpython\lock.py", line 56, in _try_lock<o:p></o:p></p><p class=MsoNormal> return LockFile(self.lock_file)<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<o:p></o:p></p><p class=MsoNormal>roxy\util\ext\lockfile.py", line 118, in __init__<o:p></o:p></p><p class=MsoNormal> fp = open(path, 'w+')<o:p></o:p></p><p class=MsoNormal>IOError: [Errno 22] invalid mode ('w+') or filename: 'c:\\tileserver\\deploym<o:p></o:p></p><p class=MsoNormal>nt\\config\\./cache_data\\tile_locks\\b2b87fa9f6d83cb9bd5dc2251bce78cc-19332-41<o:p></o:p></p><p class=MsoNormal>96-16.lck'<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>2,<o:p></o:p></p><p class=MsoNormal>File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\mapproxy\cache\tile.py", line 229, in create_tiles<o:p></o:p></p><p class=MsoNormal> created_tiles = self._create_meta_tiles(meta_tiles)<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\mapproxy\cache\tile.py", line 302, in _create_meta_tiles<o:p></o:p></p><p class=MsoNormal> created_tiles.extend(self._create_meta_tile(meta_tile))<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\mapproxy\cache\tile.py", line 311, in _create_meta_tile<o:p></o:p></p><p class=MsoNormal> if not all(self.is_cached(t) for t in meta_tile.tiles if t is not None):<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\mapproxy\cache\tile.py", line 311, in <genexpr><o:p></o:p></p><p class=MsoNormal> if not all(self.is_cached(t) for t in meta_tile.tiles if t is not None):<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\mapproxy\cache\tile.py", line 211, in is_cached<o:p></o:p></p><p class=MsoNormal> return self.tile_mgr.is_cached(tile)<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\mapproxy\cache\tile.py", line 154, in is_cached<o:p></o:p></p><p class=MsoNormal> cached = self.cache.is_cached(tile)<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\mapproxy\cache\mbtiles.py", line 138, in is_cached<o:p></o:p></p><p class=MsoNormal> return self.load_tile(tile)<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\mapproxy\cache\mbtiles.py", line 171, in load_tile<o:p></o:p></p><p class=MsoNormal> zoom_level = ?''', tile.coord)<o:p></o:p></p><p class=MsoNormal>OperationalError: database is locked<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>3,<o:p></o:p></p><p class=MsoNormal>Traceback (most recent call last):<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 86, in run<o:p></o:p></p><p class=MsoNormal> self.finish_response()<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 128, in finish_response<o:p></o:p></p><p class=MsoNormal> self.write(data)<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 217, in write<o:p></o:p></p><p class=MsoNormal> self._write(data)<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\Lib\site-packages\isapi_wsgi.py", line 376, in_write<o:p></o:p></p><p class=MsoNormal> self.ecb.WriteClient(data)<o:p></o:p></p><p class=MsoNormal>ExtensionError: (1229, 'An operation was attempted on a nonexistent network connection.', 'WriteClient')<o:p></o:p></p><p class=MsoNormal>Traceback (most recent call last):<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 86, in run<o:p></o:p></p><p class=MsoNormal> self.finish_response()<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 128, in finish_response<o:p></o:p></p><p class=MsoNormal> self.write(data)<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 217, in write<o:p></o:p></p><p class=MsoNormal> self._write(data)<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\Lib\site-packages\isapi_wsgi.py", line 376, in_write<o:p></o:p></p><p class=MsoNormal> self.ecb.WriteClient(data)<o:p></o:p></p><p class=MsoNormal>ExtensionError: (1229, 'An operation was attempted on a nonexistent network connection.', 'WriteClient')<o:p></o:p></p><p class=MsoNormal>Traceback (most recent call last):<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 86, in run<o:p></o:p></p><p class=MsoNormal> self.finish_response()<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 128, in finish_response<o:p></o:p></p><p class=MsoNormal> self.write(data)<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 217, in write<o:p></o:p></p><p class=MsoNormal> self._write(data)<o:p></o:p></p><p class=MsoNormal> File "C:\tileserver\python27\Lib\site-packages\isapi_wsgi.py", line 376, in_write<o:p></o:p></p><p class=MsoNormal> self.ecb.WriteClient(data)<o:p></o:p></p><p class=MsoNormal>ExtensionError: (1229, 'An operation was attempted on a nonexistent network connection.', 'WriteClient')<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sincerely,<o:p></o:p></p><p class=MsoNormal>Matthew<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>