public class AdCache extends Object implements Runnable
Copyright © Enremmeta LLC 2015. All Rights Reserved.
Modifier and Type | Class and Description |
---|---|
private static class |
AdCache.AdCollectionHolder |
static class |
AdCache.BudgetAllocationResult |
class |
AdCache.LoadResultHolder |
class |
AdCache.ValidationResultHolder |
Constructor and Description |
---|
AdCache(AdCacheConfig config) |
Modifier and Type | Method and Description |
---|---|
boolean |
cancel()
In order to run from
AdminSvc.refreshAdCache(javax.ws.rs.container.AsyncResponse, String) or ... |
private static String |
debug(Ad ad,
String s) |
private static String |
debug(org.apache.logging.log4j.Marker m,
String s) |
private static String |
debug(String s) |
private static String |
debug(String adId,
String s) |
String |
doRun(boolean scheduled)
Ad cache refresh
|
private static String |
error(Ad ad,
String s) |
private static String |
error(Ad ad,
String s,
Throwable t) |
private static String |
error(String s) |
private static String |
error(String adId,
String s,
Throwable t) |
private static String |
error(String s,
Throwable t) |
private static String |
formatMicroBudget(long value) |
Ad |
getAd(String id) |
Ad[] |
getAll() |
Ad[] |
getBid1() |
Ad[] |
getBid2() |
private static BidderCalendar |
getBidderCalendar() |
DaoShortLivedMap<BidInFlightInfo> |
getBidInFlightInfoMap() |
List<Ad> |
getBlackListedAds() |
AdCacheConfig |
getConfig() |
DaoShortLivedMap<CacheableWebResponse> |
getCwrMap() |
DaoShortLivedMap<String> |
getFcMap() |
List<Ad> |
getIneligibleAds() |
Map<Ad,String> |
getInvalidAds()
Used for show list of invalid ads in the admin tool (see
AdminSvc.index(javax.ws.rs.container.AsyncResponse, String) ) |
private int |
getNumberOfPeers(com.lambdaworks.redis.RedisConnection<String,String> redisCon) |
DaoShortLivedMap<String> |
getNurlMap() |
byte[] |
getOwnerKey(String owner) |
private File |
getReadingFile() |
private com.lambdaworks.redis.RedisConnection<String,String> |
getRedisConnection() |
DbService |
getShortTermDb() |
String |
getStatus() |
Map<String,Long> |
getTimeoutMap() |
Map<String,String> |
getUncompilableAds()
Used for show list of uncompilable ads in the admin tool (see
AdminSvc.index(javax.ws.rs.container.AsyncResponse, String) ) |
List<Ad> |
getZeroBudgetAds()
Used for show list of ads with zero budget in the admin tool (see
AdminSvc.index(javax.ws.rs.container.AsyncResponse, String) ) |
private static String |
info(Ad ad,
String s) |
private static String |
info(org.apache.logging.log4j.Marker m,
String s) |
private static String |
info(String s) |
void |
init() |
private AdCache.ValidationResultHolder |
isValidAd(String adId,
com.lambdaworks.redis.RedisConnection<String,String> redisCon) |
private AdCache.LoadResultHolder |
load(groovy.lang.GroovyClassLoader loader,
File f,
Boolean forceUpdate)
Load the groovy class.
|
private Ad |
loadAd(File groovyPkgDir,
groovy.lang.GroovyClassLoader loader,
File f) |
List<Ad> |
loadAdsFromDir(String adsDir,
String subDir,
Boolean useSanboxClassloader,
StringBuilder msg,
com.lambdaworks.redis.RedisConnection<String,String> redisCon) |
private BidPriceCalculator |
loadBidPriceCalculator(File groovyPkgDir,
groovy.lang.GroovyClassLoader loader,
File f) |
private Boolean |
loadTag(groovy.lang.GroovyClassLoader loader,
File f) |
private Boolean |
loadTagsByAd(File groovyPkgDir,
groovy.lang.GroovyClassLoader loader,
String adFileName,
String adId) |
private static String |
logPrefix() |
String |
refresh(com.lambdaworks.redis.RedisConnection<String,String> redisCon) |
private String |
refreshOwnerKeys(com.lambdaworks.redis.RedisConnection<String,String> redisCon) |
private AdCache.AdCollectionHolder |
replaceHolders() |
private String |
rescheduleSelf() |
private AdCache.BudgetAllocationResult |
reserveMoney(com.lambdaworks.redis.RedisConnection<String,String> redisCon,
Ad ad)
Reserve money from the main budget cache for a given ad.
|
void |
run()
Same as doRun(true)
|
String |
setBudget(String adId,
long amount)
Only for use in Admin tools.
|
private String |
setStatus(String s) |
private void |
tmpPopulateAdIdToBpcId()
Deprecated.
|
private static String |
warn(Ad ad,
String s) |
private static String |
warn(Ad ad,
String s,
Throwable t) |
private static String |
warn(String s) |
private static String |
warn(String adId,
String s) |
private static String |
warn(String adId,
String s,
Throwable t) |
private static String |
warn(String s,
Throwable t) |
private static long runNumber
public static final Format YYYYMMDD
final String AD_CONFIG_SCRIPT_PACKAGE
final String AD_CONFIG_SCRIPT_SUBDIR
private final AdCacheConfig config
private final Map<String,ClientConfig> clients
private final int ttlMinutes
private String status
private final com.lambdaworks.redis.RedisClient client
private volatile AdCache.AdCollectionHolder adCollectionHolder
private AdCache.AdCollectionHolder adCollectionHolder2
private static final Map<String,Class<Lot49Plugin>> GROOVY_CLASSES
private final Map<String,BidPriceCalculator> bpcIdToBpc
private DaoShortLivedMap<CacheableWebResponse> cwrMap
private DaoCounters winRateCounters
private DaoShortLivedMap<String> nurlMap
private DaoShortLivedMap<String> fcMap
private DaoShortLivedMap<BidInFlightInfo> bidInFlightInfoMap
private DbService shortTermDb
private static final FilenameFilter adFilter
private static final FilenameFilter bidPriceCalculatorFilter
private boolean first
@Deprecated private final Map<String,String> tmpAdIdToBpcId
private ScheduledFuture scheduledSelf
private AtomicBoolean isRunning
public AdCache(AdCacheConfig config) throws Lot49Exception
Lot49Exception
public DaoShortLivedMap<String> getFcMap()
public AdCacheConfig getConfig()
public String setBudget(String adId, long amount) throws Lot49Exception
Lot49Exception
public String getStatus()
public List<Ad> getZeroBudgetAds()
AdminSvc.index(javax.ws.rs.container.AsyncResponse, String)
)public Map<Ad,String> getInvalidAds()
AdminSvc.index(javax.ws.rs.container.AsyncResponse, String)
)public Map<String,String> getUncompilableAds()
AdminSvc.index(javax.ws.rs.container.AsyncResponse, String)
)private AdCache.LoadResultHolder load(groovy.lang.GroovyClassLoader loader, File f, Boolean forceUpdate) throws org.codehaus.groovy.control.CompilationFailedException, IOException, InstantiationException, IllegalAccessException
logs an error
and returns null if not
successful.org.codehaus.groovy.control.CompilationFailedException
IOException
InstantiationException
IllegalAccessException
private static BidderCalendar getBidderCalendar()
private Boolean loadTagsByAd(File groovyPkgDir, groovy.lang.GroovyClassLoader loader, String adFileName, String adId)
private BidPriceCalculator loadBidPriceCalculator(File groovyPkgDir, groovy.lang.GroovyClassLoader loader, File f) throws Lot49Exception
Lot49Exception
public void init() throws Lot49Exception
Lot49Exception
public DbService getShortTermDb()
public DaoShortLivedMap<CacheableWebResponse> getCwrMap()
public DaoShortLivedMap<String> getNurlMap()
public DaoShortLivedMap<BidInFlightInfo> getBidInFlightInfoMap()
public Ad[] getBid1()
public Ad[] getBid2()
public Ad[] getAll()
private static final String formatMicroBudget(long value)
private AdCache.BudgetAllocationResult reserveMoney(com.lambdaworks.redis.RedisConnection<String,String> redisCon, Ad ad) throws Lot49Exception
Reserve money from the main budget cache for a given ad. The algorithm is as follows:
redisCon
- Connection to the pacing cache.ad
- Lot49Exception
private File getReadingFile()
public byte[] getOwnerKey(String owner)
private String refreshOwnerKeys(com.lambdaworks.redis.RedisConnection<String,String> redisCon)
private int getNumberOfPeers(com.lambdaworks.redis.RedisConnection<String,String> redisCon) throws Lot49Exception
Lot49Exception
private AdCache.ValidationResultHolder isValidAd(String adId, com.lambdaworks.redis.RedisConnection<String,String> redisCon)
@Deprecated private void tmpPopulateAdIdToBpcId() throws Lot49Exception
Lot49Exception
public List<Ad> loadAdsFromDir(String adsDir, String subDir, Boolean useSanboxClassloader, StringBuilder msg, com.lambdaworks.redis.RedisConnection<String,String> redisCon) throws Lot49Exception
Lot49Exception
private final AdCache.AdCollectionHolder replaceHolders()
private static final String logPrefix()
public boolean cancel()
AdminSvc.refreshAdCache(javax.ws.rs.container.AsyncResponse, String)
or ...private String rescheduleSelf()
private final com.lambdaworks.redis.RedisConnection<String,String> getRedisConnection() throws Lot49Exception
Lot49Exception
public String doRun(boolean scheduled)
ttl
minutes.
It goes through the following steps:
scheduled
- whether the run was scheduled
or explicit
(say, via invocation from
AdminSvc.refreshAdCache(javax.ws.rs.container.AsyncResponse, String)
).public void run()
run
in interface Runnable
doRun(boolean)