/** * 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 delegates to the generic JDBC disk cache. If we are currently optimizing, then this * method will balk and return null. * <p> * @param pattern used for like query. * @return An object matching key, or null. */ @Override protected Map<K, ICacheElement<K, V>> processGetMatching( String pattern ) { if ( this.getTableState().getState() == TableState.OPTIMIZATION_RUNNING ) { if ( this.mySQLDiskCacheAttributes.isBalkDuringOptimization() ) { return null; } } return super.processGetMatching( pattern ); }
/** * 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; }
tableState.setState( TableState.OPTIMIZATION_RUNNING ); MySQLDiskCache<String, String> cache = new MySQLDiskCache<String, String>( attributes, tableState, CompositeCacheManager.getUnconfiguredInstance() ); Object result = cache.processGet( "myKey" );
tableState.setState( TableState.OPTIMIZATION_RUNNING ); MySQLDiskCache<String, String> cache = new MySQLDiskCache<String, String>( attributes, dsFactory, tableState, CompositeCacheManager.getUnconfiguredInstance() ); Object result = cache.processGet( "myKey" );
/** * This delegates to the generic JDBC disk cache. If we are currently optimizing, then this * method will balk and return null. * <p> * @param key Key to locate value for. * @return An object matching key, or null. */ @Override protected ICacheElement<K, V> processGet( K key ) { if ( this.getTableState().getState() == TableState.OPTIMIZATION_RUNNING ) { if ( this.mySQLDiskCacheAttributes.isBalkDuringOptimization() ) { return null; } } return super.processGet( key ); }
/** * This delegates to the generic JDBC disk cache. If we are currently optimizing, then this * method will balk and do nothing. * <p> * @param element */ @Override protected void processUpdate( ICacheElement<K, V> element ) { if ( this.getTableState().getState() == TableState.OPTIMIZATION_RUNNING ) { if ( this.mySQLDiskCacheAttributes.isBalkDuringOptimization() ) { return; } } super.processUpdate( element ); }
/** * This delegates to the generic JDBC disk cache. If we are currently optimizing, then this * method will balk and do nothing. * <p> * @param element */ @Override protected void processUpdate( ICacheElement<K, V> element ) { if ( this.getTableState().getState() == TableState.OPTIMIZATION_RUNNING ) { if ( this.mySQLDiskCacheAttributes.isBalkDuringOptimization() ) { return; } } super.processUpdate( element ); }
/** * This delegates to the generic JDBC disk cache. If we are currently optimizing, then this * method will balk and return null. * <p> * @param key Key to locate value for. * @return An object matching key, or null. */ @Override protected ICacheElement<K, V> processGet( K key ) { if ( this.getTableState().getState() == TableState.OPTIMIZATION_RUNNING ) { if ( this.mySQLDiskCacheAttributes.isBalkDuringOptimization() ) { return null; } } return super.processGet( key ); }
/** * This delegates to the generic JDBC disk cache. If we are currently optimizing, then this * method will balk and return null. * <p> * @param pattern used for like query. * @return An object matching key, or null. */ @Override protected Map<K, ICacheElement<K, V>> processGetMatching( String pattern ) { if ( this.getTableState().getState() == TableState.OPTIMIZATION_RUNNING ) { if ( this.mySQLDiskCacheAttributes.isBalkDuringOptimization() ) { return null; } } return super.processGetMatching( pattern ); }
/** * Removed the expired. (now - create time) > max life seconds * 1000 * <p> * If we are currently optimizing, then this method will balk and do nothing. * <p> * TODO consider blocking and trying again. * <p> * @return the number deleted */ @Override protected int deleteExpired() { if ( this.getTableState().getState() == TableState.OPTIMIZATION_RUNNING ) { if ( this.mySQLDiskCacheAttributes.isBalkDuringOptimization() ) { return -1; } } return super.deleteExpired(); } }
/** * Removed the expired. (now - create time) > max life seconds * 1000 * <p> * If we are currently optimizing, then this method will balk and do nothing. * <p> * TODO consider blocking and trying again. * <p> * @return the number deleted */ @Override protected int deleteExpired() { if ( this.getTableState().getState() == TableState.OPTIMIZATION_RUNNING ) { if ( this.mySQLDiskCacheAttributes.isBalkDuringOptimization() ) { return -1; } } return super.deleteExpired(); } }