mapblock accessor cache cfg

This commit is contained in:
Thomas Rudin 2019-02-22 19:13:47 +01:00
parent 42580ee310
commit bab8b483ed
4 changed files with 42 additions and 17 deletions

@ -10,16 +10,22 @@ import (
) )
type Config struct { type Config struct {
Port int `json:"port"` Port int `json:"port"`
EnablePrometheus bool `json:"enableprometheus"` EnablePrometheus bool `json:"enableprometheus"`
EnableRendering bool `json:"enablerendering"` EnableRendering bool `json:"enablerendering"`
Webdev bool `json:"webdev"` Webdev bool `json:"webdev"`
WebApi *WebApiConfig `json:"webapi"` WebApi *WebApiConfig `json:"webapi"`
Layers []*layer.Layer `json:"layers"` Layers []*layer.Layer `json:"layers"`
RenderingFetchLimit int `json:"renderingfetchlimit"` RenderingFetchLimit int `json:"renderingfetchlimit"`
RenderingJobs int `json:"renderingjobs"` RenderingJobs int `json:"renderingjobs"`
RenderingQueue int `json:"renderingqueue"` RenderingQueue int `json:"renderingqueue"`
MapObjects *MapObjectConfig `json:"mapobjects"` MapObjects *MapObjectConfig `json:"mapobjects"`
MapBlockAccessorCfg *MapBlockAccessorConfig `json:"mapblockaccessor"`
}
type MapBlockAccessorConfig struct {
Expiretime string `json:"expiretime"`
Purgetime string `json:"purgetime"`
} }
type MapObjectConfig struct { type MapObjectConfig struct {
@ -106,6 +112,11 @@ func ParseConfig(filename string) (*Config, error) {
ATM: true, ATM: true,
} }
mapblockaccessor := MapBlockAccessorConfig{
Expiretime: "500ms",
Purgetime: "1000ms",
}
cfg := Config{ cfg := Config{
Port: 8080, Port: 8080,
EnableRendering: true, EnableRendering: true,
@ -117,6 +128,7 @@ func ParseConfig(filename string) (*Config, error) {
RenderingJobs: runtime.NumCPU(), RenderingJobs: runtime.NumCPU(),
RenderingQueue: 100, RenderingQueue: 100,
MapObjects: &mapobjs, MapObjects: &mapobjs,
MapBlockAccessorCfg: &mapblockaccessor,
} }
info, err := os.Stat(filename) info, err := os.Stat(filename)

@ -13,12 +13,13 @@ import (
"mapserver/tiledb" "mapserver/tiledb"
"mapserver/tilerenderer" "mapserver/tilerenderer"
"mapserver/worldconfig" "mapserver/worldconfig"
"time"
"github.com/sirupsen/logrus"
"io/ioutil" "io/ioutil"
"os" "os"
"github.com/sirupsen/logrus"
"errors" "errors"
) )
@ -58,7 +59,17 @@ func Setup(p params.ParamsType, cfg *Config) *App {
} }
//mapblock accessor //mapblock accessor
a.BlockAccessor = mapblockaccessor.NewMapBlockAccessor(a.Blockdb) expireDuration, err := time.ParseDuration(cfg.MapBlockAccessorCfg.Expiretime)
if err != nil {
panic(err)
}
purgeDuration, err := time.ParseDuration(cfg.MapBlockAccessorCfg.Purgetime)
if err != nil {
panic(err)
}
a.BlockAccessor = mapblockaccessor.NewMapBlockAccessor(a.Blockdb, expireDuration, purgeDuration)
//color mapping //color mapping
a.Colormapping = colormapping.NewColorMapping() a.Colormapping = colormapping.NewColorMapping()

@ -21,8 +21,8 @@ func getKey(pos *coords.MapBlockCoords) string {
return fmt.Sprintf("Coord %d/%d/%d", pos.X, pos.Y, pos.Z) return fmt.Sprintf("Coord %d/%d/%d", pos.X, pos.Y, pos.Z)
} }
func NewMapBlockAccessor(accessor db.DBAccessor) *MapBlockAccessor { func NewMapBlockAccessor(accessor db.DBAccessor, expiretime, purgetime time.Duration) *MapBlockAccessor {
c := cache.New(500*time.Millisecond, 1000*time.Millisecond) c := cache.New(expiretime, purgetime)
return &MapBlockAccessor{ return &MapBlockAccessor{
accessor: accessor, accessor: accessor,

@ -1,13 +1,15 @@
package mapblockaccessor package mapblockaccessor
import ( import (
"github.com/sirupsen/logrus"
"io/ioutil" "io/ioutil"
"mapserver/coords" "mapserver/coords"
"mapserver/db/sqlite" "mapserver/db/sqlite"
"mapserver/testutils" "mapserver/testutils"
"os" "os"
"testing" "testing"
"time"
"github.com/sirupsen/logrus"
) )
func TestSimpleAccess(t *testing.T) { func TestSimpleAccess(t *testing.T) {
@ -30,7 +32,7 @@ func TestSimpleAccess(t *testing.T) {
panic(err) panic(err)
} }
cache := NewMapBlockAccessor(a) cache := NewMapBlockAccessor(a, 500*time.Millisecond, 1000*time.Millisecond)
mb, err := cache.GetMapBlock(coords.NewMapBlockCoords(0, 0, 0)) mb, err := cache.GetMapBlock(coords.NewMapBlockCoords(0, 0, 0))
if err != nil { if err != nil {