[MapProxy] Missing some tiles when generating from mapnik

Matthew Ma matthewma.tf at gmail.com
Fri Jan 31 06:45:14 PST 2014


Dear MapProxy mail list subscribers,

 

I have been using MapProxy with Mapnik as source to serve and generate map
tiles. 

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.

I have been trying for a while but failed to resolve. I would like to ask
your opinion on this problem.

 

Environment:

Windows 7 x64

Python 2.7.6

MapProxy 1.6 and 1.5

Mapnik 2.2

Running MapProxy in "mapproxy-util serve-develop" or using IIS with
isapi-wsgi.

OpenLayers in the MapProxy Demo page or new release of OpenLayers

Server and Client both on localhost

And my MapProxy yaml config:

 

services:

  demo:

  kml:

  tms:

  wmts:

  wms:

    md:

      title: MapProxy WMS Proxy

      abstract: This is the fantastic MapProxy.

      online_resource: http://mapproxy.org/

      contact:

        person: Your Name Here

      access_constraints:

        The data is licensed as Creative Commons Attribution-Share Alike 2.0

        (http://creativecommons.org/licenses/by-sa/2.0/)

      fees: 'None'

 

layers:

  - name: osm

    title: Omniscale OSM WMS - osm.omniscale.net

    sources: [osm_cache]

  - name: mymap

    title: mymapCounty

    sources: [ac_cache]

    

caches:

  osm_cache:

    grids: [GLOBAL_MERCATOR, global_geodetic_sqrt2]

    sources: [osm_wms]

  ac_cache:

    grids: [GLOBAL_MERCATOR, global_geodetic_sqrt2]

    sources: [mymap]

    cache:

      type: mbtiles

      filename: C:\tileserver\deployment\cache\map.mbtiles

  # or use the sqlite format

  # ac_cache:

  #   grids: [GLOBAL_MERCATOR, global_geodetic_sqrt2]

  #   sources: [mymap]

  #   cache:

  #     type: sqlite

 

 

sources:

  osm_wms:

    type: wms

    req:

      url: http://osm.omniscale.net/proxy/service?

      layers: osm

  mymap:

    type: mapnik

    mapfile: C:\tileserver\deployment\config\mapnik.xml

    layers: street,rail,water,county

    use_mapnik2: false

 

 

 

grids:

  global_geodetic_sqrt2:

    base: GLOBAL_GEODETIC

    res_factor: 'sqrt2'

 

globals:

  cache:

    base_dir: './cache_data'

    lock_dir: './cache_data/locks'

  image:

      resampling_method: nearest

 

 

Console Exceptions:

 

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.

 

1,

Traceback (most recent call last):

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map

roxy\wsgiapp.py", line 166, in __call__

    resp = self.handlers[handler_name].handle(req)

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map

roxy\service\base.py", line 30, in handle

    return handler(parsed_req)

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map

roxy\service\tile.py", line 81, in map

    tile = layer.render(tile_request,
use_profiles=tile_request.use_profiles, c

verage=limit_to, decorate_img=decorate_img)

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map

roxy\service\tile.py", line 307, in render

    dimensions=dimensions, with_metadata=True)

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map

roxy\cache\tile.py", line 106, in load_tile_coord

    created_tiles = creator.create_tiles([tile])

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map

roxy\cache\tile.py", line 229, in create_tiles

    created_tiles = self._create_meta_tiles(meta_tiles)

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map

roxy\cache\tile.py", line 302, in _create_meta_tiles

    created_tiles.extend(self._create_meta_tile(meta_tile))

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map

roxy\cache\tile.py", line 310, in _create_meta_tile

    with self.tile_mgr.lock(main_tile):

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map

roxy\platform\cpython\lock.py", line 42, in __enter__

    self.lock()

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map

roxy\platform\cpython\lock.py", line 65, in lock

    self._lock = self._try_lock()

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map

roxy\platform\cpython\lock.py", line 56, in _try_lock

    return LockFile(self.lock_file)

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\map

roxy\util\ext\lockfile.py", line 118, in __init__

    fp = open(path, 'w+')

IOError: [Errno 22] invalid mode ('w+') or filename:
'c:\\tileserver\\deploym

nt\\config\\./cache_data\\tile_locks\\b2b87fa9f6d83cb9bd5dc2251bce78cc-19332
-41

96-16.lck'

 

 

2,

File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\mapproxy\
cache\tile.py", line 229, in create_tiles

    created_tiles = self._create_meta_tiles(meta_tiles)

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\mapproxy\
cache\tile.py", line 302, in _create_meta_tiles

    created_tiles.extend(self._create_meta_tile(meta_tile))

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\mapproxy\
cache\tile.py", line 311, in _create_meta_tile

    if not all(self.is_cached(t) for t in meta_tile.tiles if t is not None):

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\mapproxy\
cache\tile.py", line 311, in <genexpr>

    if not all(self.is_cached(t) for t in meta_tile.tiles if t is not None):

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\mapproxy\
cache\tile.py", line 211, in is_cached

    return self.tile_mgr.is_cached(tile)

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\mapproxy\
cache\tile.py", line 154, in is_cached

    cached = self.cache.is_cached(tile)

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\mapproxy\
cache\mbtiles.py", line 138, in is_cached

    return self.load_tile(tile)

  File
"C:\tileserver\python27\lib\site-packages\mapproxy-1.6.0-py2.7.egg\mapproxy\
cache\mbtiles.py", line 171, in load_tile

    zoom_level = ?''', tile.coord)

OperationalError: database is locked

 

 

 

3,

Traceback (most recent call last):

  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 86, in run

    self.finish_response()

  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 128, in
finish_response

    self.write(data)

  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 217, in write

    self._write(data)

  File "C:\tileserver\python27\Lib\site-packages\isapi_wsgi.py", line 376,
in_write

    self.ecb.WriteClient(data)

ExtensionError: (1229, 'An operation was attempted on a nonexistent network
connection.', 'WriteClient')

Traceback (most recent call last):

  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 86, in run

    self.finish_response()

  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 128, in
finish_response

    self.write(data)

  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 217, in write

    self._write(data)

  File "C:\tileserver\python27\Lib\site-packages\isapi_wsgi.py", line 376,
in_write

    self.ecb.WriteClient(data)

ExtensionError: (1229, 'An operation was attempted on a nonexistent network
connection.', 'WriteClient')

Traceback (most recent call last):

  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 86, in run

    self.finish_response()

  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 128, in
finish_response

    self.write(data)

  File "C:\tileserver\python27\lib\wsgiref\handlers.py", line 217, in write

    self._write(data)

  File "C:\tileserver\python27\Lib\site-packages\isapi_wsgi.py", line 376,
in_write

    self.ecb.WriteClient(data)

ExtensionError: (1229, 'An operation was attempted on a nonexistent network
connection.', 'WriteClient')

 

Sincerely,

Matthew

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapproxy/attachments/20140131/78128391/attachment-0001.html>


More information about the MapProxy mailing list