_ = flag .String ("static" , "content/static" , "path to folder containing static files served" )
bypassLicenseCheck = flag .Bool ("bypass_license_check" , false , "insert all data into the DB, even for non-redistributable paths" )
)
func main () {
flag .Parse ()
ctx := context .Background ()
cfg , err := config .Init (ctx )
if err != nil {
log .Fatal (ctx , err )
}
cfg .Dump (os .Stdout )
log .SetLevel (cfg .LogLevel )
if cfg .UseProfiler {
if err := profiler .Start (profiler .Config {}); err != nil {
log .Fatalf (ctx , "profiler.Start: %v" , err )
}
}
readProxyRemoved (ctx )
db , err := cmdconfig .OpenDB (ctx , cfg , *bypassLicenseCheck )
if err != nil {
log .Fatalf (ctx , "%v" , err )
}
defer db .Close ()
populateExcluded (ctx , db )
indexClient , err := index .New (cfg .IndexURL )
if err != nil {
log .Fatal (ctx , err )
}
proxyClient , err := proxy .New (cfg .ProxyURL )
if err != nil {
log .Fatal (ctx , err )
}
sourceClient := source .NewClient (config .SourceTimeout )
expg := cmdconfig .ExperimentGetter (ctx , cfg )
fetchQueue , err := queue .New (ctx , cfg , queueName , *workers , expg ,
func (ctx context .Context , modulePath , version string ) (int , error ) {
f := &worker .Fetcher {
ProxyClient : proxyClient ,
SourceClient : sourceClient ,
DB : db ,
}
code , _ , err := f .FetchAndUpdateState (ctx , modulePath , version , cfg .AppVersionLabel ())
return code , err
})
if err != nil {
log .Fatalf (ctx , "queue.New: %v" , err )
}
reportingClient := cmdconfig .ReportingClient (ctx , cfg )
redisHAClient := getHARedis (ctx , cfg )
redisCacheClient := getCacheRedis (ctx , cfg )
experimenter := cmdconfig .Experimenter (ctx , cfg , expg , reportingClient )
server , err := worker .NewServer (cfg , worker .ServerConfig {
DB : db ,
IndexClient : indexClient ,
ProxyClient : proxyClient ,
SourceClient : sourceClient ,
RedisHAClient : redisHAClient ,
RedisCacheClient : redisCacheClient ,
Queue : fetchQueue ,
ReportingClient : reportingClient ,
StaticPath : template .TrustedSourceFromFlag (flag .Lookup ("static" ).Value ),
GetExperiments : experimenter .Experiments ,
})
if err != nil {
log .Fatal (ctx , err )
}
router := dcensus .NewRouter (nil )
server .Install (router .Handle )
views := append (dcensus .ServerViews ,
worker .EnqueueResponseCount ,
worker .ProcessingLag ,
fetch .FetchLatencyDistribution ,
fetch .FetchResponseCount ,
fetch .SheddedFetchCount ,
fetch .FetchPackageCount )
if err := dcensus .Init (cfg , views ...); err != nil {
log .Fatal (ctx , err )