// NewBuilder creates a new Builder given the gitinfo, and loads Tiles from the // traceserver running at the given address. The tiles contain the last // 'tileSize' commits and are built from Traces of the type that traceBuilder // returns. func NewMasterTileBuilder(db DB, git *gitinfo.GitInfo, tileSize int, evt *eventbus.EventBus) (MasterTileBuilder, error) { ret := &masterTileBuilder{ tileSize: tileSize, db: db, git: git, evt: evt, } if err := ret.LoadTile(); err != nil { return nil, fmt.Errorf("NewTraceStore: Failed to load initial Tile: %s", err) } evt.Publish(NEW_TILE_AVAILABLE_EVENT, ret.GetTile()) go func() { liveness := metrics.NewLiveness("perf-tracedb-tile-refresh") for _ = range time.Tick(TILE_REFRESH_DURATION) { if err := ret.LoadTile(); err != nil { glog.Errorf("Failed to refresh tile: %s", err) } else { liveness.Update() evt.Publish(NEW_TILE_AVAILABLE_EVENT, ret.GetTile()) } } }() return ret, nil }