@Override
	public int evict(int evictionQuota) { 
		int counter = 0;
	
		for(ConcurrentSkipListMap<IndexValue, EvictableServerEntry> priority : getPriorities().values())
			if(counter == evictionQuota)
				break;
			else if(priority.isEmpty())
				continue;
			else {
				Iterator<EvictableServerEntry> iterator = priority.values().iterator();
				while(iterator.hasNext() && counter < evictionQuota){
					EvictableServerEntry next = iterator.next();
					if(logger.isLoggable(Level.FINEST))
						logger.finest("trying to evict entry with UID: " + next.getUID() +
							", prioirty " + getPriority(next) + " and key index: " + next.getEvictionPayLoad());
					if(getEvictionManager().tryEvict(next)){
						counter++;
					}
				}
	
			}
		
		if(logger.isLoggable(Level.FINEST))
			logger.finest("got request to evict " + evictionQuota + " entries, evicted " + counter);
		
		return counter;
	}