<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>