/** * This factory method should create an instance of the mysqlcache. * <p> * @param rawAttr specific cache configuration attributes * @param compositeCacheManager the global cache manager * @param cacheEventLogger a specific logger for cache events * @param elementSerializer a serializer for cache elements * @return MySQLDiskCache the cache instance * @throws SQLException if the cache instance could not be created */ @Override public <K, V> MySQLDiskCache<K, V> createCache( AuxiliaryCacheAttributes rawAttr, ICompositeCacheManager compositeCacheManager, ICacheEventLogger cacheEventLogger, IElementSerializer elementSerializer ) throws SQLException { MySQLDiskCacheAttributes cattr = (MySQLDiskCacheAttributes) rawAttr; TableState tableState = getTableState( cattr.getTableName() ); DataSourceFactory dsFactory = getDataSourceFactory(cattr, compositeCacheManager.getConfigurationProperties()); MySQLDiskCache<K, V> cache = new MySQLDiskCache<K, V>( cattr, dsFactory, tableState, compositeCacheManager ); cache.setCacheEventLogger( cacheEventLogger ); cache.setElementSerializer( elementSerializer ); // create a shrinker if we need it. createShrinkerWhenNeeded( cattr, cache ); scheduleOptimizations( cattr, tableState, cache.getDataSource() ); return cache; }
/** * This takes in a single time and schedules the optimizer to be called at that time every day. * <p> * @param startTime -- HH:MM:SS format * @param optimizer */ protected void scheduleOptimization( Date startTime, MySQLTableOptimizer optimizer ) { if ( log.isInfoEnabled() ) { log.info( "startTime [" + startTime + "] for optimizer " + optimizer ); } // get the runnable from the factory OptimizerTask runnable = new OptimizerTask( optimizer ); Date now = new Date(); long initialDelay = startTime.getTime() - now.getTime(); // have the daemon execute our runnable getScheduledExecutorService().scheduleAtFixedRate(runnable, initialDelay, 86400000L, TimeUnit.MILLISECONDS ); }
/** * This factory method should create an instance of the mysqlcache. * <p> * @param rawAttr * @param compositeCacheManager * @param cacheEventLogger * @param elementSerializer * @return MySQLDiskCache * @throws SQLException if the creation of the cache instance fails */ @Override public <K, V> MySQLDiskCache<K, V> createCache( AuxiliaryCacheAttributes rawAttr, ICompositeCacheManager compositeCacheManager, ICacheEventLogger cacheEventLogger, IElementSerializer elementSerializer ) throws SQLException { MySQLDiskCacheAttributes cattr = (MySQLDiskCacheAttributes) rawAttr; TableState tableState = getTableState( cattr.getTableName() ); MySQLDiskCache<K, V> cache = new MySQLDiskCache<K, V>( cattr, tableState, compositeCacheManager ); cache.setCacheEventLogger( cacheEventLogger ); cache.setElementSerializer( elementSerializer ); // create a shrinker if we need it. createShrinkerWhenNeeded( cattr, cache ); scheduleOptimizations( cattr, tableState, cache.getPoolAccess() ); return cache; }
this.scheduleOptimization( dates[i], optimizer );
this.scheduleOptimization( dates[i], optimizer );
/** * This takes in a single time and schedules the optimizer to be called at that time every day. * <p> * @param startTime -- HH:MM:SS format * @param optimizer */ protected void scheduleOptimization( Date startTime, MySQLTableOptimizer optimizer ) { if ( log.isInfoEnabled() ) { log.info( "startTime [" + startTime + "] for optimizer " + optimizer ); } // get the runnable from the factory OptimizerTask runnable = new OptimizerTask( optimizer ); Date now = new Date(); long initialDelay = startTime.getTime() - now.getTime(); // have the daemon execute our runnable getScheduledExecutorService().scheduleAtFixedRate(runnable, initialDelay, 86400000L, TimeUnit.MILLISECONDS ); }