Commit Graph

550 Commits

Author SHA1 Message Date
54f668537a Update renderd.conf to reflect added configuration options 2013-04-08 00:50:15 -06:00
9534a82de4 Document all mod_tile configuration directives in the annotated mod_tile.conf 2013-04-08 00:39:34 -06:00
243d713888 Add two more storage backends ro_http_proxy and ro_composite
Both are read only backends, i.e. they can't be used in renderd, but only in mod_tile

ro_http_proxy is a proxy storage backend that retrieves tiles from a remote http tile server

ro_composite is a storage backend that composits two tiles before passing them up.

Although ro_composite can composite tiles from any two storage backends, conceptually it only
works well, if at least one set of tiles are static non updating tiles, as the updating logic
does not allow for requesting rendering updates for both tilesets
2013-03-31 08:14:36 +00:00
03dedd4ec3 Each style can now have its own storage backend / tile_dir 2013-03-30 19:06:33 +00:00
55258f9078 Move man pages out of the debian directory and into the docs directory
These are mostly stub man pages for now
2013-03-30 17:41:11 +00:00
65b3e42076 Add an empty docs directory 2013-03-30 17:35:10 +00:00
a48fb0fe6d Improve configure script a little bit
- automatically find apxs in addition to apxs2. This should make it easier to configure on more systems
- include freetype2.m4. Otherwise ./autogen.sh already fails with missing macro.
- fail if no C++ compiler was found
2013-03-29 06:09:44 +00:00
4bea7e1e87 Fix stability issues with rados backend 2013-03-28 17:09:08 +00:00
59f1ac181a [mod_tile] use a separate storage backend per thread in apache 2.4
Storage backends might not be fully thread safe when reusing the same context, like for example the memcached storage backend,

therefore initialise a separate storage backend / context per thread rather than per process.

Unfortunately there is no way to do this in Apache 2.2. So there you will need to use mpm prefork for non thread safe backends
2013-03-28 17:08:04 +00:00
f427add3fa Debian package : easier way to change user renderd is run with
This is a patch provided by sletuffe on github:
https://github.com/openstreetmap/mod_tile/pull/1
2013-03-28 13:53:44 +00:00
b008759183 [render_expired] Apply @29406 render_list patches to render_expired 2013-03-28 00:04:29 +00:00
cbcacb1248 Fix typo 2013-03-27 20:21:02 +00:00
f804830163 Fix a number of potential issues found by coverity scan static analyzer 2013-03-27 03:59:43 +00:00
dc8ca64ea9 [renderd] bug fixes that could lead to segmentation faults on tile write 2013-03-26 22:25:31 +00:00
33055b84de [render_list] fix invalid free() in case of default mapname or tilepath 2013-03-26 15:52:08 +00:00
4c936cee15 [renderd] fixup breakage from previous commits
Bug was found and reported by Bernard Fouche, thanks!
2013-03-26 14:53:06 +00:00
8f3a46b4eb [renderd] support alternative map projections other than web mercator
Remove hard coded references to the spherical mercator projection and
replace them with something a little more generic. It is still necessary
to add code to support new projections, but it is limited to a few configuration numbers

This initial commit supports spherical mercator and plate carree.

This commit also makes the tile size configurable. The default remains at 256 px.
2013-03-26 04:33:10 +00:00
f4eae0617a [mod_tile] correctly close the storage backends 2013-03-25 17:01:20 +00:00
fb4f86713e [mod_tile] clean up compiler warnings 2013-03-25 14:58:11 +00:00
250a225fbe [mod_tile] Make mod_tile compile with C90
This is necessary if apache is built with --enable-debug-mode
2013-03-25 04:46:33 +00:00
c5ed5b3a6b [mod_tile] Make mod_tile compile with apache 2.4 2013-03-25 02:25:48 +00:00
e8001c859f Add support for pluggable storage backends to mod_tile / renderd
So far, (meta)tiles could only be stored and retrieved from a locally mounted posix filesystem.  Although, the posix
filesystem API is it self a plugable storage layer into which one can mount many different filsystems, from temporary
filesystems to network filesystems, as mod_tile installations scale up to multi-server environments this might not be sufficient and one
may want to use other storage layers.

This patch therefore abstracts all storage calls out into a separate API that can be implemented by various storage backends to fit the needs of different
installations. 

Three storage backends are included in this commit:

- file backend: This is the equivalent of what existed before in mod_tile / renderd. This uses a posix filesystem to store (meta)tiles
- memcached: This stores tiles in a memcached store
- rados: This stores tiles in a rados / ceph cluster

The memcached and rados backends should currently still be considered as experimental

