<p dir="ltr">Hi Matthew</p>
<p dir="ltr">This will not help to resolve any underlying issues but as you are using OpenLayers you could try setting <a href="http://dev.openlayers.org/docs/files/OpenLayers/Util-js.html#Util.IMAGE_RELOAD_ATTEMPTS">http://dev.openlayers.org/docs/files/OpenLayers/Util-js.html#Util.IMAGE_RELOAD_ATTEMPTS</a>.</p>

<p dir="ltr">Cheers,</p>
<p dir="ltr">Matt.</p>
<div class="gmail_quote">On 31 Jan 2014 14:45, "Matthew Ma" <<a href="mailto:matthewma.tf@gmail.com">matthewma.tf@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div lang="EN-US" link="#0563C1" vlink="#954F72"><div><p class="MsoNormal">Dear MapProxy mail list subscribers,<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">I have been using MapProxy with Mapnik as source to serve and generate map tiles. <u></u><u></u></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.<u></u><u></u></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.<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><b>Environment:<u></u><u></u></b></p>
<p class="MsoNormal">Windows 7 x64<u></u><u></u></p><p class="MsoNormal">Python 2.7.6<u></u><u></u></p><p class="MsoNormal">MapProxy 1.6 and 1.5<u></u><u></u></p><p class="MsoNormal">Mapnik 2.2<u></u><u></u></p><p class="MsoNormal">
Running MapProxy in “mapproxy-util serve-develop” or using IIS with isapi-wsgi.<u></u><u></u></p><p class="MsoNormal">OpenLayers in the MapProxy Demo page or new release of OpenLayers<u></u><u></u></p><p class="MsoNormal">
Server and Client both on localhost<u></u><u></u></p><p class="MsoNormal">And my MapProxy yaml config:<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><span style="font-size:10.0pt">services:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">  demo:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">  kml:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">  tms:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">  wmts:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">  wms:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">    md:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">      title: MapProxy WMS Proxy<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">      abstract: This is the fantastic MapProxy.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">      online_resource: <a href="http://mapproxy.org/" target="_blank">http://mapproxy.org/</a><u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">      contact:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">        person: Your Name Here<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">      access_constraints:<u></u><u></u></span></p><p class="MsoNormal">
<span style="font-size:10.0pt">        The data is licensed as Creative Commons Attribution-Share Alike 2.0<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">        (<a href="http://creativecommons.org/licenses/by-sa/2.0/" target="_blank">http://creativecommons.org/licenses/by-sa/2.0/</a>)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">      fees: 'None'<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">layers:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">  - name: osm<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">    title: Omniscale OSM WMS - <a href="http://osm.omniscale.net" target="_blank">osm.omniscale.net</a><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">    sources: [osm_cache]<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">  - name: mymap<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">    title: mymapCounty<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">    sources: [ac_cache]<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">    <u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">caches:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">  osm_cache:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">    grids: [GLOBAL_MERCATOR, global_geodetic_sqrt2]<u></u><u></u></span></p><p class="MsoNormal">
<span style="font-size:10.0pt">    sources: [osm_wms]<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">  ac_cache:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">    grids: [GLOBAL_MERCATOR, global_geodetic_sqrt2]<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">    sources: [mymap]<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">    cache:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">      type: mbtiles<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">      filename: C:\tileserver\deployment\cache\map.mbtiles<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">  # or use the sqlite format<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">  # ac_cache:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">  #   grids: [GLOBAL_MERCATOR, global_geodetic_sqrt2]<u></u><u></u></span></p><p class="MsoNormal">
<span style="font-size:10.0pt">  #   sources: [mymap]<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">  #   cache:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">  #     type: sqlite<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">sources:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">  osm_wms:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">    type: wms<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">    req:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">      url: <a href="http://osm.omniscale.net/proxy/service" target="_blank">http://osm.omniscale.net/proxy/service</a>?<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">      layers: osm<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">  mymap:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">    type: mapnik<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">    mapfile: C:\tileserver\deployment\config\mapnik.xml<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">    layers: street,rail,water,county<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">    use_mapnik2: false<u></u><u></u></span></p><p class="MsoNormal">
<span style="font-size:10.0pt"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt"><u></u> <u></u></span></p><p class="MsoNormal">
<span style="font-size:10.0pt">grids:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">  global_geodetic_sqrt2:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">    base: GLOBAL_GEODETIC<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">    res_factor: 'sqrt2'<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt"><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">globals:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">  cache:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">    base_dir: './cache_data'<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">    lock_dir: './cache_data/locks'<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt">  image:<u></u><u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt">      resampling_method: nearest<u></u><u></u></span></p><p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal"><b>Console Exceptions:<u></u><u></u></b></p><p class="MsoNormal"><b><u></u> <u></u></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.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">1,<u></u><u></u></p><p class="MsoNormal">Traceback (most recent call last):<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<u></u><u></u></p>
<p class="MsoNormal">roxy\wsgiapp.py", line 166, in __call__<u></u><u></u></p><p class="MsoNormal">    resp = self.handlers[handler_name].handle(req)<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<u></u><u></u></p>
<p class="MsoNormal">roxy\service\base.py", line 30, in handle<u></u><u></u></p><p class="MsoNormal">    return handler(parsed_req)<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<u></u><u></u></p>
<p class="MsoNormal">roxy\service\tile.py", line 81, in map<u></u><u></u></p><p class="MsoNormal">    tile = layer.render(tile_request, use_profiles=tile_request.use_profiles, c<u></u><u></u></p><p class="MsoNormal">
verage=limit_to, decorate_img=decorate_img)<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<u></u><u></u></p><p class="MsoNormal">roxy\service\tile.py", line 307, in render<u></u><u></u></p>
<p class="MsoNormal">    dimensions=dimensions, with_metadata=True)<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<u></u><u></u></p><p class="MsoNormal">
roxy\cache\tile.py", line 106, in load_tile_coord<u></u><u></u></p><p class="MsoNormal">    created_tiles = creator.create_tiles([tile])<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<u></u><u></u></p>
<p class="MsoNormal">roxy\cache\tile.py", line 229, in create_tiles<u></u><u></u></p><p class="MsoNormal">    created_tiles = self._create_meta_tiles(meta_tiles)<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<u></u><u></u></p>
<p class="MsoNormal">roxy\cache\tile.py", line 302, in _create_meta_tiles<u></u><u></u></p><p class="MsoNormal">    created_tiles.extend(self._create_meta_tile(meta_tile))<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<u></u><u></u></p>
<p class="MsoNormal">roxy\cache\tile.py", line 310, in _create_meta_tile<u></u><u></u></p><p class="MsoNormal">    with self.tile_mgr.lock(main_tile):<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<u></u><u></u></p>
<p class="MsoNormal">roxy\platform\cpython\lock.py", line 42, in __enter__<u></u><u></u></p><p class="MsoNormal">    self.lock()<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<u></u><u></u></p>
<p class="MsoNormal">roxy\platform\cpython\lock.py", line 65, in lock<u></u><u></u></p><p class="MsoNormal">    self._lock = self._try_lock()<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<u></u><u></u></p>
<p class="MsoNormal">roxy\platform\cpython\lock.py", line 56, in _try_lock<u></u><u></u></p><p class="MsoNormal">    return LockFile(self.lock_file)<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map<u></u><u></u></p>
<p class="MsoNormal">roxy\util\ext\lockfile.py", line 118, in __init__<u></u><u></u></p><p class="MsoNormal">    fp = open(path, 'w+')<u></u><u></u></p><p class="MsoNormal">IOError: [Errno 22] invalid mode ('w+') or filename: 'c:\\tileserver\\deploym<u></u><u></u></p>
<p class="MsoNormal">nt\\config\\./cache_data\\tile_locks\\b2b87fa9f6d83cb9bd5dc2251bce78cc-19332-41<u></u><u></u></p><p class="MsoNormal">96-16.lck'<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">
<u></u> <u></u></p><p class="MsoNormal">2,<u></u><u></u></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<u></u><u></u></p>
<p class="MsoNormal">    created_tiles = self._create_meta_tiles(meta_tiles)<u></u><u></u></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<u></u><u></u></p>
<p class="MsoNormal">    created_tiles.extend(self._create_meta_tile(meta_tile))<u></u><u></u></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<u></u><u></u></p>
<p class="MsoNormal">    if not all(self.is_cached(t) for t in meta_tile.tiles if t is not None):<u></u><u></u></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><u></u><u></u></p>
<p class="MsoNormal">    if not all(self.is_cached(t) for t in meta_tile.tiles if t is not None):<u></u><u></u></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<u></u><u></u></p>
<p class="MsoNormal">    return self.tile_mgr.is_cached(tile)<u></u><u></u></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<u></u><u></u></p>
<p class="MsoNormal">    cached = self.cache.is_cached(tile)<u></u><u></u></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<u></u><u></u></p>
<p class="MsoNormal">    return self.load_tile(tile)<u></u><u></u></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<u></u><u></u></p>
<p class="MsoNormal">    zoom_level = ?''', tile.coord)<u></u><u></u></p><p class="MsoNormal">OperationalError: database is locked<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">
<u></u> <u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">3,<u></u><u></u></p><p class="MsoNormal">Traceback (most recent call last):<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 86, in run<u></u><u></u></p>
<p class="MsoNormal">    self.finish_response()<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 128, in finish_response<u></u><u></u></p><p class="MsoNormal">    self.write(data)<u></u><u></u></p>
<p class="MsoNormal">  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 217, in write<u></u><u></u></p><p class="MsoNormal">    self._write(data)<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\Lib\site-packages\isapi_wsgi.py", line 376, in_write<u></u><u></u></p>
<p class="MsoNormal">    self.ecb.WriteClient(data)<u></u><u></u></p><p class="MsoNormal">ExtensionError: (1229, 'An operation was attempted on a nonexistent network connection.', 'WriteClient')<u></u><u></u></p>
<p class="MsoNormal">Traceback (most recent call last):<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 86, in run<u></u><u></u></p><p class="MsoNormal">    self.finish_response()<u></u><u></u></p>
<p class="MsoNormal">  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 128, in finish_response<u></u><u></u></p><p class="MsoNormal">    self.write(data)<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 217, in write<u></u><u></u></p>
<p class="MsoNormal">    self._write(data)<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\Lib\site-packages\isapi_wsgi.py", line 376, in_write<u></u><u></u></p><p class="MsoNormal">    self.ecb.WriteClient(data)<u></u><u></u></p>
<p class="MsoNormal">ExtensionError: (1229, 'An operation was attempted on a nonexistent network connection.', 'WriteClient')<u></u><u></u></p><p class="MsoNormal">Traceback (most recent call last):<u></u><u></u></p>
<p class="MsoNormal">  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 86, in run<u></u><u></u></p><p class="MsoNormal">    self.finish_response()<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 128, in finish_response<u></u><u></u></p>
<p class="MsoNormal">    self.write(data)<u></u><u></u></p><p class="MsoNormal">  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 217, in write<u></u><u></u></p><p class="MsoNormal">    self._write(data)<u></u><u></u></p>
<p class="MsoNormal">  File "C:\tileserver\python27\Lib\site-packages\isapi_wsgi.py", line 376, in_write<u></u><u></u></p><p class="MsoNormal">    self.ecb.WriteClient(data)<u></u><u></u></p><p class="MsoNormal">
ExtensionError: (1229, 'An operation was attempted on a nonexistent network connection.', 'WriteClient')<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Sincerely,<u></u><u></u></p>
<p class="MsoNormal">Matthew<u></u><u></u></p><p class="MsoNormal"><u></u> <u></u></p></div></div><br>_______________________________________________<br>
MapProxy mailing list<br>
<a href="mailto:MapProxy@lists.osgeo.org">MapProxy@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/mapproxy" target="_blank">http://lists.osgeo.org/mailman/listinfo/mapproxy</a><br></blockquote></div>