There are also other refactoring and cleanups in this commit
2013-03-23 22:19:30 +00:00
23fb7815d4 Remove "DOES NOT WORK YET" from renderd.conf.
That functionality has been implemented a while ago, but noone changed the comment.
2013-03-06 22:11:42 +00:00
c4c27c529f Move mod_tile_latecy munin graph to correct directory 2013-03-03 19:59:08 +00:00
03cef67fed Improve mod_tile_latency munin graph to show latencies split by zoom level 2013-03-03 19:58:29 +00:00
874f27a6c2 fix issues found by coverity static analysis in dir_utils.c 2013-03-02 16:49:55 +00:00
796407a030 fix issues found by coverity static analysis in gen_tile.cpp 2013-03-02 16:49:30 +00:00
f7582abb14 fix issues found by coverity static analysis in render_expired.c 2013-03-02 16:48:15 +00:00
b73e9ac5f8 fix issues found by coverity static analysis in render_old.c 2013-03-02 16:47:44 +00:00
914699a692 fix issues found by coverity static analysis in mod_tile.c 2013-03-02 16:47:13 +00:00
d07717d92f Fix issues found by coverity static analysis in daemon.c 2013-03-02 16:46:34 +00:00
23be0365a9 Revert previous commit as it broke builds under some conditions.
The following errors appeared on Ubuntu builds:

cc1: warning: command line option '-ftemplate-depth=300' is valid for C++/ObjC++ but not for C [enabled by default]
In file included from store.h:9:0,
                 from store.c:21:
render_config.h:6:1: error: expected identifier or '(' before '/' token
render_config.h:15:1: error: stray '#' in program
...

As I don't know why this broke, or how to fix it, I am reverting this patch for now. It also only triggeres after a make distclean
2013-03-02 15:37:30 +00:00
80cd238d06 no need to check for mapnik dependencies, just check for mapnik 2013-02-26 17:53:32 +00:00
158353abfc fix compile with clang 2013-02-26 17:50:48 +00:00
7eb2c19049 adapt to mapnik >= 2.2.0 which does not provide a default ctor for mapnik::projection 2013-02-26 17:45:59 +00:00
c6b3c43460 [mod_tile] Enable mod_tile to connect to renderd via TCP socket
So far mod_tile could only connect to renderd via a unix domain socket.

Renderd was already able to accept tile rendering requests on tcp sockets
to enable it to be distributed accross multiple servers. With adding this
feature to mod_tile, it is now possible to have renderd on a different server
than mod_tile.

If multiple IPs are registered to the renderd dns entry, it supports a simple
form of automatic fail over, although a more sophisticated solution is likely
necessary for proper high availability setups.
2013-02-24 19:50:57 +00:00
358c107549 [renderd] Make renderd's TCP socket IPv6 compliant 2013-02-24 19:19:25 +00:00
c3bc037720 typo 2013-02-22 22:42:15 +00:00
cd450ef2b2 fix tile path 2013-02-20 11:59:13 +00:00
ff7f0e3830 Renderd seg faulted if the database connection was reset 2013-02-17 20:51:09 +00:00
a6329a0e2b Correctly print the version string of mapnik in renderd 2013-02-12 22:09:07 +00:00
66a692f44f [render_expired] Set back date by exactly 20 years for touch
based expiry

With a set back of 20 years rather than to a specific date,
the actual render time gets preserved and can be checked in
e.g. mod_tiles tile status
2013-01-14 17:41:23 +00:00
53c9bcb4be [mod_tile] report atime in /status as well.
Add a warning to the status page that neither create time nor access time might be accurate.

Create time is manipulated by the tile expiry process, and atime is often disabled on the filesytem via noatime
for performance reasons.
2013-01-14 16:12:39 +00:00
f442f03a52 [mod_tile] log and graph time to retrieve tiles from disk
Adds a munin graph to monitor the average time it takes to retrieve a served tile
from disk. This can be useful to check if the underlying disk system is fast enough
to handle the load of serving tiles. It does not include time required for pontential
rendering on the fly, nor the time to deliver the tile over the network.
2013-01-14 08:45:38 +00:00
b6d79fdc9c [mod_tile] Fix double free bug in tile config loading
Reported by 7bitbyte, diagnosed by fabianpr on help.osm.org
2013-01-12 16:10:24 +00:00
5960b28799 [mod_tile] fix memory leaks
Fixes coverity scan issue #746958 and #746957
2012-12-16 21:31:57 +00:00
b2a9292b7d Fix off by one error in string length guard
Fixes coverity scan issue #751697
2012-12-16 21:31:16 +00:00
685d3c2077 [mod_tile] Fix resource leaks during configuration read
Found via coverity scan
2012-12-16 21:30:44 +00:00
57049cb38a [mod_tile] Fix missing va_end
Fixes coverity issue #751708
2012-12-16 21:30:08 +00:00
59643da338 [renderd] Mapnik trunc has changed the API on mapnik::datasource_cache::instance() 2012-12-07 16:48:47 +00:00